作用在二进制程序上,当用户执行该程序时,运行该程序的身份为该程序的属主而非用户自身
示例:
[root@centos7 data]# su masuri
[masuri@centos7 data]$ ll `which cat`
此时suid没有修改
-rwxr-xr-x. 1 root root 54160 Oct 31 03:16 /usr/bin/cat
[masuri@centos7 data]$ cat /etc/shadow
shadow文件无法访问
cat: /etc/shadow: Permission denied
[masuri@centos7 data]$ exit
exit
[root@centos7 data]# chmod u+s `which cat`
修改suid
[root@centos7 data]# ll `which cat`
-rwsr-xr-x. 1 root root 54160 Oct 31 03:16 /usr/bin/cat
[masuri@centos7 data]$ cat /etc/shadow
此时shadow文件可以访问
root:$6$FBXKJJRgWCz23UDt$ji24UW5dVeYK55JOkBzBbmXaSGKAwhM1sjY9rg3TguL1GaTEmrlSzbDYNIu7p57/hehYEIE3LYLMHv2IqxIb70::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
SGID:
作用在目录上,当用户在拥有SGID权限的目录下创建文件时,该文件的属组自动变为该目录的属组。
示例:
[root@centos7 data]# groupadd wang
[root@centos7 data]# mkdir testdir
[root@centos7 data]# chown .wang testdir
[root@centos7 data]# ll
total 0
drwxr-xr-x 2 root wang 6 Mar 15 01:01 testdir
[root@centos7 data]# chmod g+s testdir
[root@centos7 data]# touch testdir/{a,b}
[root@centos7 data]# ll testdir/
total 0
-rw-r--r-- 1 root wang 0 Mar 15 01:03 a
-rw-r--r-- 1 root wang 0 Mar 15 01:03 b
STICKY:
作用在目录上,表示该目录下创建的文件只有该文件的属主才能进行删除。
示例:
[root@centos7 data]# mkdir -m 777 testdir
创建目录并赋予777的权限
[root@centos7 data]# ll
total 0
drwxrwxrwx 2 root root 6 Mar 15 01:13 testdir
[root@centos7 data]# touch testdir/{a,b}
在目录下创建a和b两个文件
[root@centos7 data]# ls testdir/
a b
[root@centos7 data]# su masuri
切换至masuri用户
[masuri@centos7 data]$ rm -rf testdir/a
此时可以删除root创建的a文件
[masuri@centos7 data]$ ll testdir/
total 0
-rw-r--r-- 1 root root 0 Mar 15 01:13 b
[masuri@centos7 data]$ exit
切回root
exit
[root@centos7 data]# chmod o+t testdir
对testdir加sticky权限
[root@centos7 data]# su masuri
切回masuri用户
[masuri@centos7 data]$ touch testdir/a
在testder目录下添加a文件
[masuri@centos7 data]$ exit
exit
[root@centos7 data]# su wang
切换至wang用户
[wang@centos7 data]$ touch testdir/c
创建一个c文件
[wang@centos7 data]$ rm testdir/a
rm: remove write-protected regular empty file ‘testdir/a’? y
删除masuri用户的a文件
rm: cannot remove ‘testdir/a’: Operation not permitted
无法删除
[wang@centos7 data]$ rm testdir/c
但是可以删除自己创建的C文件
[wang@centos7 data]$ ll testdir/
total 0
-rw-rw-r-- 1 masuri masuri 0 Mar 15 01:20 a
-rw-r--r-- 1 root root 0 Mar 15 01:13 b
四、访问控制列表acl
setfacl:
命令格式:
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
setfacl --restore=file
说明:
访问控制列表给与了文件更加灵活的权限设置,除了文件的所有者,所属组和其它人,可以对更多的用户设置权限选项参数
-m
设置权限
-R
递归
-M
-x
删除acl权限
-X file
参照file 文件删除acl 权限
-k dir
删除默认acl设置权限
-b file
清空acl权限
示例:
1.对���户设置访问控制权限
[root@centos7 data]# mkdir testdir
[root@centos7 data]# touch testdir/{a,b}
[root@centos7 data]# setfacl -m u:masuri:--- testdir
[root@centos7 data]# su masuri
[masuri@centos7 data]$ cd testdir
bash: cd: testdir: Permission denied
[masuri@centos7 data]$ ll
total 0
drwxr-xr-x+ 2 root root 24 Mar 15 03:19 testdir
[masuri@centos7 data]$ getfacl testdir
# file: testdir
# owner: root
# group: root
user::rwx
user:masuri:---
group::r-x
mask::r-x
other::r-x