Linux——特殊权限
一、ACL权限
1. ACL权限作用
2. 开启ACL权限
3. ACL基本命令
4. 最大有效权限mask
5. 删除ACL权限
二、sudo授权
1. sudo作用
2. 设定
三、文件特殊权限SetUID、SetGID、Sticky BIT
1. SetUID
2. SetGID
3. Sticky BIT
四、文件系统属性chattr权限
1. 命令格式
2. 赋予属性
2.查看属性lsattr
3. 举例
一、ACL权限
1. ACL权限作用
ACL是用于解决用户对文件身份不足的问题的
2. 开启ACL权限
[root@localhost ~]# vi /etc/fstab
1
2 #
3 # /etc/fstab
4 # Created by anaconda on Thu Aug 31 09:47:05 2017
5 #
6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
8 #
9 UUID=18f41a8a-5b18-4a32-a90a-f7c3036b8dde / xfs def
aults,usrquota 0 0
10 UUID=89a96566-dacf-47c4-b480-cd53fe9c0d9b /boot xfs def
aults 0 0
11 UUID=ffd86ce1-6b5c-4882-b541-0b537d12cf1d /home xfs def
aults,acl 0 0
12 UUID=7c2476cd-7322-4ae3-a497-efedc45efb20 swap swap def
aults 0 0
~
"/etc/fstab" 12L, 608C 已写入
3. ACL基本命令
查询
[root@localhost ~]# getfacl /home
getfacl: Removing leading '/' from absolute path names
# file: home
# owner: root
# group: root
user::rwx
user:user1:rwx
group::r-x
mask::rwx
other::r-x
设定
[root@localhost ~]# setfacl -m u:user1:rwx /home
setfacl [选项] 文件名 设定ACL权限
-m设定ACL权限
-b删除ACL权限
-x:用户 删除单个用户的ACL权限
setfacl -m u:user1:rx /test给tset目录赋予user1读写的ACL权限
setfacl -m u:user1:rx -R /test赋予递归ACL权限,只能赋予目录
-R 递归
setfacl -m d:u:user1:rx -R /testACL默认权限。默认权限只能赋予目录
注意:如果给目录赋予ACL权限,以下两条命令都要输入
setfacl -m u:user1:rx -R /test递归:只对存在的文件生效
setfacl -m d:u:user1:rx -R /test默认:只对以后新建的文件生效
4. 最大有效权限mask
有效权限是:赋予的权限和mask设定的权限相与的结果(逻辑与)
[root@localhost ~]# setfacl -m m:rx /home/
[root@localhost ~]# getfacl /home
getfacl: Removing leading '/' from absolute path names
# file: home
# owner: root
# group: root
user::rwx
user:user1:rwx #effective:r-x
group::r-x
mask::r-x
other::r-x
5. 删除ACL权限
[root@localhost ~]# setfacl -x u:st /home
#删除指定用户和用户组的ACL权限
[root@localhost ~]# setfacl -b /home/
#会删除文件的所有的ACL权限
二、sudo授权
1. sudo作用
给普通用户授予部分管理员权限
/sbin/
/usr/sbin
2. 设定
root登陆:visudo 赋予普通 用户权限命令,命令执行后和vi一样使用
[root@localhost a_dir]# visudo
...
91 root ALL=(ALL) ALL
#用户名被管理主机的地址=(可使用身份)授权命令(绝对路径)
举例:
92 lyz ALL=/usr/sbin/shutdown -r now
...
三、文件特殊权限SetUID、SetGID、Sticky BIT
名称
代表数字
设定命令
作用
SUID
4
chmod 4755 filename
让二进制程序的执行者临时拥有属主的权限
SGID
2
chmod 2755 filename
让二进制程序的执行者临时拥有属主的权限
SBIT
1
chmod 1755 filename
某个目录中的文件只能被其所有者执行删除操作
1. SetUID
SUID只能设定二进制程序:
只有可以执行的二进制程序才能设定SUID权限
命令执行者要对该程序拥有x(权限)
命令在执行程序的时候获取该程序所有者的身份
SUID权限同样只在该程序执行过程中有效
2. SetGID
SGID即可以针对文件生效,也可以针对目录生效,这和SUID明显不同
1) 针对文件
只有可执行的二进制程序才能设置SGID权限
命令执行者要对该程序拥有x(执行)权限
命令在执行程序的时候,组身份升级为该程序文件的属组
SGID权限同样只在该程序执行过程中有效
2)针对目录
普通用户必须对此目录拥有r和x权限,才能进入此目录
普通用户在此目录的有效组会变成此目录的属组
命令执行程序的时候,组身份升级为该程序文件的属组
若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组
3. Sticky BIT
Sticky BIT粘着位,也简称为SBIT。SBIT目前仅针对目录有效,它的作用如下 :
粘着位目前只对目录有效
普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件,一但赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。
四、文件系统属性chattr权限
1. 命令格式
[root@localhost ~]# chattr [+-=][选项] 文件或目录
#选项:
+:增加权限
-:删除权限
=:等于某权限
i:文件:不允许进行删除、改名,也不能添加和修改数据
目录:只能修改目录下文件的数据,不允许建立和删除文件
a:文件:只能在文件中增加数据,不能删除也不能修改数据
目录:只允许在目录中建立和修改文件,不允许删除
2. 赋予属性
[root@localhost test]# chattr +i test1
[root@localhost test]# chattr +a test2
2.查看属性lsattr
[root@localhost test]# lsattr -a
---------------- ./.
---------------- ./..
----i----------- ./test1
-----a---------- ./test2
---------------- ./a
---------------- ./b
3. 举例
i属性
文件赋予i属性:啥都不能做
[root@localhost test]# ls
a a_dir i i_dir
[root@localhost test]# chattr +i i
[root@localhost test]# lsattr -a i
----i----------- i
[root@localhost test]# rm -rf i
rm: 无法删除"i": 不允许的操作
[root@localhost test]# mv i f
mv: 无法将"i" 移动至"f": 不允许的操作
[root@localhost test]# echo 123 >> i
-bash: i: 权限不够
[root@localhost test]#
目录赋予i属性:只能修改该目录下文件的数据
[root@localhost test]# ls
a a_dir i i_dir
[root@localhost test]# chattr +i i_dir/
[root@localhost test]# lsattr -a i_dir/
----i----------- i_dir/.
---------------- i_dir/..
---------------- i_dir/123
[root@localhost test]# cd i_dir/
[root@localhost i_dir]# touch bcd
touch: 无法创建"bcd": 权限不够
[root@localhost i_dir]# ls
123
[root@localhost i_dir]# rm -rf 123
rm: 无法删除"123": 权限不够
[root@localhost i_dir]# echo 11111 >> 123
[root@localhost i_dir]# cat 123
abc
11111
a属性
文件赋予a属性:只能追加数据
[root@localhost test]# ls
a a_dir i i_dir
[root@localhost test]# chattr +a a
[root@localhost test]# lsattr -a a
-----a---------- a
[root@localhost test]# rm -rf a
rm: 无法删除"a": 不允许的操作
[root@localhost test]# mv a abc
mv: 无法将"a" 移动至"abc": 不允许的操作
[root@localhost test]# echo 123 >> a
[root@localhost test]# cat a
123
目录赋予a属性:可新建文件和修改文件数据
[root@localhost test]# ls
a a_dir i i_dir
[root@localhost test]# chattr +a a_dir/
[root@localhost test]# lsattr -a a_dir/
-----a---------- a_dir/.
---------------- a_dir/..
---------------- a_dir/abc
[root@localhost test]# rm -rf a_dir/
rm: 无法删除"a_dir/abc": 不允许的操作
[root@localhost test]# cd a_dir/
[root@localhost a_dir]# ls
abc
[root@localhost a_dir]# rm -rf abc
rm: 无法删除"abc": 不允许的操作
[root@localhost a_dir]# touch bcd
[root@localhost a_dir]# rm -rf bcd
rm: 无法删除"bcd": 不允许的操作
[root@localhost a_dir]# mv abc abc2
mv: 无法将"abc" 移动至"abc2": 不允许的操作
[root@localhost a_dir]# echo 222 >> abc
[root@localhost a_dir]# cat abc
1111
222