天天看点

Linux的特殊权限和ACL权限详解

Linux的特殊权限

1、SUID

使用场合:当你需要让一个普通用户在执行某个命令或者文件拥有root权限的时候,可以给这个文件或者命令添加SUID权限(S权限),使普通用户在执行文件或者命令的过程的权限得到提升。如果不采用SUID这个方式,就需要开通文件属组或者所属组权限才能达到效果。

功能:程序在运行的过程中从执行者变成程序的所有者

限定:只能对二进制可执行程序设定,对目录设定无效。

系统命令具体说明:

密码文件的权限如下:

[[email protected] ~]# ll /etc/passwd

-rw-r–r-- 1 root root 2280 Mar 26 22:53 /etc/passwd

[[email protected] ~]# ll /etc/shadow

---------- 1 root root 1366 Mar 26 21:37 /etc/shadow

通过上面的两个文件可以看到,普通用户对这两个文件没有权限,那么为什么普通用户在修改自己密码的时候,可以修改成功哪?

[[email protected] ~]# which passwd

/usr/bin/passwd

[[email protected] ~]# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd

可以看到passwd这个命令的所有者权限有一个S权限,就是SUID,增加了SUID权限后,那么普通用户在执行passwd这个命令时,会提升为passwd这个命令的所有者。

举例说明:

less 命令在普通用户下无法查看/etc/passwd,我们可以给less命令增加SUID权限

[[email protected] ~]# chmod u+s /usr/bin/less

[[email protected] ~]# ll /usr/bin/less

-rwsr-xr-x. 1 root root 158240 Jul 31 2015 /usr/bin/less

[[email protected] ~]# su - zx

Last login: Wed Mar 27 19:12:15 CST 2019 on pts/0

[[email protected] ~]$ less /etc/shadow

root: 6 6 6Bm96MziqkkbPzsUq$4j3imJhgEFuOKvVWHW8PApYHhgGx.F4bxcWL/1sxGykoVYkOagIvmAT3wckMqvgw8ORSrMUTztToH5NtX01ng/::0:99999:7:::

vim命令在普通用户下无法编辑一个000权限的文件,我们可以给vim命令增加SUID权限

[[email protected] opt]# touch a.txt

[[email protected] opt]# chmod 000 a.txt

[[email protected] opt]# ll a.txt

---------- 1 root root 0 Mar 27 19:04 a.txt

[[email protected] opt]# chmod u+s /usr/bin/vim

[[email protected] opt]# su - zx

Last login: Wed Mar 27 19:19:22 CST 2019 on pts/0

[[email protected] ~]$ vim /opt/a.txt

[[email protected] opt]# cat a.txt .

ljsldjflsdf

2、SGID

使用场合:在公司内部,有一个财务部,管理员给财务部这个目录设定权限,一般情况下,哪个用户创建的文件或者目录的所属组都是用户本身。我们想要新创建的文件或者目录,可以继承父目录的所属组,就可以给目录设定SGID权限。

功能:让子目录或子文件可以继承父目录或者文件的所属组

限定:既可以对二进制执行程序设置,也可以对目录进行设定

创建一个财务部目录,让下级文件或者目录继承财务部的所属组

[[email protected] opt]# mkdir caiwubu

[[email protected] opt]# ll -d caiwubu/

drwxr-xr-x 2 root root 6 Mar 27 19:33 caiwubu/

[[email protected] opt]# chmod 775 caiwubu/

[[email protected] opt]# ll -d caiwubu/

drwxrwxr-x 2 root root 6 Mar 27 19:33 caiwubu/

[[email protected] opt]# su - zx

Last login: Wed Mar 27 19:34:29 CST 2019 on pts/0

[[email protected] ~]$ touch /opt/caiwubu/a.txt

[[email protected] ~]$ ll !$

ll /opt/caiwubu/a.txt

-rw-rw-r-- 1 zx zx 0 Mar 27 19:35 /opt/caiwubu/a.txt #没有增加SGID之前,文件的所属组是zx

[[email protected] ~]$ logout

[[email protected] opt]# chmod g+s caiwubu/

[[email protected] opt]# ll -d caiwubu/

drwxrwsr-x 2 root root 19 Mar 27 19:35 caiwubu/ #可以看到所属组的权限变更为rws

[[email protected] opt]# su - zx

Last login: Wed Mar 27 19:35:42 CST 2019 on pts/0

[[email protected] ~]$ touch /opt/caiwubu/b.txt

[[email protected] ~]$ ll !$

ll /opt/caiwubu/b.txt

-rw-rw-r-- 1 zx root 0 Mar 27 19:36 /opt/caiwubu/b.txt #增加SGID之后,新创建的文件所属组继承父目录的root

3、粘滞位 sticky

使用场合:公司内部需要创建一个共有的目录,大家可以在里面存放文件,但是不能随便删除别人的文件,就可以给这个目录设定粘滞位sticky权限。

功能:给目录设定了粘滞位sticky权限后,除了root、目录的创建者、文件的所有者可以删除外,其它用户无法删除

限定:只针对目录设定,文件无法设定

创建share文件夹,权限修改为777,给share增加粘滞位权限

[[email protected] opt]# mkdir share

[[email protected] opt]# chmod 777 share/

[[email protected] opt]# ll -d share/

drwxrwxrwx 2 root root 6 Mar 27 19:44 share/

[[email protected] opt]# chmod o+t share/

[[email protected] opt]# ll -d share/

drwxrwxrwt 2 root root 6 Mar 27 19:44 share/ #增加了粘滞位权限后,other的权限变更为rwt

[[email protected] opt]# touch share/a.txt

[[email protected] opt]# su - zx

Last login: Wed Mar 27 19:36:28 CST 2019 on pts/0

[[email protected] ~]$ touch /opt/share/b.txt #zx用户创建一个a.txt

[[email protected] ~]$ su - harry

Password:

Last login: Tue Mar 26 21:37:54 CST 2019 on pts/2

[[email protected] ~]$ touch /opt/share/c.txt #harry用户创建一个b.txt

[[email protected] ~]$ ll /opt/share/*.txt

-rw-r–r-- 1 root root 0 Mar 27 19:45 /opt/share/a.txt

-rw-rw-r-- 1 zx zx 0 Mar 27 19:45 /opt/share/b.txt

-rw-rw-r-- 1 harry harry 0 Mar 27 19:46 /opt/share/c.txt

[[email protected] ~]$ rm -rf /opt/share/b.txt #harry用户删除zx用户创建的a.txt时无法删除

rm: cannot remove ‘/opt/share/b.txt’: Operation not permitted

[[email protected] ~]$ su - zx

Password:

Last login: Wed Mar 27 19:45:27 CST 2019 on pts/0

[[email protected] ~]$ id zx

uid=1000(zx) gid=1000(zx) groups=1000(zx),0(root) #zx用户属于root组内

[[email protected] ~]$ rm -rf /opt/share/c.txt #同样也无法删除harry用户创建的c.txt

rm: cannot remove ‘/opt/share/c.txt’: Operation not permitted

[[email protected] zx]$ mkdir /opt/share/harry

[[email protected] zx]$ su zx

Password:

[[email protected] ~]$ rm -rf /opt/share/harry/ #zx用户无法删除harry用户创建的目录

rm: cannot remove ‘/opt/share/harry/’: Operation not permitted

总结:增加了粘滞位权限的目录,只有root用户、目录创建者、文件所有者才可以删除文件。

4、扩展权限ACL

使用场合:需要在不修改文件或目录所有者和所属组的基础上,增加相关权限

参数:

-m 增加修改权限

-x 减少某个权限

-b 去掉所有权限

用root用户创建一个a.txt,增加zx用户的rwx的扩展权限

[[email protected] opt]# touch a.txt

[[email protected] opt]# ll a.txt

-rw-r–r-- 1 root root 0 Mar 27 20:00 a.txt

[[email protected] opt]# su - zx

Last login: Wed Mar 27 19:54:11 CST 2019 on pts/0

[[email protected] ~]$ echo aa > /opt/a.txt #没增加rwx权限之前,无法写入

-bash: /opt/a.txt: Permission denied

[[email protected] ~]$ logout

[[email protected] opt]# getfacl a.txt

#file: a.txt

#owner: root

#group: root

user::rw-

group::r–

other::r–

[[email protected] opt]# setfacl -m u:zx:rwx a.txt

[[email protected] opt]# getfacl a.txt #增加rwx之后,可以看到多一个user:zx:rwx选项

#file: a.txt

#owner: root

#group: root

user::rw-

user:zx:rwx

group::r–

mask::rwx

other::r–

[[email protected] opt]# su - zx

Last login: Wed Mar 27 20:01:37 CST 2019 on pts/0

[[email protected] ~]$ echo aa > /opt/a.txt #可以给a.txt增加内容

[[email protected] ~]$ cat /opt/a.txt

aa

继续阅读