ACL策略管理、总结和答疑
ACL策略管理:
-
文档归属的局限性:
-
任何人只属于三种角色:属主、属组、其他用户
-
针对特殊的人实现更精细的控制
-
-
acl访问策略作用:
-
能够对个别用户、个别组设置独立的权限
-
大多数挂载的EXT3/4、XFS文件系统默认已支持
-
-
setfacl命令
-
格式:setfacl [选项] u:用户名:权限 文件...
setfacl [选项] g:组名:权限 文件...
-
-
常用命令选项
-
-m: 修改ACL策略
-
-x:清除指定的ACL策略
-
-b:清除所有已设置的ACL策略
-
-R:递归设置ACL策略
-
#体验ACL策略的作用例子 [root@localhost ~]# mkdir /NB [root@localhost ~]# echo 五元>/NB/rmb.txt [root@localhost ~]# cd /NB/ [root@localhost NB]# ls rmb.txt [root@localhost NB]# cat rmb.txt 五元 [root@localhost NB]# groupadd caiwu [root@localhost NB]# chmod o=--- /NB [root@localhost NB]# ls /NB rmb.txt [root@localhost NB]# ls -ld /NB drwxr-x---. 2 root root 21 8月 13 17:51 /NB [root@localhost NB]# chmod g+w /NB [root@localhost NB]# ls -ld /NB drwxrwx---. 2 root root 21 8月 13 17:51 /NB [root@localhost NB]# useradd dc 断开重连切换到dc用户 [root@localhost ~]# su dc [dc@localhost root]$ cd /NB bash: cd: /NB: 权限不够 断开重连切换到root用户,为dc用户添加ACL策略 [root@localhost NB]# setfacl -m u:dc:rx /NB 断开重连切换到dc用户 [dc@localhost root]$ cd /NB [dc@localhost NB]$ ls rmb.txt [dc@localhost NB]$ cat rmb.txt 五元 发现ACL策略生效,可以查看 [dc@localhost NB]$ getfacl /NB #这个命令可以查看该文件的ACL策略 getfacl: Removing leading '/' from absolute path names # file: NB # owner: root # group: root user::rwx user:dc:r-x group::rwx mask::rwx other::--- #可以继续添加ACL策略用户 [root@localhost ~]# setfacl -m u:lisi:rx /NB [root@localhost ~]# getfacl /NB #查看ACL策略 getfacl: Removing leading '/' from absolute path names # file: NB # owner: root # group: root user::rwx user:lisi:r-x user:dc:r-x group::rwx mask::rwx other::--- #还可以用ACL策略,单独对一个用户设置禁用权限 [root@localhost ~]# mkdir /nsd19 [root@localhost ~]# chmod 777 /nsd19 [root@localhost ~]# ls -ld /nsd19 drwxrwxrwx. 2 root root 6 8月 14 09:20 /nsd19 [root@localhost ~]# setfacl -m u:lisi:--- /nsd19 [root@localhost ~]# su lisi [lisi@localhost root]$ cd /nsd19 bash: cd: /nsd19: 权限不够 [root@localhost ~]# getfacl /nsd19 #查看ACL策略 getfacl: Removing leading '/' from absolute path names # file: nsd19 # owner: root # group: root user::rwx user:lisi:--- group::rwx mask::rwx other::rwx
linux中判断用户具备的权限:
1.首先查看该用户或组是否有ACL测量
2.查看用户1,对于该数据所处的身份,顺序所有者>所属组>其他人,原则是匹配及停止
3.查看相应身份的权限位
ACL策略练习
[root@localhost ~]# mkdir /nsd22 [root@localhost ~]# setfacl -m u:dc:rx /nsd22 [root@localhost ~]# setfacl -m u:zhangsi:rwx /nsd22 [root@localhost ~]# setfacl -m u:lisi:rx /nsd22 [root@localhost ~]# setfacl -m u:gelin01:rwx /nsd22 [root@localhost ~]# getfacl /nsd22 getfacl: Removing leading '/' from absolute path names # file: nsd22 # owner: root # group: root user::rwx user:lisi:r-x user:zhangsi:rwx user:gelin01:rwx user:dc:r-x group::r-x mask::rwx other::r-x [root@localhost ~]# setfacl -x u:zhangsi /nsd22 #删除指定用户ACL [root@localhost ~]# getfacl /nsd22 getfacl: Removing leading '/' from absolute path names # file: nsd22 # owner: root # group: root user::rwx user:lisi:r-x user:gelin01:rwx user:dc:r-x group::r-x mask::rwx other::r-x [root@localhost ~]# setfacl -x u:dc /nsd22 #删除指定用户ACL [root@localhost ~]# getfacl /nsd22 getfacl: Removing leading '/' from absolute path names # file: nsd22 # owner: root # group: root user::rwx user:lisi:r-x user:gelin01:rwx group::r-x mask::rwx other::r-x [root@localhost ~]# setfacl -b /nsd22 #清除目录所有的ACL策略 [root@localhost ~]# getfacl /nsd22/ getfacl: Removing leading '/' from absolute path names # file: nsd22/ # owner: root # group: root user::rwx group::r-x other::r-x
补充内容:
ACL策略-黑名单的使用(单独拒绝某些用户)
[root@localhost ~]# setfacl -m u:lisi:--- /home/public [root@localhost ~]# getfacl /home/public
-R:递归设置ACL策略
[root@localhost ~]# setfacl -Rm u:dc:rwx /opt/aa #目录以及下面的文件都设置ACL策略
Linux用户家目录被删除了,怎么办
方法如下:
[root@localhost ~]# id aaa #确认没有aaa用户 id: aaa: no such user [root@localhost ~]# useradd aaa #创建aaa用户 [root@localhost ~]# su aaa [aaa@localhost root]$ su 密码: [root@localhost ~]# rm -rf /home/aaa/ #删除aaa用户的家目录 [root@localhost ~]# su aaa #再切换到aaa用户,报错 bash-4.2$ bash-4.2$ #这时我们开始恢复家目录,非常简单 bash-4.2$ exit exit [root@localhost ~]# useradd bbb #我们先创建个新的bbb用户 [root@localhost ~]# ls -A /home/bbb/ #查看bbb家目录下的全部文件 .bash_logout .bash_profile .bashrc [root@localhost ~]# cp -r /home/bbb/ /home/aaa #把家目录的文件拷贝到aaa用户 [root@localhost ~]# chown -R aaa:aaa /home/aaa #把属主和属组改成aaa用户 [root@localhost ~]# su aaa #再次切换正常 [aaa@localhost root]$
我们会发现,创建新用户,在相对应的目录下,都会有几个相同的隐藏文件,这些模板都在/etc/skel目录下。
[aaa@localhost root]$ ls -A /etc/skel/ .bash_logout .bash_profile .bashrc 假如我们在这个文件夹下,创建点新的文件或目录,再次创建用户时,家目录会不会相对应的更新 [aaa@localhost root]$ cd /etc/skel/ [aaa@localhost skel]$ mkdir test mkdir: 无法创建目录"test": 权限不够 [aaa@localhost skel]$ su 密码: [root@localhost skel]# mkdir test #创建个test目录 [root@localhost skel]# touch test.txt #创建个test文件 [root@localhost skel]# ls -A #查看目录 .bash_logout .bash_profile .bashrc test test.txt [root@localhost skel]# useradd ccc #创建新用户 [root@localhost skel]# ls -A /home/ccc/ #查看ccc用户的家目录发现跟模板的目录下文件一样 .bash_logout .bash_profile .bashrc test test.txt