ACL&sudo&suid&chattr&rwx&umask07
标签(空格分隔): linux
文章目录
1.ACL权限
1.ACL概述
用于解决用户对文件身份不足的问题
如:老师为文件所有者,学生在文件所属组中,,文件权限770。此时来了一个试听的学生,文件权限变成775,那么不仅这个试听的学生可以操作文件,其他用户也可以操作文件,不合理,此时需要使用ACL权限,进行管理
方法/思路:不在考虑用户的所属,而是直接赋予用户权限,可以使用文件
2.开启ACL
默认是支持的
# dumpe2fs -h /dev/根分区
Default mount options: user_xattr acl
临时:mount -o remount acl /
永久:vi /etc/fstab
UUID=xxxxxxxx / ext4 defaults,acl
mount -o remount /
3.ACL基本命令
getfacl 文件名 查询文件的acl权限
setfacl 选项 文件名 设定acl权限
-m 设定acl权限
-b 删除所有acl权限
-x u:用户名 删除单个用户的acl权限
setfacl -m u:用户名:权限 文件名
setfacl -m g:组名:权限 文件名
setfacl -m u:aaa:7 /test 给test目录赋予aaa是读写执行的acl权限
-R:递归,只针对已经存在的文件生效
setfacl -m d:u:aaa:7 -R /test
此命令只对以后新建的文件生效
卡在两条命令中间创建的文件,依旧没有生效
acl权限,一旦递归之后,不可避免的出现权限溢出。赋予目录5权限后,对于目录可以cd,同时目录下的文件也拥有了5权限,而对于文件来说,执行权限是最大权限,存在风险,所以不建议使用此命令代替chmod。一旦文件目录存在过多,更改起来也是一个繁杂的任务。
1.mask最大权限
赋予权限时,与mask进行与预算,有0则0,同时拥有权限,才有权限。
setfacl /test/ 查看mask权限
更改:setfacl -m m:6 /test/
一般不改,默认就行
2.sudo授权
给普通用户赋予部分管理员权限
/sbin/ 此目录下的命令只有超级用户才能使用
/usr/sbin
赋子的权限越详细,普通用户得到的权限越小
赋手的权限越简单,普通用户得到的权限越大
/etc/sudoers
root ALL=(ALL) ALL
用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL
组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
多条命令,使用逗号隔开
案例:授权用户user1可以重启
# vim /etc/sudoers
user1 ALL=/sbin/shutdown -r now
$ sudo -l 查看可用的授权
user1 ALL=/etc/init.d/http configtest
user1 ALL=/usr/bin/vim /etc/http/conf/httpd.conf,vim后一定加文件名,不然危险
案例:授权aaa用户可以添加其他普通用户
aaa ALL=/usr/sbin/useradd
aaa ALL=/usr/bin/passwd
需要取消对root的密码修改
aaa ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
[A-Za-z]*:写什么都行,任意字母重复多次
!取反,不能加空,不能加root
直接加空,也等于修改root密码
3.文件特殊权限
SetUID SetGIDS Sticky BIT
1.SUID
\# ll /usr/bin/passwd
- 针对执行文件,使用该权限,用户需要对文件有执行权限。
- 命令执行者在执行该程序时获得该程序文件属主的身份。
/passwd文件有SUID权限,普通用户在修改密码时,身份会成为root,从而可以修改密码
- 一般不自己赋予文件SUID权限
脚本校测SUID和GUID文件P84 11min
定时检查有没有本身自带之外的被设置SetUID权限的文件
2.SGID
\# ll /var/lib/mlocate/mlocate.db数据库
-rw-r-----
\# ll /usr/bin/locate
-rwx--s--x root locate
其他用户并没有权限,但是可以执行locate命令,进行搜索
对文件,风险大。
- 命令执行者在执行该程序时获得该程序文件所属组的身份。(使用locate时,临时变成locate组的身份)
- 可以针对执行文件,也可以针对目录文件。针对目录风险小
- 对文件拥有执行权限
对目录,风险不大,问题在于只有给目录7权限,其他用户才能在目录下创建文件。
- 普通用户对目录有读执行权限,才能进入目录
- 普通用户在此目录中的有效组会变成此目录的属组
- 在普通用户对此目录有w权限时,新建的文件的默认属组是这个目录的属组
目录拥有SGID权限后,其他用户在目录下新建的文件的所属组,会成文目录的所属组
3.SBIT(黏着位)
只能针对目录,针对目录风险小
- 普通用户对目录拥有wx权限。对目录有写入权限
- 如果没有黏着位,因为普通用户有w权限,可以删除此目录下的所有文件。有了之后,除了root可以删除所有文件,普通用户有w权限,也只能删除自己的文件,不能删除其他用户创建的文件
如 /tmp目录
对目录,风险不大,同样问题在于只有给目录7权限,其他用户才能在目录下创建文件。
4.文件系统属性chattr权限容易忘
命令格式
\# chattr [+-=] [选项] 文件或目录名
chattr +i file
lsattr file 查看
i:i属性,不允许对文件进行删除,改名,也不能添加和修改数据。(无法执行操作)
如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
lsattr dir 看不出目录是否设置i属性,看的是dir中的文件。
lsattr -d dir 可以看出
a:a属性,只能在文件中增加数据,不能删除也不能修改数据。(可以写,比i属性宽松一点)vi无法使用,echo >>可以。
如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。