权限管理
-
基本权限UGO
-
ACL权限
-
高级权限 SUID SGID SKITY
-
特殊权限 chattr
基本权限 UGO
文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件

权限对象
属主 - U (user)
属组 - G (group)
其他人 - O (other)
基本权限类型
r - 可读 (4)
w - 可写 (2)
x - 可执行 (1)
怎么去查看文件或者目录对应的属主和属组的权限?
# ls -l a.txt
-rw-r--r--. 1 root root 0 5月 9 22:32 a.txt
分析:
属主root -> rw-
属组root -> r--
其他人 -> r--
怎么去设置权限?
# chmod 选项 文件/目录
选项
-R //递归修改-对目录生效
1、通过字母去设置
对象 赋值符 权限类型
u + r
chmod g - w file1
o = x
a
案例
1、要求修改a.txt的属主权限为-w-
# chmod u-r a.txt
2、要求修改a.txt的属组权限为rw-
# chmod g+w a.txt
3、要求给a.txt文件加上可执行权限
# chmod a+x a.txt
2、通过数字的方式设置
# ls -l a.txt
-rw-r--r--. 1 root root 0 5月 9 22:32 a.txt
权限用数字表示: 644
案例
1、修改a.txt的权限为 rwx rw- --x
# chmod 761 a.txt
怎么去设置文件或者目录的属主和属组?
# chown 选项 文件/目录
选项
-R //递归修改-对目录生效
案例
1、要求修改a.txt文件的属主为jerry ?
# chown jerry a.txt
2、要求修改a.txt文件的属主为rng 属组为IT ?
# chown rng:IT a.txt
# chown rng.IT a.txt
3、要求修改a.txt文件的属组为WEB ?
# chown .WEB a.txt
rwx权限对于文件或者目录的作用?

【如果要分析用户对文件拥有哪些权限,一定要先考虑用户是否对文件所在的目录拥有x权限】

umask掩码计算
默认的UMASK 022
计算过程
文件权限 666 rw- rw- rw-
umask 022 --- -w- -w-
rw- r-- r--
最后创建的文件 644
目录权限 777 rwx rwx rwx
umask 022 --- -w- -w-
rwx r-x r-x
最后创建的文件 755
设置umask
# umask 055
ACL权限
设置单独用户和组对于单个文件的具体rwx基础权限
# setfacl
选项
-m //添加acl权限
-x //删除acl权限
-b //删除所有的acl权限
案例
1、给tom用户设置对a.txt有rw的权限
# setfacl -m u:tom:rw a.txt
2、给IT组设置对a.txt有rx权限
# setfacl -m g:IT:rx a.txt
3、删除tom用户给a.txt 设置的acl权限
# setfacl -x u:tom a.txt
4、删除a.txt文件上的所有acl权限
# setfacl -b a.txt
# getfacl /zabbix/ //查看文件或者目录的acl权限
getfacl: Removing leading '/' from absolute path names
# file: zabbix/ #文件名称
# owner: zabbix #属主
# group: nagcmd #属组
user::rwx #属主权限
user:tomcat:r-x #tomcat的acl权限
group::r-x #属组权限
mask::r-x
other::--- #其他人权限
问题:不小心操作 chmod a-x /usr/bin/chmod ? 怎么恢复 ?
方法1:
# setfacl -m u:root:rwx /usr/bin/chmod
# chmod a+x /usr/bin/chmod
方法2:
# cp /usr/bin/cat /usr/bin/cat.bak
# cp /usr/bin/chmod /usr/bin/cat.bak //按y进行覆盖
# cat.bak a+x /usr/bin/chmod
高级权限SUID SGID skity
SUID
给可执行文件设置suid权限,“类似给单个命令进行提权”
# chmod u+s
# chmod 4000
案例:
给whoami命令进行单独提权
# chmod u+s /usr/bin/whoami
# whoami //显示当然登入的用户是root
# su - zabbix
$ whoami
root //由于whoami被root用户赋予suid权限,所以相当于现在执行whoami命令还是root本身
SGID
给目录设置,任何用户在该目录下创建文件,会继承其属组
【一定要有x权限存在】
# chmod g+s 目录
# chmod 2000 目录
案例:
配置一个目录,该目录任何用户都可以进行创建文件,但是自动修改文件的属组为IT
# mkdir /test
# groupadd IT
# chown :IT /test
# chmod g+s /test
SKITY
给目录设置,任何用户都不能随意删除其他用户创建的文件
【一定要有x权限存在】
案例
创建目录,并按以下要求设置: /data 目录属于 IT 组 , 目录可以被 IT 的组成员读取、写入和访问,其他任何用户不具备这些权
限(root 用户除外) 在/data 目录中创建的文件的所属组自动变成 IT 组
# mkdir /data
# chmod g=rwx /data
# chmod o= /data
# chown :IT /data
# chmod g+s /data
特殊权限chattr
对root用户生效
# chattr +a file100 #只能给文件添加内容,但是不能删除内容 //日志文件
# chattr +i file200 #文件不能更改,不能删除,不能移动
# lsattr file300 #查看特殊权限