转自:https://blog.csdn.net/hulifangjiayou/article/details/47400943
在Linux中,每个文件都有其所属的用户和用户组,默认情况下是文件的创建者,也可以根据chown和chgrp来修改文件所属的用户和用户组。文件的属性存放在属性结构stat中,其中有st_uid和st_gid标志着。

先举个例子。假设现在系统中有两个用户liz和hlf,有一个程序文件file的所属用户为hlf。然后使用liz用户登录系统,运行file文件,则运行进程process有一个实际用户和有效用户,实际用户默认为当前登录用户,即liz。而有效用户呢?有效用户是哪个得看file文件的属性了,属性结构stat里有个st_mode文件模式字,其中有一个设置-用户-ID位,如果没有设置这个位的话,那任何执行file文件的进程的有效用户就是其实际用户;如果设置了这个位的话,则执行file文件的进程的有效用户就是该file文件所属用户了。这里,如果设置了该位,则有效用户就为hlf,否则就为实际用户liz了。

这里需要说明实际用户ID和有效用户ID的作用。实际用户是用来标识进程是谁,是谁在执行进程,一般是登录用户;而有效用户ID则标识这该进程的访问权限,假设进程的实际用户为liz,而有效用户为hlf,则进程可以可以访问hlf用户可以访问的文件,即拥有与hlf一样的权限(注意不是能够访问hlf的文件)。

下面以一个程序来说明一下这整个过程。

首先,我们用root用户生成一个可执行文件test。

然后将test文件的所有者改成hlf用户。

然后使用liz用户登录到系统,执行test文件,则根据理论,没有设置设置-用户-ID位,则进程的实际用户ID和有效用户ID都为liz。我们先查看一下用户的ID是多少,系统用户ID号存放在/etc/passwd文件中。

然后在liz登录之后运行test文件的结果如下:

可以看出实际用户和有效用户均为1000,即liz。现在我们修改一下test文件的设置-用户-ID位。

然后再在liz中运行test文件的结果如下:

可以看出,有效用户ID变为1001了,即为hlf了。

Linux进程的实际用户ID和有效用户ID的更多相关文章

  1. linux进程的有效用户ID

    进程的有效用户ID用于文件访问时的权限检查.通常,有效用户ID等于实际用户ID(也就是你登录是的用户ID),有效组ID等于实际组ID. 我们知道每个文件针对不同的user有不同的读.写.执行权限.当执 ...

  2. linux系统学习笔记:无死角理解保存的设置用户ID,设置用户ID位,有效用户ID,实际用户ID

    一.基本概念 实际用户ID(RUID):用于标识一个系统中用户是谁,一般是在登录之后,就被唯一的确定,就是登录的用户的uid. 有效用户ID(EUID):用于系统决定用户对系统资源的权限,也就是说当用 ...

  3. Linux进程ID号--Linux进程的管理与调度(三)【转】

    Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数据和结构,Linux 内核所有涉及到进程和程序的所有算法都是围绕该数据结构建立的,是内核中最重要的数据结构之一. 该数据结 ...

  4. Linux进程ID号--Linux进程的管理与调度(三)

    转自:http://blog.csdn.net/gatieme/article/category/6225543 日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux- ...

  5. Linux 进程资源用量监控和按用户设置进程限制

    每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工作的方 ...

  6. 【Linux命令】id,usermod用户管理命令(包括/etc/passwd、shadow、group、gshadow文件)

    一.id命令 可以用来查看用户的UID.GID和附加组信息 id会显示用户以及所属群组的实际与有效ID.若两个ID相同,则仅显示实际ID.若仅指定用户名称,则显示目前用户的ID. 1.格式 id [O ...

  7. Linux id 命令 - 显示用户id和组id信息

    要登入一台计算机,我们需要一个用户名.用户名是一个可以被计算机识别的身份.基于此,计算机会对使用这个用户名的登陆的人应用一系列的规则.在Linux系统下,我们可以使用 id 命令. 什么是 id 命令 ...

  8. Linux用户抢占和内核抢占详解(概念, 实现和触发时机)--Linux进程的管理与调度(二十)

    1 非抢占式和可抢占式内核 为了简化问题,我使用嵌入式实时系统uC/OS作为例子 首先要指出的是,uC/OS只有内核态,没有用户态,这和Linux不一样 多任务系统中, 内核负责管理各个任务, 或者说 ...

  9. Linux下的进程类别(内核线程、轻量级进程和用户进程)--Linux进程的管理与调度(四)

    本文中出现的,内核线程,轻量级进程,用户进程,用户线程等概念,如果不太熟悉, 可以参见 内核线程.轻量级进程.用户线程三种线程概念解惑(线程≠轻量级进程) Linux进程类别 虽然我们在区分Linux ...

随机推荐

  1. 命令纠正工具 thefuck 的简单使用

    在unix系列的系统中,总会出现 命令拼写或者执行错误的情况, 比如 把 python 写成了pythou, cd 到一个不存在的目录,执行任务的权限 不够的问题, 这是心里 总是 在 fuck,但是 ...

  2. vue分页效果

    js部分 <script src="....js/vue.js"></script> <script src="..../js/vue-re ...

  3. tomcat启动时错误:Failed to start component [StandardEngine[Catalina].StandardHost[localhost].错误

    今天第一次遇到Failed to start component [StandardEngine[Catalina].StandardHost[localhost].错误,并且在错误提示的后半段出现了 ...

  4. python远程执行dos命令

    https://blog.csdn.net/huaihuaidexiao/article/details/5543240 https://blog.csdn.net/bcbobo21cn/articl ...

  5. Shell脚本中变量和函数变量的作用域

    (1)Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止.(2)Shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变 ...

  6. mac tomcat安装

    https://blog.csdn.net/qq_35106903/article/details/78860121

  7. SpringCloud系列十:SpringCloudConfig 高级配置(密钥加密处理(JCE)、KeyStore 加密处理、SpringCloudConfig 高可用机制、SpringCloudBus 服务总线)

    1.概念:SpringCloudConfig 高级配置 2.具体内容 在 SpringCloudConfig 之中考虑到所有配置文件都暴露在远程仓库之中的安全性问题,所以提供有安全访问的处理机制,这样 ...

  8. 8Linux磁盘划分、RAID

    磁盘划分fdisk 1.磁盘分区 fdisk 2.格式化 mkfs.ext4 mkfs.xfs 3.挂载 mount 路径 挂载路径 fdisk命令中的参数以及作用 参数 作用m 查看全部可用的参数n ...

  9. 微信小程序代码大全 - 小程序开发福利

    小程序QQ交流群:131894955 小程序开发文档(Wepy) 小程序商城源码下载(weixin-app-shop) 小程序官网源码下载(weixin-app-cms) 微信管家平台JAVA版开源下 ...

  10. [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境

    快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...