suid,sgid,bit

suid

针对二进制文件有效

作用:使其他用户在执行此命令时,身份升级为此命令的所有者。

-rwsr-xr-x. 1 root root 30768 Nov 24  2015 /usr/bin/passwd

意思就是非root用户在执行passwd命令操作/etc/shadow文件时候,身份升级为root用户,当s变为S时候,代表次命令本身没有被赋予执行权限!即-rw-r-xr-x. 1 root root 30768 Nov 24  2015 /usr/bin/passw

例如 -rwsr-xr--. 1 root root 30768 Nov 24  2015 /usr/bin/passwd ,这样即使passwd设置了guid,其他非root用户也不能执行此命令,因为其他人没有执行权限!

sgid

针对二进制文件、目录有效

对二进制文件作品用:

作用:使其他用户在执行此命令时,获取此命令所在组的权限。

例如:locate命令最终是查看这个数据库里的内容 /var/lib/mlocate/mlocate.db 而数据库文件的权限如下

-rw-r----- 1 root slocate 2014446 Feb 14 03:21 /var/lib/mlocate/mlocate.db

可见除了root之外,只有属于slocate组内的成员才有权限读取(r)这个数据库内容

我们在查看一下locate命令的权限

-rwx--s--x 1 root slocate 38464 Mar 12 2015 /usr/bin/locate

很明显,加入了sgid权限。所以,非root用户在执行locate这个命令的时候,直接加入了slocate这个大家庭,所以有权利去查看mlocate.db文件内容!

对二目录作用:

新建一个目录

drwxr-xr-x 2 root root 4096 Feb 14 11:40 luoqi

可以看到默认的所属组是root用户,因为此时我的身份是root。此时我更改luoqi目录的所属组为jiange

drwxr-xr-x 2 root jiange 4096 Feb 14 11:40 luoqi

此时进入luoqi目录下新建文件,查看

-rw-r--r-- 1 root root 0 Feb 14 11:42 sb

所属组竟然还是root,这很正常,如何使新建的文件所属组都是jiange呢?这是sgid第二个作用!

添加sgid到luoqi目录

chmod 2755 luoqi/

drwxr-sr-x 2 root jiange 4096 Feb 14 11:42 luoqi

再次进入luoqi目录新建文件

-rw-r--r-- 1 root jiange 0 Feb 14 11:45 jiange250

可以看到所属组已经改为jiange了

SBIT

作用:让用户只能删除自己的文件!对目录有效

用root用户新建目录赋予sbit权限

drwxrwxrwt 2 root   root   4096 Feb 14 11:52 share

此时建立2个新用户分别在目录创建文件

luoqi用户

-rw-rw-r-- 1 jiange jiange 0 Feb 14 11:53 jiange
-rw-rw-r-- 1 luoqi luoqi 0 Feb 14 11:53 luoqi

可见,不同用户创建的文件所有者和所属组都是本身用户,所以不能操作其他用户创建的文件也就显而易见了!

但是针对share目录赋予777的权限不安全,其他人的权限应该为0,但是为0之后非root用户又无法在目录里创建文件,这时候需要用到acl。请见下文

猜你喜欢

转载自www.cnblogs.com/luoqi302331/p/10371812.html