linux “最小权限”原则与chmod S位

(参考:Linux用户与“最小权限”原则

当我们将一个程序文件执行成为进程的时候,该程序文件的拥有者(owner)和拥有组(owner group)可以被存储成为进程的存储身份。在随后进程的运行过程中,进程就将可以选择将真实身份或者存储身份复制到有效身份,以拥有真实身份或者存储身份的权限。并不是所有的程序文件在执行的过程都设置存储身份的。需要这么做的程序文件会在其九位(bit)权限的执行位的x改为s。这个时候,这一位(bit)叫做set UID bit或者set GID bit。

1 $ls -l /usr/bin/uuidd
2 -rwsr-sr-x 1 libuuid libuuid 17976 Mar 30  2012 /usr/sbin/uuidd

 

当我以root(UID), root(GID)的真实身份运行这个程序的时候,由于拥有者(owner)有s位的设定,所以saved UID被设置成为libuuid,saved GID被设置成为libuuid。这样,uuidd的进程就可以在两个身份之间切换。

 

我们通常使用chmod来修改set-UID bit和set-GID bit:

1 $chmod 4700 file

 

我们看到,这里的chmod后面不再只是三位的数字。最前面一位用于处理set-UID bit/set-GID bit,它可以被设置成为4/2/1以及或者上面数字的和。4表示为set UID bit, 2表示为set GID bit,1表示为sticky bit (暂时不介绍)。必须要先有x位的基础上,才能设置s位。

=======================================================================================================

chmod 4755与chmod 755 的区别在于开头多了一位,这个4表示其他用户执行文件时,具有与所有者相当的权限。

========================================================================

# 为文件设置SUID和属主的执行权限
$ chmod 4700 testfile2
$ ll
权限 数值表示 说明
读 写 执行 二进制 八进制
- - - 000 0 没有权限
- - x 001 1 允许执行
- w - 010 2 允许写入
- w x 011 3 允许执行和写入
r - - 100 4 允许读取
r - x 101 5 允许执行和读取
r w - 110 6 允许写入和读取
r w x 111 7 允许执行写入和读取
权限 数值表示 说明
SUID SGID sticky 二进制 八进制
- - - 000 0 不设置特殊权限
- - t 001 1 只设置sticky
- s - 010 2 只设置SGID
- s t 011 3 只设置SGID和sticky
s - - 100 4 只设置SUID
s - t 101 5 只设置SUID和sticky
s s - 110 6 只设置SUID和SGID
s s t 111 7 同时设置三种特殊权限
-rws------ 1 osmond osmond 0 2007-03-17 16:25 testfile2
# 同时设置SUID和SGID权限,并使组用户能读、写、执行,其他人能读和执行
$ chmod 6775 testfile2
$ ll
-rwsrwsr-x 1 osmond osmond 0 2007-03-17 16:25 testfile2
# 设置 sticky权限
$ chmod 1755 testfile2
$ ll
-rwxr-xr-t 1 osmond osmond 0 2007-03-17 16:25 testfile2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值