每天一点Linux-08文件权限ACL
基本权限ACL(FACL)
文件权限管理之: ACL设置基本权限(r、w、x)
UGO设置基本权限: 只能一个用户,一个组和其他人
ACL 设置基本权限: r,w,x
ACL基本用法
设置:
[root@ecs-ea9d ~]# touch /home/test.txt
[root@ecs-ea9d ~]# ll /home/test.txt
-rw-r–r– 1 root root 0 10-26 13:59 /home/test.txt
[root@ecs-ea9d ~]# getfacl /home/test.txt
[root@ecs-ea9d ~]# setfacl -m u:alice:rw /home/test.txt //增加用户alice权限
[root@ecs-ea9d ~]# setfacl -m u:jack:- /home/test.txt //增加用户jack权限
[root@ecs-ea9d ~]# setfacl -m o::rw /home/test.txt
查看/删除:
[root@ecs-ea9d ~]# ll /home/test.txt
-rw-rw-r–+ 1 root root 0 10-26 13:59 /home/test.txt
[root@ecs-ea9d ~]# getfacl /home/test.txt
[root@ecs-ea9d ~]# setfacl -m g:hr:r /home/test.txt
[root@ecs-ea9d ~]# setfacl -x g:hr /home/test.txt //删除组hr的acl权限
[root@ecs-ea9d ~]# setfacl -b /home/test.txt //删除所有acl权限
=查看帮助=
[root@ecs-ea9d ~]# man setfacl
/EXAMPLES
[root@ecs-ea9d ~]# getfacl file1 |setfacl –set-file=- file2 //复制file1的ACL权限给file2
=ACL高级用法=
mask:
用于临时降低用户或组(除属主和其他人)的权限
建议:为了方便管理文件权限,其他人的权限置为空
[root@ecs-ea9d ~]# setfacl -m m::— /home/file100.txt
default: 继承(默认)
要求: 希望alice能够对/home以及以后在/home下新建的文件有读、写、执行权限
思路:
步骤一: 赋予alice对/home读、写、执行权限
[root@ecs-ea9d ~]# setfacl -m u:alice:rwx /home
步骤二: 赋予alice对以后在/home下新建的文件有读、写、执行权限 (使alice的权限继承)
[root@ecs-ea9d ~]# setfacl -m d:u:alice:rwx /home
高级权限 suid,sgid,sticky
文件权限管理之:高级权限
问题1: 为什么会失败!
[root@ecs-ea9d ~]# ll /root/install.log
-rw-r–r–. 1 root root 46571 6月 1 23:37 /root/install.log
[alice@ecs-ea9d ~]$ cat /root/install.log
cat: /root/install.log: 权限不够
分析:
alice /usr/bin/cat (alice) /root/install.log
alice /usr/bin/passwd (root) /etc/shadow
高级权限的类型
suid 4
sgid 2
sticky 1 粘滞位
设置特殊权限
a、字符
chmod u+s file
chmod g+s file
chmod g+s dir
chmod o+t dir
b、数字
chmod 4777 file
chmod 7777 file
chmod 2770 dir
chmod 3770 dir
1.setuid的作用
jack用户执行命令passwd jack;修改自己的密码成功,修改密码其实就是修改/etc/passwd这个文件,查看/etc/passwd这个文件的权限;发现其他人没有写权限,但是passwd jack执行成功,其原因就在于passwd这个命令的权限是rwsrw—-,其中’s’的作用就是:让执行命令的人具有和该命令拥有者相同的权限
注:当原来权限有x时,再给文件设置setuid,此时x位变为小写的s,当没有x权限时,此时x位变为S.
操作方法
chmod u+s xxx
chmod 4765 xxx
示例1:suid 普通用户通过suid提权 <针对文件>
在进程文件(二进制,可执行)上增加suid权限
[root@ecs-ea9d ~]# chmod u+s /bin/cat
[root@ecs-ea9d ~]# chmod u+s /bin/rm
[alice@ecs-ea9d ~]$ cat /root/install.log
普通用户可以修改密码:
alice /usr/bin/passwd /etc/shadow
[alice@ecs-ea9d ~]$ ll /etc/shadow
———- 1 root root 1487 6月 4 13:43 /etc/shadow
[alice@ecs-ea9d ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 2月 17 2012 /usr/bin/passwd
[alice@ecs-ea9d ~]$ passwd
更改用户 alice 的密码 。
为 alice 更改 STRESS 密码。
(当前)UNIX 密码:
[root@ecs-ea9d ~]# ps aux |grep passwd
root 3674 0.0 0.0 165764 1884 pts/1 S+ 14:34 0:00 passwd
2.setgid的作用
当用户以root身份登录系统并创建一个目录dir时,此时目录所有者和所属组是root,root;切换到另外一个用户jack,进入dir目录并创建文件,此时创建的文件所属者所属组都是jack,jack;当想要在dir目录创建的所有文件的所属组都是root时,可以以root身份登录给dir目录,执行命令chmod g+s dir或者chmod 2765,之后任何用户登录系统在目录dir中创建的文件的所属组默认都是root.
总结: 目录有s权限, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组
示例2:sticky 用户只能删除自己的文件 <针对目录>
[root@ecs-ea9d ~]# mkdir /home/dir1
[root@ecs-ea9d ~]# chmod 777 /home/dir1
测试:user1在/home/dir1建立文件, user2尝试删除!
[root@ecs-ea9d ~]# chmod o+t /home/dir1
[root@ecs-ea9d ~]# ll -d /home/dir1
rwxrwxrwt 2 root root 4096 09-02 02:26 /home/dir1
3.sticky bid的作用
应用场景:超级管理员创建了两用户a,b;超级管理员创建了一个目录dir,a用户登录系统在dir目录中创建文件a.txt;b用户登录系统创建文件b.txt,现在需要a不能删除b创建的文件即使b.txt(即使文件other为w),同理b也是如此.
(正常情况下a用户和b用户是可以删除对方创建的文件)
要想做到a用户可以添加文件并且只能删除自己创建的文件,b用户也如此
可以执行命令 chmod o+t dir 或者 chmod 1765 dir
示例3:sgid 新建文件继承目录属组 <针对目录>
[root@ecs-ea9d ~]# mkdir /home/hr
[root@ecs-ea9d ~]# chgrp hr /home/hr/
[root@ecs-ea9d ~]# chmod g+s /home/hr
[root@ecs-ea9d ~]# ll -d /home/hr/
drwxr-sr-x. 2 root hr 4096 Dec 5 16:03 /home/hr/
[root@ecs-ea9d ~]# touch /home/hr/file9
[root@ecs-ea9d ~]# ll /home/hr/
-rw-r–r–. 1 root hr 0 Dec 5 16:03 file9
============================================================================
小知识:注意以下目录的正确权限,否则会导致程序不能正常运行
[root@ecs-ea9d ~]# ll -d /tmp /var/tmp/
drwxrwxrwt 14 root root 4096 07-26 10:15 /tmp
drwxrwxrwt 2 root root 4096 07-24 19:02 /var/tmp/
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2924854739@qq.com
文章标题:每天一点Linux-08文件权限ACL
本文作者:DROBP
发布时间:2019-08-16, 23:06:27
最后更新:2019-08-16, 23:09:01
原始链接:https://DROBP.github.io/2019/08/16/每天一点Linux-08文件基本权限/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。