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

Linux的特殊权限
1、SUID
使用场合:当你需要让一个普通用户在执行某个命令或者文件拥有root权限的时候,可以给这个文件或者命令添加SUID权限(S权限),使普通用户在执行文件或者命令的过程的权限得到提升。如果不采用SUID这个方式,就需要开通文件属组或者所属组权限才能达到效果。
功能:程序在运行的过程中从执行者变成程序的所有者
限定:只能对二进制可执行程序设定,对目录设定无效。

系统命令具体说明:
密码文件的权限如下:

[root@xuegod140 ~]# ll /etc/passwd
-rw-r–r-- 1 root root 2280 Mar 26 22:53 /etc/passwd
[root@xuegod140 ~]# ll /etc/shadow
---------- 1 root root 1366 Mar 26 21:37 /etc/shadow

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

[root@xuegod140 ~]# which passwd
/usr/bin/passwd
[root@xuegod140 ~]# 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权限

[root@xuegod140 ~]# chmod u+s /usr/bin/less
[root@xuegod140 ~]# ll /usr/bin/less
-rwsr-xr-x. 1 root root 158240 Jul 31 2015 /usr/bin/less
[root@xuegod140 ~]# su - zx
Last login: Wed Mar 27 19:12:15 CST 2019 on pts/0
[zx@xuegod140 ~]$ less /etc/shadow
root: 6 6 6Bm96MziqkkbPzsUq$4j3imJhgEFuOKvVWHW8PApYHhgGx.F4bxcWL/1sxGykoVYkOagIvmAT3wckMqvgw8ORSrMUTztToH5NtX01ng/::0:99999:7:::

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

[root@xuegod140 opt]# touch a.txt
[root@xuegod140 opt]# chmod 000 a.txt
[root@xuegod140 opt]# ll a.txt
---------- 1 root root 0 Mar 27 19:04 a.txt
[root@xuegod140 opt]# chmod u+s /usr/bin/vim
[root@xuegod140 opt]# su - zx
Last login: Wed Mar 27 19:19:22 CST 2019 on pts/0
[zx@xuegod140 ~]$ vim /opt/a.txt
[root@xuegod140 opt]# cat a.txt .
ljsldjflsdf

2、SGID
使用场合:在公司内部,有一个财务部,管理员给财务部这个目录设定权限,一般情况下,哪个用户创建的文件或者目录的所属组都是用户本身。我们想要新创建的文件或者目录,可以继承父目录的所属组,就可以给目录设定SGID权限。
功能:让子目录或子文件可以继承父目录或者文件的所属组
限定:既可以对二进制执行程序设置,也可以对目录进行设定

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

[root@xuegod140 opt]# mkdir caiwubu
[root@xuegod140 opt]# ll -d caiwubu/
drwxr-xr-x 2 root root 6 Mar 27 19:33 caiwubu/
[root@xuegod140 opt]# chmod 775 caiwubu/
[root@xuegod140 opt]# ll -d caiwubu/
drwxrwxr-x 2 root root 6 Mar 27 19:33 caiwubu/
[root@xuegod140 opt]# su - zx
Last login: Wed Mar 27 19:34:29 CST 2019 on pts/0
[zx@xuegod140 ~]$ touch /opt/caiwubu/a.txt
[zx@xuegod140 ~]$ ll !$
ll /opt/caiwubu/a.txt
-rw-rw-r-- 1 zx zx 0 Mar 27 19:35 /opt/caiwubu/a.txt #没有增加SGID之前,文件的所属组是zx
[zx@xuegod140 ~]$ logout
[root@xuegod140 opt]# chmod g+s caiwubu/
[root@xuegod140 opt]# ll -d caiwubu/
drwxrwsr-x 2 root root 19 Mar 27 19:35 caiwubu/ #可以看到所属组的权限变更为rws
[root@xuegod140 opt]# su - zx
Last login: Wed Mar 27 19:35:42 CST 2019 on pts/0
[zx@xuegod140 ~]$ touch /opt/caiwubu/b.txt
[zx@xuegod140 ~]$ 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增加粘滞位权限

[root@xuegod140 opt]# mkdir share
[root@xuegod140 opt]# chmod 777 share/
[root@xuegod140 opt]# ll -d share/
drwxrwxrwx 2 root root 6 Mar 27 19:44 share/
[root@xuegod140 opt]# chmod o+t share/
[root@xuegod140 opt]# ll -d share/
drwxrwxrwt 2 root root 6 Mar 27 19:44 share/ #增加了粘滞位权限后,other的权限变更为rwt
[root@xuegod140 opt]# touch share/a.txt
[root@xuegod140 opt]# su - zx
Last login: Wed Mar 27 19:36:28 CST 2019 on pts/0
[zx@xuegod140 ~]$ touch /opt/share/b.txt #zx用户创建一个a.txt
[zx@xuegod140 ~]$ su - harry
Password:
Last login: Tue Mar 26 21:37:54 CST 2019 on pts/2
[harry@xuegod140 ~]$ touch /opt/share/c.txt #harry用户创建一个b.txt
[harry@xuegod140 ~]$ 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
[harry@xuegod140 ~]$ rm -rf /opt/share/b.txt #harry用户删除zx用户创建的a.txt时无法删除
rm: cannot remove ‘/opt/share/b.txt’: Operation not permitted
[harry@xuegod140 ~]$ su - zx
Password:
Last login: Wed Mar 27 19:45:27 CST 2019 on pts/0
[zx@xuegod140 ~]$ id zx
uid=1000(zx) gid=1000(zx) groups=1000(zx),0(root) #zx用户属于root组内
[zx@xuegod140 ~]$ rm -rf /opt/share/c.txt #同样也无法删除harry用户创建的c.txt
rm: cannot remove ‘/opt/share/c.txt’: Operation not permitted
[harry@xuegod140 zx]$ mkdir /opt/share/harry
[harry@xuegod140 zx]$ su zx
Password:
[zx@xuegod140 ~]$ 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的扩展权限

[root@xuegod140 opt]# touch a.txt
[root@xuegod140 opt]# ll a.txt
-rw-r–r-- 1 root root 0 Mar 27 20:00 a.txt
[root@xuegod140 opt]# su - zx
Last login: Wed Mar 27 19:54:11 CST 2019 on pts/0
[zx@xuegod140 ~]$ echo aa > /opt/a.txt #没增加rwx权限之前,无法写入
-bash: /opt/a.txt: Permission denied
[zx@xuegod140 ~]$ logout
[root@xuegod140 opt]# getfacl a.txt
#file: a.txt
#owner: root
#group: root
user::rw-
group::r–
other::r–
[root@xuegod140 opt]# setfacl -m u:zx:rwx a.txt
[root@xuegod140 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–
[root@xuegod140 opt]# su - zx
Last login: Wed Mar 27 20:01:37 CST 2019 on pts/0
[zx@xuegod140 ~]$ echo aa > /opt/a.txt #可以给a.txt增加内容
[zx@xuegod140 ~]$ cat /opt/a.txt
aa

你可能感兴趣的:(第一阶段-基础篇)