权限与归属
目录 : 基本权限
附加权限
acl访问控制列表
步骤:
先创建一个目录 [mkdir]
访问方式(权限):
-读取 : 允许查看文件 read 缩写:r
-写入 : 允许写入修改文件 write 缩写:w
- 执行 : 允许运行和切换文件 execute 缩写:x
对于文本文件:
r:cat less grep head tail
w:vim > >>
x:shell脚本
• 权限适用对象(归属)
– 所有者(属主):拥有此文件/目录的用户-user u
– 所属组(属组):拥有此文件/目录的组-group g
– 其他用户:除所有者、所属组以外的用户-other o
查看权限
• 使用 ls -l 命令
– ls -ld 文件或目录...
小知识点:
以-开头为文本文件
以d开头为目录
以l开头为快捷方式
案例:
[root@server0 ~]# ls -l /etc/passwd 查看/etc.passwd 的详细文件
[root@server0 ~]# ls -ld /etc/ 查看/etc.passwd 的详细属性 (可自己在虚拟机做实验)发现
[root@localhost ~]# ls -ld /etc/passwd
-rw-r--r--. 1 root root 3117 12月 4 16:53 /etc/passwd
-代表文本文件 rw-代表(所属主)读写权限 r-- 代表(所属组) 只读权限 r-- 代表(其他人) 只读权限
以此尝试查看解析
[root@server0 ~]# ls -l /etc/shadow
[root@server0 ~]# ls -ld /root
[root@server0 ~]# ls -ld /home/student
[root@server0 ~]# ls -ld /tmp
置基本权限
• 使用 chmod 命令
– chmod [-R] 归属关系+-=权限类别 文档...
案例:
[root@server0 ~]# mkdir /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod u-w /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod g+w /nsd01
[root@server0 ~]# ls -ld /nsd01
Permission denied:权限不足
以root用户新建/nsddir目录,在此目录下新建readme.txt文件
并进一步完成下列操作
1)使用户lisi能够在此目录下创建子目录 切换用户 su - lisi
chmod o+w /nsddir/
2)使用户lisi不能够在此目录下创建子目录
chmod o-w /nsddir/
3)使用户lisi能够修改readme.txt文件内容
chmod o+w /nsddir/readme.txt
4)调整此目录的权限,使所有用户都不能cd进入此目录
chmod u-x,g-x,o-x /nsddir/
5)为此目录及其下所有文档设置权限 rwxr-x---
chmod -R u=rwx,g=rx,o=--- /nsddir/
-R:递归设置权限,目录下及目录下所有
设置文档归属
• 使用 chown 命令
– chown [-R] 属主 文档...
– chown [-R] :属组 文档...
– chown [-R] 属主:属组 文档.
案例:
利用root用户新建/nsd06目录,并进一步完成下列操作
1)将属主设为gelin01,属组设为tarena组
[root@server0 /]# useradd gelin01
[root@server0 /]# useradd gelin02
[root@server0 /]# groupadd tarena
[root@server0 /]# chown gelin01:tarena /nsd06
2)使用户gelin01对此目录具有rwx权限
除属主与属组之外的人,对此目录无任何权限
[root@server0 /]# chmod o=--- /nsd06
3)使用户gelin02能进入、查看此目录内容
[root@server0 /]# gpasswd -a gelin02 tarena #将用户加入组
4)将gelin01加入tarena组, 将nsd06目录的权限设为rw-r-x---
再测试gelin01用户能否进入此目录
[root@server0 /]# gpasswd -a gelin01 tarena
[root@server0 /]# chmod u=rw,g=rx /nsd06
Set GID
• 附加在属组的 x 位上
– 属组的权限标识会变为 s
– 适用于目录,Set GID可以使目录下新增的文档自动设置与父目录相同的属组
[root@server0 ~]# mkdir /nsd08
[root@server0 ~]# ls -ld /nsd08
[root@server0 ~]# chown :stugrp /nsd08 #修改所属组
[root@server0 ~]# ls -ld /nsd08
[root@server0 ~]# mkdir /nsd08/abc01
[root@server0 ~]# ls -ld /nsd08/abc01
[root@server0 ~]# chmod g+s /nsd08 #赋予Set GID 权限
[root@server0 ~]# ls -ld /nsd08
[root@server0 ~]# mkdir /nsd08/abc02
[root@server0 ~]# ls -ld /nsd08/abc02
[root@server0 ~]# touch /nsd08/1.txt
[root@server0 ~]# ls -l /nsd08/1.txt
Sticky Bit
• 附加在其他人的 x 位上
– 其他人的权限标识会变为 t
– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入权限(禁止操作别人的文档)
案例:
[root@server0 ~]# mkdir /home/public
[root@server0 ~]# chmod ugo=rwx /home/public
[root@server0 ~]# ls -ld /home/public
[root@server0 ~]# chmod o+t /home/public
[root@server0 ~]# ls -ld /home/public
acl访问控制列表
acl策略的作用
• 文档归属的局限性
– 任何人只属于三种角色:属主、属组、其他人
– 无法实现更精细的控制
• acl访问策略
– 能够对个别用户、个别组设置独立的权限
– 大多数挂载的EXT3/4、XFS文件系统默认已支持
设置acl访问控制策略
• 使用 getfacl、setfacl 命令
– getfacl 文档...
– setfacl [-R] -m u:用户名:权限类别 文档...
– setfacl [-R] -m g:组名:权限类别 文档...
– setfacl [-R] -x u:用户名 文档... #删除指定ACL策略
– setfacl [-R] -b 文档... #删除所有的ACL策略
案例:
[root@server0 ~]# mkdir /nsd10
[root@server0 ~]# setfacl -m u:lisi:rx /nsd10
[root@server0 ~]# setfacl -m u:zhangsan:rwx /nsd10
[root@server0 ~]# setfacl -m u:dc:rwx /nsd10
[root@server0 ~]# setfacl -m u:student:rwx /nsd10
[root@server0 ~]# getfacl /nsd10
[root@server0 ~]# setfacl -x u:dc /nsd10 #单独删除dc的ACL策略
[root@server0 ~]# getfacl /nsd10
[root@server0 ~]# setfacl -b /nsd10 #删除所有的ACL策略
[root@server0 ~]# getfacl /nsd10
###########################################################
acl策略的作用:单独拒绝
[root@server0 ~]# ls -ld /home/public/
[root@server0 ~]# setfacl -m u:lisi:--- /home/public/
[root@server0 ~]# getfacl /home/public/