Linux笔记(43)——文件特殊权限
- 三个特殊权限
SetUID
- 设定SetUID权限
- 例子
- SetUID的危险
SetGID
- 设定SGID
- SGID对文件的作用
- SGID对目录的作用
Sticky BIT
- 设定SBIT
- 例子
- 注意
三个特殊权限
- SetUID:给u(所有者)赋予s权限
- SetGID:给g(所属组)赋予s权限
- Sticky BIT:给o(其他人)赋予t权限
SetUID
SetUID也叫SUID
他的功能有:
设定SetUID权限
- chmod 4755 文件名 :4表示s权限
- chmod u+s 文件名
- chmod u-s 文件名
- chmod 0755 文件名
赋予SUID权限后,权限串中会有s,并且文件名会变成红色,提示你这不安全(SUID是不安全的权限)
SUID权限的文件,必须是可执行文件,否则s会变成大写的S,表示这是不正确的权限
例子
/etc/shadow文件保存的是所有用户的密码,我们看这个文件,发现它的权限是000,只有root用户可以修改它
那么,普通用户能修改自己的密码吗?当然可以。但是普通用户没有shadow这个文件的权限,如何修改密码?
我们一般使用passwd命令来修改密码,看看这个命令文件
我们发现passwd这个文件是有s权限的。
请回头看上面SUID功能的第三句话:命令执行者在执行该程序时,将拥有文件所有者的身份。
passwd文件所有者是root,那么普通用户在执行这个命令时,将会拥有root的身份,也就可以修改/etc/shadow文件,也就是可以修改密码了。
那么普通用户能修改别人的密码吗?
当然不行,passwd命令不允许普通用户在后面加参数
SetUID的危险
如果我们给vi这个命令文件赋予s权限,那么普通用户在执行vi命令时,会瞬间拥有这个文件所有者的身份,也就是拥有root身份,那么这个用户就可以编辑系统中任何一个文件,这是十分危险的
注意:绝对不允许手动给系统文件赋予SUID权限
因此我们需要遵守一些原则:
SetGID
也叫SGID权限
SUID只针对执行文件,SGID对文件和目录都有作用
设定SGID:
chmod g+s 文件名
chmod 2755 文件名:2表示SGID
SGID对文件的作用
SGID对文件的作用与SUID的区别在于:
执行时,SGID拥有所属组的身份,SUID是拥有所有者的身份
SGID对目录的作用
例如:
root用户创建一个目录abc,这个目录的所有者和所属组都是root
然后使用user1用户进入该目录,创建一个文件test1,那么这个文件的所有者和所属组都是user1
再使用root用户为abc目录赋予SGID权限
再用user1创建文件test2,发现这个文件的所属组变成了root,和目录abc所属组一致
和SUID一样SGID是不安全的,不要自行去赋予
Sticky BIT
也叫SBIT权限和粘着位权限
注意:SBIT要求为目录的o赋予7权限,很危险,所以不建议赋予SBIT权限
设定SBIT
- chmod 1755 文件名:1表示SBIT
- chmod o+t 文件名:注意,这里是t,不是s
例子
假设root用户创建了一个abc目录,将权限改为777,为了让普通用户也能进入这个目录。
并且root用户创建了一个test1文件,这个文件默认所有者是root,所属组也是root
这时候普通用户user1进入这个abc目录,发现了test1文件,执行删除操作,居然把这个文件成功删除了,因为普通用户对这个目录有7的权限,所以他可以删除这个目录下的文件。
但是这个文件是root用户创建的啊,这让人很不爽,因此就有了SBIT权限
只要给这个abc目录赋予SBIT权限,user1就只能删除自己创建的文件,别人创建的文件就删除不了。 这也就是SBIT权限的作用
/tmp/目录就有SBIT权限,作用是防止用户删除其他用户的临时文件
注意
不要随便赋予SUID,SGID,SBIT权限,很危险
还没有评论,来说两句吧...