linux基本权限和归属 、 附加权限 、 ACL策略管理( SUID、SGID、Sticky)!
描述递归修改文件或目录所有者和所属组的命令格式
描述递归修改文件或目录权限的命令格式
描述递归修改文件或目录ACL权限的命令格式
描述设置SUID、SGID、Sticky权限的命令格式
参考答案
步骤一:递归修改文件或目录所有者和所属组的命令格式是什么
# chown -R 用户名:组名 文件或目录名或者 # chown -R 用户名.组名 文件或目录名
步骤二:递归修改文件或目录权限的命令格式是什么
# chmod -R 数字格式 文件或目录名 # chmod -R 字符格式 文件或目录名
步骤三:描述递归修改文件或目录ACL权限的命令格式
# setfacl -R -m u:用户名:权限 文件或目录名 # setfacl -R -m g:组名:权限 文件或目录名
步骤四: 描述设置SUID、SGID、Sticky权限的命令格式
# chmod u+s 文件名 # chmod g+s 目录名 # chmod o+t 文件或目录名
• 访问权限
– 读取:允许查看内容-read
– 写入:允许修改内容-write
– 可执行:允许运行和切换-excute
对于文本文件:
r读取权限:cat、less、grep、head、tail
w写入权限:vim、> 、 >>
x可执行权限:Shell与Python
• 归属关系
– 所有者(属主):拥有此文件/目录的用户-user
– 所属组(属组):拥有此文件/目录的组-group
– 其他用户:除所有者、所属组以外的用户-other
zhangsan(所有者) zhangsan(所属组) 1.txt
• 执行 ls -l或者ls -ld 命令查看
以-开头:文本文件
以d开头:目录
以l开头:快捷方式
[root@localhost ~]# ls -ld /etc/ [root@localhost ~]# ls -l /etc/passwd [root@localhost ~]# ls -ld /root [root@localhost ~]# ls -ld /tmp #有附加权限 [root@localhost ~]# ls -l /etc/shadow [root@localhost ~]# useradd zhangsan [root@localhost ~]# ls -ld /home/zhangsan
一个用户具备的权限:
1.判断该用户针对此数据,所处的身份
2.查看相应身份权限位置
三、修改权限
• chmod命令
– 格式:chmod [ugoa] [+-=][rwx] 文件...
• 常用命令选项
– -R:递归修改权限
]# mkdir /nsd10 ]# ls -ld /nsd10 ]# chmod u-w /nsd10 #所有者去掉w权限 ]# ls -ld /nsd10 ]# chmod u+w /nsd10 #所有者加上w权限 ]# ls -ld /nsd10 ]# chmod g+w /nsd10 #所属组加上w权限 ]# ls -ld /nsd10 ]# chmod g=r /nsd10 #所属组重新定义权限 ]# ls -ld /nsd10 ]# chmod a=rwx /nsd10 #a表示所有人 ]# ls -ld /nsd10 ]# chmod u=---,g=rx,o=rwx /nsd10 ]# ls -ld /nsd10
-R:递归修改权限
[root@localhost ~]# mkdir -p /opt/aa/bb/cc [root@localhost ~]# chmod -R o=--- /opt/aa [root@localhost ~]# ls -ld /opt/aa [root@localhost ~]# ls -ld /opt/aa/bb [root@localhost ~]# ls -ld /opt/aa/bb/cc
Linux中判断用户具备的权限:
1. 查看用户,对于该数据所处的身份,顺序所有者>所属组>其他人,原则是匹配及停止
2. 查看相应身份的权限位
对于目录:
读取权限:查看目录内容
写入权限:能够创建、删除、修改等目录的内容(无法修改目录本身)
执行权限:能够cd切换到此目录下
案例1:设置基本权限
1)以root身份新建/nsddir1/目录,在此目录下新建readme.txt文件
[root@localhost ~]# mkdir /nsddir1 [root@localhost ~]# echo 123456 > /nsddir1/readme.txt [root@localhost ~]# cat /nsddir1/readme.txt
2)使用户zhangsan能够修改readme.txt文件内容
[root@localhost ~]# chmod o+w /nsddir1/readme.txt
3)使用户zhangsan不可以修改readme.txt文件内容
[root@localhost ~]# chmod o-w /nsddir1/readme.txt
4)使用户zhangsan能够在此目录下创建/删除子目录
[root@localhost ~]# chmod o+w /nsddir1/
5)调整此目录的权限,使任何用户都不能进入,然后测试用户zhangsan是否还能修改readme.txt(测试结果不能,对父目录没有权限)
[root@localhost ~]# chmod a-x /nsddir1/
6)为此目录及其下所有文档设置权限 rwxr-x---
[root@localhost ~]# chmod -R u=rwx,g=rx,o=--- /nsddir1/
修改归属关系
• chown命令
– chown 属主 文件...
– chown 属主:属组 文件...
– chown :属组 文件...
• 常用命令选项
– -R:递归修改归属关系
]# mkdir /nsd15 ]# ls -ld /nsd15 ]# groupadd tmooc #创建组tmooc ]# chown lisi:tmooc /nsd15 #修改所有者与所属组 ]# ls -ld /nsd15 ]# chown zhangsan /nsd15 #仅修改所有者 ]# ls -ld /nsd15 ]# chown :root /nsd15 #仅修改所属组 ]# ls -ld /nsd15
案例2:归属关系练习
1)利用root的身份新建/tarena目录,并进一步完成下列操作
[root@localhost ~]# mkdir /tarena
2)将/tarena属主设为gelin01,属组设为tmooc组
[root@localhost ~]# useradd gelin01 [root@localhost ~]# groupadd tmooc [root@localhost ~]# chown gelin01:tmooc /tarena
3)使用户gelin01对此目录具有rwx权限,除去所有者与所属组之外的用户对此目录无任何权限
[root@localhost ~]# chmod o=--- /tarena
4)新建用户gelin02,此用户能进入、查看此目录
[root@localhost ~]# useradd gelin02 [root@localhost ~]# gpasswd -a gelin02 tmooc
5)将gelin01加入tmooc组,将tarena目录的权限设为450,测试gelin01用户能否进入此目录
[root@localhost ~]# gpasswd -a gelin01 tmooc [root@localhost ~]# chmod 450 /tarena
u 权限利用数字方式表示
• 权限位的8进制数表示
– r、w、x分别对应4、2、1,后3组分别求和
分组 | User权限 | Group权限 | Other权限 | ||||||
字符 | r | w | x | r | - | x | r | - | x |
数字 | 4 | 2 | 1 | 4 | 0 | 1 | 4 | 0 | 1 |
求和 | 7 | 5 | 5 |
[root@localhost ~]# mkdir /nsd14 [root@localhost ~]# ls -ld /nsd14 [root@localhost ~]# chmod 700 /nsd14 [root@localhost ~]# ls -ld /nsd14 [root@localhost ~]# chmod 007 /nsd14 [root@localhost ~]# ls -ld /nsd14 [root@localhost ~]# chmod 750 /nsd14 [root@localhost ~]# ls -ld /nsd14 [root@localhost ~]# chmod 755 /nsd14 [root@localhost ~]# ls -ld /nsd14
附加权限(特殊权限)
• 粘滞位,Sticky Bit 权限
– 占用其他人(Other)的 x 位
– 显示为 t 或 T,取决于其他人是否有 x 权限
– 适用于目录,用来限制用户滥用写入权
– 在设置了t权限的文件夹下,即使用户有写入权限,也不能删除或改名其他用户文档
[root@localhost ~]# mkdir /home/public [root@localhost ~]# chmod 777 /home/public [root@localhost ~]# ls -ld /home/public [root@localhost ~]# chmod o+t /home/public [root@localhost ~]# ls -ld /home/public
• Set GID权限(SGID)
– 占用属组(Group)的 x 位
– 显示为 s 或 S,取决于属组是否有 x 权限
– 对目录有效
– 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份
]# mkdir /nsd18 ]# chown :tmooc /nsd18 ]# ls -ld /nsd18 ]# mkdir /nsd18/abc01 ]# ls -ld /nsd18/abc01 ]# chmod g+s /nsd18 #赋予SGID特殊权限 ]# ls -ld /nsd18 ]# mkdir /nsd18/abc02 ]# ls -ld /nsd18/abc02
ACL策略管理
• 文档归属的局限性:
– 任何人只属于三种角色:属主、属组、其他人
– 针对特殊的人实现更精细的控制
• acl访问策略作用:
– 能够对个别用户、个别组设置独立的权限
– 大多数挂载的EXT3/4、XFS文件系统默认已支持
• setfacl命令
– 格式:setfacl [选项] u:用户名:权限 文件...
setfacl [选项] g:组名:权限 文件...
• 常用命令选项
– -m:修改ACL策略
– -x:清除指定的ACL策略
– -b:清除所有已设置的ACL策略
– -R:递归设置ACL策略
]# mkdir /nsd19 ]# chmod 770 /nsd19 ]# ls -ld /nsd19 ]# su - dc ]$ cd /nsd19 -bash: cd: /nsd19: 权限不够 ]$ exit ]# setfacl -m u:dc:rx /nsd19 #单独赋予dc权限 ]# getfacl /nsd19 #查看ACL策略 ]# su - dc ]$ cd /nsd19 ]$ pwd ]$ exit
ACL命令的练习:
]# mkdir /nsd22 ]# setfacl -m u:dc:rx /nsd22 ]# setfacl -m u:zhangsan:rwx /nsd22 ]# setfacl -m u:lisi:rx /nsd22 ]# setfacl -m u:gelin01:rwx /nsd22 ]# getfacl /nsd22 ]# setfacl -x u:zhangsan /nsd22#删除指定用户ACL ]# getfacl /nsd22 ]# setfacl -x u:dc /nsd22 #删除指定用户ACL ]# getfacl /nsd22 ]# setfacl -b /nsd22 #清除目录所有ACL策略 ]# getfacl /nsd22
补充内容
u ACL策略-黑名单的使用(单独拒绝某些用户)
]# setfacl -m u:lisi:--- /home/public/ ]# getfacl /home/public/
u 附加权限SUID权限
n 占用属主(User)的 x 位
n 显示为 s 或 S,取决于属主是否有 x 权限
n 仅对可执行的程序有意义
n 当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限
[root@localhost ~]# which mkdir /usr/bin/mkdir [root@localhost ~]# /usr/bin/mkdir /opt/abc01 [root@localhost ~]# ls /opt/ [root@localhost ~]# cp /usr/bin/mkdir /usr/bin/hahadir [root@localhost ~]# ls -l /usr/bin/hahadir [root@localhost ~]# /usr/bin/hahadir /opt/abc02 [root@localhost ~]# ls /opt/ [root@localhost ~]# chmod u+s /usr/bin/hahadir [root@localhost ~]# ls -l /usr/bin/hahadir [root@localhost ~]# su - zhangsan [zhangsan@localhost ~]$ /usr/bin/mkdir zs01 [zhangsan@localhost ~]$ ls -l [zhangsan@localhost ~]$ /usr/bin/hahadir zs02 [zhangsan@localhost ~]$ ls -l
文件的特殊权限SUID、SGID、SBIT用数字表示分别是:4、2、1
SUID作用于文件、SGID作用于文件和目录、SBIT作用于目录
u 文件/目录的默认权限
• 新建文件/目录的默认权限
– 一般文件默认均不给 x 执行权限
– 其他取决于 umask(权限掩码) 设置
– 新建目录默认权限为755
– 新建文件默认权限为644
[root@localhost ~]# umask 0022 [root@A ~]# umask -S u=rwx,g=rx,o=r
over