Linux下的三个特殊权限
linux吧
全部回复
仅看楼主
level 12
fyyz_me 楼主
passwd 的权限
镇楼
2014年05月21日 14点05分 1
level 12
fyyz_me 楼主
估计很多人都知道 rwx 三个权限,但是可能不知道 SUID, SGID, SBIT 这三个特殊权限,这里我就讲讲吧。有的时候,你想用 ACL ,或者在执行文件里检测执行者的ID,这些方法,来解决的问题,可以用这三个特殊权限解决。
2014年05月21日 14点05分 2
为什么我setuid后service network restart还是不能用普通用户运行?
2014年06月01日 05点06分
回复 605036592 :
2014年06月07日 16点06分
请看《linux就是这个范》上面讲的很详细!这里这就不多说了。
2014年08月08日 01点08分
level 13
mrrk 顺便lsattr那个也讲下吧
2014年05月21日 14点05分 3
以后再说那两个隐藏属性吧
2014年05月21日 14点05分
回复 fyyz_me :这些,鸟哥的书上不是都写的很明白的么。。。。。
2014年06月26日 07点06分
level 12
fyyz_me 楼主
首先说 SUID 这个权限,仔细看,s 在什么位置?
我们知道,rwx 这三个权限,是一个权限占一格,如果没有x的权限,就会变成一条横杠(rw-),而不是变成两个权限(rw)。
由此可以看出,这个 s 必然与 x (执行)有关。
先看下passwd这个程序,当你执行passwd的时候,你其实就是修改密码,但是,密码是存在 shadow 这个文件里的,权限 rw------- ,除了root ,谁能改这个文件里的内容?但是,实际情况是,任何用户都能通过 passwd 这个程序,修改自己的密码。
如果你想到,这个 s 与提权有关,恭喜你,猜对了!
这个s,全称Set UID。那么,这个 SUID 有什么作用呢?
就是使有 Set UID 权限的可执行文件的执行者,变成这个文件的 own 。比如说,前面说到的修改密码,就是通过执行者变成这个文件的own实现的。
不过,SUID 也有限制的!
首先,是仅对可执行文件有效。如果不是可执行文件,你给它 s 权限,也没有意义。
其次,运行者要对这个文件有执行权限。比如说,如果你把passwd这个bin的权限改成 rws------ ,那么,别的用户也是无法运行的。
最后,这个权限仅在运行具有s权限的可执行文件时有效,也就是你 passwd 里密码一改完,你又变会原来的用户了!
2014年05月21日 14点05分 4
setuid位对setuid这个函数有效。。不是所有可执行文件都用了这个函数
2015年07月31日 05点07分
setuid对于脚本好像无效,只对二进制文件有效
2016年03月07日 05点03分
level 12
这么做的意义在哪儿呢
防止用户修改其他用户的密码么
2014年05月21日 14点05分 5
意义在于:/etc/shadow保存了所有用户的密码,为了安全起见,这个文件只有root才能读写。可是这样一来,普通用户就无法修改密码了 ,因为没有访问/etc/shadow的权限,所以在运行passwd的时候让你临时取得root权限来对/etc/shadow的写入权利,把新密码
2014年11月14日 08点11分
level 11
怒顶一计
2014年05月21日 14点05分 6
level 13
施工前水一发..一直想问下,
lz
@福音乐章 是什么关系啊?
2014年05月21日 14点05分 7
我是小号,大号被我封存了。
2014年05月21日 14点05分
回复 fyyz_me : [拿去撸] 原来是这样啊
2014年05月21日 15点05分
回复 fyyz_me :封存了是?
2014年06月26日 06点06分
level 12
fyyz_me 楼主
这么做的意义在哪儿呢
防止用户修改其他用户的密码么
-----------------------------------------
举个例子,如果你有一台http服务器,你想使其以最低权限运行,怎么办呢?
其中,一个方案就是,开一个账户,比如说www,给它很小的权限,然后设置apache/nginx以这个用户跑。
但是!!!如果我以root这个用户运行 apache 或者 nginx ,它就会继承 root 权限,怎么才能避免呢?用SUID,设置apache/nginx的bin的属主为 www ,权限 rwsr--r-- ,不管谁启动这个bin,它都会以这个用户来跑。
回到你刚刚说到的问题,当你运行了passwd以后,其实是继承了你的身份在跑,一个在以 user:user 这个身份跑的程序,怎么修改 /etc/shadow 这个文件呢?就要给执行者提权,而且密码一改好,立刻回归普通用户的权限,即保证了密码能顺利改好,又能保证非root用户看不到 shadow 里的内容。
2014年05月21日 14点05分 9
很危险,一台apache服务器谁都可以启动、停止,实际是你装好apache会自动创建一个apache用户,httpd程序属主是apache,除了root和属主,都不可以随意使用httpd程序.
2016年03月07日 02点03分
level 9
rwxrwxrwt
t表示什么权限?[疑问]
2014年05月21日 15点05分 10
这个是第三个特殊权限,下面就讲到了。
2014年05月21日 15点05分
level 11
怒顶一记
2014年05月21日 15点05分 12
level 9
马克
2014年05月21日 15点05分 13
level 12
fyyz_me 楼主
这是第三个特殊权限,通常 /tmp 里可以体现。
tmp 目录是放临时文件的,可以近似地理解为内存里的文件,注意,是近似地理解,不是说它就是内存(虽然tmp可以挂到内存里去)!如果某个程序跑到一半,突然它的临时文件被删了,程序基本上就崩溃了。怎么办?就要用第三种特殊权限了,SBIT。
SBIT只对目录有效。
如果使用者对拥有SBIT权限的目录有读写权限时,能在这个目录里读写,文件的属主是自己。
但是!!仅有文件的属主与 root 才有权力删除SBIT权限下的目录里的文件。
你们自己试试看:
进入 /tmp 当中(不要以root身份)
touch test,并且更改 test 权限成为 777
通过su切换到另一个用户(别切换到root)
尝试删除 test 这个文件
你会发现,无法删除这个文件!
2014年05月21日 15点05分 14
level 14
[滑稽]怒顶
…………………………………………………………………………………………………………一个人的思考√√√
2014年05月21日 15点05分 15
[疑问]
2014年08月18日 05点08分
level 10
SUID和UID是同一个么?[笑眼]
2014年05月21日 15点05分 18
请看11楼
2014年05月21日 15点05分
level 10
收藏。
2014年05月21日 15点05分 20
level 12
fyyz_me 楼主
也可以这么设置,这个简单点,尤其是要处理一大堆文件时。
2014年05月21日 15点05分 21
你这事什么版本的?怎么看起来这么好看?
2014年05月24日 04点05分
level 12
fyyz_me 楼主
现在,我来简单总结下。
SUID 就是让执行者的身份变成文件的own,只对bin有效。
SGID 就是让执行者的组变为文件的组,对bin有效;也可用于目录,目录里创建的所有文件的属组都是那个组。
SBIT 仅对目录有效,目录里创建的所有文件,只有文件的属主和root才能删除。
SUID,SGID,SBIT 分别对应 4 2 1,可以用 chmod 修改文件的权限。
2014年05月21日 15点05分 22
[真棒]总结的很好。我补充一小点。 我们可以用数字形式来设置文件和目录的suid,sgid和sticky bit,但是[鄙视]我们不能用数字来取消目录的suid和sgid,只能明确的使用符号来取消!
2014年05月21日 16点05分
[鄙视]假 设目录folder1的权限是7777,我们用chmod 0777 folder1;这不会去掉folder1的suid和sgid(用ls查看会发现小s还在的!),但是你会发现folder1的sticky bit被去掉了(就是那个小t没有了,因为这个没有限制)!。 想去掉folder1的suid和sgid,只能使用 chmod u-s,g-s folder1
2014年05月21日 16点05分
回复 house妃鸽 :单独在楼下写吧,我也是在一个星期前刚刚了解到这个特殊权限的[乖]
2014年05月21日 16点05分
回复 fyyz_me :1个星期就能有如此斩获,果然骨骼惊奇,天赋异秉,将来必成大器[滑稽]
2014年05月22日 06点05分
level 12
fyyz_me 楼主
2014年05月21日 16点05分 23
[喷]
2014年08月18日 05点08分
回复 Co_迪卡斯_K :[汗]
2014年08月18日 05点08分
level 7
好评。
2014年05月21日 16点05分 24
1 2 3 尾页