#基本权限与归属
• 访问权限
– 读取:允许查看内容-read
– 写入:允许修改内容-write
– 可执行:允许运行和切换-execute
对于文本文件:
r读取权限:cat、less、grep、head、tail
w写入权限:vim、> 、 >>
x可执行权限:Shell与Python
• 归属关系
– 所有者(属主):拥有此文件/目录的用户-user
– 所属组(属组):拥有此文件/目录的组-group
– 其他用户:除所有者、所属组以外的用户-other
• 执行 ls -l或者ls -ld 命令查看
以-开头:文本文件
以d开头:目录
以l开头:快捷方式
[jack@localhost root]$ ls -ld /etc/
drwxr-xr-x. 111 root root 12288 6月10日 23:05 /etc/
[jack@localhost root]$ ls -l /etc/passwd
-rw-r--r--. 1 root root 2378 6月10日 21:40 /etc/passwd
[jack@localhost root]$ ls -ld /tmp
drwxrwxrwt. 9 root root 180 6月11日 22:44 /tmp
root@localhost ~]# ls -ld /home/zhangsan/
drwx------. 2 zhangsan zhangsan 4096 6月11日 23:39 /home/zhangsan/
修改权限 chmod命令
•
– 格式:chmod [ugoa] [±=][rwx] 文件…
• 常用命令选项
练习:
root@localhost ~]# mkdir /nsd10
[root@localhost ~]# ls -ld /nsd10/
drwxr-xr-x. 2 root root 4096 6月12日 10:46 /nsd10/
[root@localhost ~]# chmod u-w /nsd10/ #所有者去掉w权限
[root@localhost ~]# ls -ld
dr-xr-x---. 3 root root 4096 6月11日 22:51 .
[root@localhost ~]# chmod u+w /nsd10/ #所有者加上w权限
[root@localhost ~]# ls -ld /nsd10/
drwxr-xr-x. 2 root root 4096 6月12日 10:46 /nsd10/
[root@localhost ~]# chmod g=r /nsd10/ #所属组重新定义权限
[root@localhost ~]# ls -ld /nsd10/
drwxr--r-x. 2 root root 4096 6月12日 10:46 /nsd10/
[root@localhost ~]# chmod a=rwx /nsd10/ #a表示所有人
[root@localhost ~]# ls -ld /nsd10/
drwxrwxrwx. 2 root root 4096 6月12日 10:46 /nsd10/
[root@localhost ~]# chmod u=---,g=rx,o=rwx /nsd10/
[root@localhost ~]# ls -ld /nsd10/
d---r-xrwx. 2 root root 4096 6月12日 10:46 /nsd10/
-R:递归修改权限
练习
[root@localhost ~]# mkdir -p /opt/aa/bb/cc
[root@localhost ~]# ls -ld /opt/aa/
drwxr-xr-x. 3 root root 4096 6月12日 11:01 /opt/aa/
[root@localhost ~]# ls -ld /opt/aa/bb
drwxr-xr-x. 3 root root 4096 6月12日 11:01 /opt/aa/bb
[root@localhost ~]# ls -ld /opt/aa/bb/cc/
drwxr-xr-x. 2 root root 4096 6月12日 11:01 /opt/aa/bb/cc/
[root@localhost ~]# chmod -R o=--- /opt/aa/
[root@localhost ~]# ls -ld /opt/a
aa/ a.txt
[root@localhost ~]# ls -ld /opt/aa/
d-wx--x---. 3 root root 4096 6月12日 11:01 /opt/aa/
[root@localhost ~]# ls -ld /opt/aa/bb/
drwxr-x---. 3 root root 4096 6月12日 11:01 /opt/aa/bb/
[root@localhost ~]# ls -ld /opt/aa/bb/cc/
drwxr-x---. 2 root root 4096 6月12日 11:01 /opt/aa/bb/cc/
案例1:设置基本权限
1)以root身份新建/nsddir1/目录,在此目录下新建readme.txt文件
[root@localhost ~]# mkdir /nsddir1
[root@localhost ~]# echo 123456 > /nsddir1/readme.txt
[root@localhost ~]# cat /nsddir1/readme.txt
123456
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/
限利用数字方式表示
• 权限位的8进制数表示
– r、w、x分别对应4、2、1,后3组分别求和
chown命令
基本语法:
chown [选项] [新所有者][:新所属组] 文件或目录...
]# 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:归属关系练习
利用root的身份新建/tarena目录,并进一步完成下列操作
[root@localhost ~]# mkdir /tarena
将/tarena属主设为gelin01,属组设为tmooc组**
[root@localhost ~]# useradd gelin01
[root@localhost ~]# groupadd tmooc
[root@localhost ~]# chown gelin01:tmooc /tarena
使用户gelin01对此目录具有rwx权限,除去所有者与所属组之外的用户对此目录无任何权限**
[root@localhost ~]# chmod o=— /tarena
使用户gelin02能进入、查看此目录**
[root@localhost ~]# useradd gelin02
[root@localhost ~]# gpasswd -a gelin02 tmooc
将gelin01加入tmooc组,将tarena目录的权限设为450,测试gelin01用户能否进入此目录**
[root@localhost ~]# gpasswd -a gelin01 tmooc
[root@localhost ~]# chmod 450 /tarena
附加权限(特殊权限) Sticky Bit chmod +t
• 粘滞位,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/
drwxrwxrwx. 2 root root 4096 6月14日 19:49 /home/public/
[root@localhost ~]# chmod o+t /home/public/
[root@localhost ~]# ls -ld /home/public/
drwxrwxrwt. 2 root root 4096 6月14日 19:49 /home/publ t 权限非属主无法删除
Set GID权限(SGID)
– 占用属组(Group)的 x 位
– 显示为 s 或 S,取决于属组是否有 x 权限
– 对目录有效
– 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份
[root@localhost ~]# mkdir /nsd18
[root@localhost ~]# chown :tmooc /nsd18
[root@localhost ~]# ls -ld /nsd18
drwxr-xr-x. 2 root tmooc 4096 6月14日 20:43 /nsd18
[root@localhost ~]# mkdir /nsd18/abc01
[root@localhost ~]# ls -ld /nsd18/abc01
drwxr-xr-x. 2 root root 4096 6月14日 20:44 /nsd18/abc01
[root@localhost ~]# chmod g+s /nsd 赋予SGID权限
nsd10/ nsd15/ nsd18/ nsddir1/
[root@localhost ~]# chmod g+s /nsd18
[root@localhost ~]# ls -ld /nsd18
drwxr-sr-x. 3 root tmooc 4096 6月14日 20:44 /nsd18
[root@localhost ~]# mkdir /nsd18/abc02
[root@localhost ~]# ls -ld /nsd18/abc02
drwxr-sr-x. 2 root tmooc 4096 6月14日 20:51 /nsd18/abc02
ACL策略管理
• 文档归属的局限性:
– 任何人只属于三种角色:属主、属组、其他人
– 针对特殊的人实现更精细的控制
• acl访问策略作用:
– 能够对个别用户、个别组设置独立的权限
– 大多数挂载的EXT3/4、XFS文件系统默认已支持
• setfacl命令
– 格式:setfacl [选项] u:用户名:权限 文件…
setfacl [选项] g:组名:权限 文件…
• 常用命令选项
– -m:修改ACL策略
– -x:清除指定的ACL策略
– -b:清除所有已设置的ACL策略
– -R:递归设置ACL策略
[root@localhost ~]# mkdir /nsd19
[root@localhost ~]# chmod 770 /nsd19
[root@localhost ~]# ls -ld /nsd19
drwxrwx---. 2 root root 4096 6月14日 21:19 /nsd19
[root@localhost ~]# setfacl -m u:dc:rx /nsd19
[root@localhost ~]# getfacl /nsd19
getfacl: Removing leading '/' from absolute path names
# file: nsd19
# owner: root
# group: root
user::rwx
user:dc:r-x
group::rwx
mask::rwx
other::---
root@localhost ~]# ls -ld /nsd19
drwxrwx---+ 2 root root 4096 6月14日 21:19 /nsd19 这里的加号代表 有设置acl
[root@localhost ~]# setfacl -x u:dc /nsd19 删除acl
[root@localhost ~]# setfacl -b /nsd19 #删除所有的acl
练习
[root@localhost ~]# mkdir /nsd22
[root@localhost ~]# setfacl -m u:dc:rx /nsd22
[root@localhost ~]# setfacl -m u:zhangsan: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:dc:r-x
user:zhangsan:rwx
user:gelin01:rwx
group::r-x
mask::rwx
other::r-x
[root@localhost ~]# setfacl -x u:zhangsan /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:dc:r-x
user:gelin01:rwx
group::r-x
mask::rwx
other::r-x
[root@localhost ~]# setfacl -x u:dc /nsd22
[root@localhost ~]# setfacl -b /nsd22
[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
附加权限SUID权限
占用属主(User)的 x 位
显示为 s 或 S,取决于属主是否有 x 权限
仅对可执行的程序有意义
当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限
chmod u+s /usr/bin/hahadir
[root@localhost ~]# which mkdir
/usr/bin/mkdir
[root@localhost ~]# /usr/bin/mkdir /opt/abc01
[root@localhost ~]# ls /opt/abc01/
[root@localhost ~]# ls /opt
aa a.txt b.txt c.txt man.txt op p.txt
abc01 boot containerd haha myhome patch_workspace shells
[root@localhost ~]# cp /usr/bin/mkdir /usr/bin/hahadir
[root@localhost ~]# ll /usr/bin/hahadir
-rwxr-xr-x. 1 root root 104824 6月14日 22:47 /usr/bin/hahadir
[root@localhost ~]# /usr/bin/hahadir /opt/abc02
[root@localhost ~]# ls /opt
aa a.txt containerd man.txt patch_workspace
abc01 boot c.txt myhome p.txt
abc02 b.txt haha op shells
[root@localhost ~]# chmod u+s /usr/bin/hahadir
[dc@localhost nsd19]$ /usr/bin/hahadir zs01
文件/目录的默认权限
• 新建文件/目录的默认权限
– 一般文件默认均不给 x 执行权限
– 其他取决于 umask(权限掩码) 设置
– 新建目录默认权限为755
– 新建文件默认权限为644
[root@localhost ~]# umask
0022
[root@A ~]# umask -S
u=rwx,g=rx,o=rx