Linux中UID, GID, EUID, EGID,SUID、SGID讲解

UNIX下关于文件权限的表示方法

通常我们使用ls -l查看文件的权限。通常我们可以得到10位的权限表示法,如:-rwxr-xr-x。我们对于以下格式进行解析:

9 8 7 6 5 4 3 2 1 0
- r w x r - x r - x 

第9位表示文件类型,可以为p、d、l、s、c、b和-:

符号意义
p表示命名管道文件
d表示目录文件
l表示符号连接文件
-表示普通文件
s表示字符设备文件
c表示命名管道文件
b表示块设备文件

第8-6位、5-3位、2-0位分别表示文件所有者的权限同组用户的权限其他用户的权限,其形式为rwx:

符号意义
r表示可读,可以读出文件的内容
w表示可写,可以修改文件的内容
x表示可执行,可运行这个程序
-没有权限

举一个例子, ls -l myfile显示为:
-rwxr-x--- 1 foo staff 7734 Apr 05 17:07 myfile
表示文件myfile是普通文件,文件的所有者是foo用户,而foo用户属于staff组,文件只有1个硬连接,长度是7734个字节,最后修改时间4月5日17:07。

所有者foo对文件有读写执行权限,staff组的成员对文件有读和执行权限,其他的用户对这个文件没有权限。

Linux中UID, GID, EUID, EGID的快速理解

  1. UID/GID 实际用户ID和实际组ID,即登陆时候的用户名,比如我是lirobins登陆,那么UID/GID 为lirobins/lirobins
  2. EUID/EGID 有效的用户ID和有效的组ID,它们指定了访问目标的权限。

举几个例子方便理解。
案例中,我们需要重点分析UID, GID, EUID, EGID的值为什么

  1. 当前登录用户为my,apps文件的ls -l 后的用户为my,组为mygroup,此时UID=my,GID=mygroup,EUID=my,EGID=mygroup。
  2. 当前登录用户为my,apps文件的ls -l 后的用户为other,组为othergroup,此时UID=my,GID=mygroup,EUID=other,EGID=othergroup。并且my用户无法访问other用户的文件

SUID和SGID的详细解析

在介绍完文件的基本权限后,我们讲解一下SUID和SGID。SUID/SGID 针对文件而讲述的概念,他可以修改当前进程的EUID/EGID

如果一个文件被设置了SUID或SGID位,会分别表现在所有者或同组用户的权限的可执行位上。例如:

  1. -rwsr-xr-x 表示SUID和所有者权限中可执行位被设置
  2. -rwSr–r-- 表示SUID被设置,但所有者权限中可执行位没有被设置
  3. -rwxr-sr-x 表示SGID和同组用户权限中可执行位被设置
  4. -rw-r-Sr-- 表示SGID被设置,但同组用户权限中可执行位没有被设置

接着刚才的案例进行分析

  1. 当前登录用户为my,apps文件的ls -l 后的用户为other,组为othergroup,但是权限标志为rwsr-xr-x,那么该程序同样可以被执行,此时UID=my,GID=mygroup,EUID=other,EGID=mygroup。此时apps程序有了other的权限,当然就可以访问apps了。
  2. 同理,当前登录用户为my,apps文件的ls -l 后的用户为other,组为othergroup,但是权限标志为-rwxr-sr-x,那么UID=my,GID=mygroup,EUID=my,EGID=othergroup,因为同组,当然就可以执行apps文件

给文件加SUID和SGID的命令如下:

chmod u+s filename # 设置SUID位

chmod u-s filename # 去掉SUID设置

chmod g+s filename # 设置SGID位

chmod g-s filename # 去掉SGID设置

参考: linux UID,GID,EUID,EGID,SUID,SGID快速理解.
uid gid euid egid详解.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值