- 基本权限归属
- 附加权限
- ACL策略管理
1.基本权限归属
-
访问权限
- 读取 -read(r)
- 写入(不涵盖读取)(write -w)
- 可执行(excute -x)
-
对于文本文件:
- r读取权限:cat、less、grep、head、tail
- w写入权限:vim、> 、 >>
- x可执行权限:Shell与Python 对于目录:
-
对于目录
- r读取权限:ls命令查看目录内容
- w写入权限:能够创建、删除、修改等目录的内容
- x 执行权限:能够cd切换到此目录下(进入此目录)
-
归属关系
- 所有者(属主):拥有此文件/目录的用户-user
- 所属组(属组):拥有此文件/目录的组-group(默认是基本组)
- 其他用户:除所有者、所属组以外的用户-other
例如:zhangsan(所有者) zhangsan(所属组) 1.txt
-
查看数据权限
执行 ls -l或者ls -ld 命令查看:-
第一位:
- 以-开头:文本文件
- 以d开头:目录
- 以l开头:快捷方式 -
2-10位(共9位,3位为一组)
- 第一组 :表示用户权限
rwx分别表示读、写、执行 -表示没有权限 t代表附加权限 - 第二组:表示所属组权限
- 第三组:表示其他用户权限
- 第一组 :表示用户权限
-
数字
- 文件和快捷方式表示硬链接的个数
- 目录表示子目录的个数
-
root root 表示用户和组
-
[root@localhost ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 2510 4月 8 16:01 /etc/passwd
[root@localhost ~]# ls -ld /etc/
drwxr-xr-x. 142 root root 8192 4月 8 16:03 /etc/
[root@localhost ~]# ls -ld /dev/cdrom
lrwxrwxrwx. 1 root root 3 4月 24 14:14 /dev/cdrom -> sr0
[root@localhost ~]# ls -l /etc/shadow
----------. 1 root root 1348 4月 24 15:35 /etc/shadow #密码文件,不允许其他人查看(root除外)
root用户拥有所有权限
- 修改权限
chmod命令- 格式 chmod [ugoa] [±=][rwx] 文件…
- 选项 -R:递归修改权限
[root@localhost ~]# mkdir /nsd10
[root@localhost ~]# ls -ld /nsd10
[root@localhost ~]# chmod u-w /nsd10 #所有者去掉w权限
[root@localhost ~]# ls -ld /nsd10
[root@localhost ~]# chmod u+w /nsd10 #所有者加上w权限
[root@localhost ~]# ls -ld /nsd10
[root@localhost ~]# chmod g+w /nsd10 #所属组加上w权限
[root@localhost ~]# ls -ld /nsd10
[root@localhost ~]# chmod g=r /nsd10 #所属组重新定义权限
[root@localhost ~]# ls -ld /nsd10
[root@localhost ~]# chmod a=rwx /nsd10 #a表示所有人
[root@localhost ~]# ls -ld /nsd10
[root@localhost ~]# chmod u=---,g=rx,o=rwx /nsd10
[root@localhost ~]# ls -ld /nsd10
o设置为rwx时表示颜色为绿色
-R递归修改权限
[root@localhost ~]# mkdir -p /opt/aa/bb/cc
[root@localhost ~]# chmod -R -o=rwx /opt/aa #设置所有子相同的权限,从aa开始
不要对根目录递归修改权限!!!
- 新建标签页 :ctrl shift t
w权限:可以修改目录下面的内容,但不能修改目录本身
一个目录至少拥有执行权限,才能对其子目录和文件进行操作
权限利用数字方式表示
• 权限位的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
- 修改归属关系
chown命令- chown 属主 文件…
- chown 属主:属组 文件…
- chown :属组 文件…
[root@localhost ~]# mkdir /nsd15
[root@localhost ~]# ls -ld /nsd15
[root@localhost ~]# groupadd tmooc #创建组tmooc
[root@localhost ~]# useradd lisi #创建用户lisi
[root@localhost ~]# chown lisi:tmooc /nsd15 #修改所有者与所属组
[root@localhost ~]# ls -ld /nsd15
[root@localhost ~]# chown zhangsan /nsd15 #仅修改所有者
[root@localhost ~]# ls -ld /nsd15
[root@localhost ~]# chown :root /nsd15 #仅修改所属组
[root@localhost ~]# ls -ld /nsd15
Linux中判断用户具备的权限:
1.查看用户,对于该数据所处的身份,顺序所有者>所属组>其他人,原则是匹配及停止
2.查看相应身份的权限位
例如:
1.192.168.1.1可以进入
2.所有客户端不可以进入
2.ACL策略管理
•acl访问策略作用:
–能够对个别用户、个别组设置独立的权限
•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
[root@localhost ~]# useradd dc
[root@localhost ~]# su - dc
[dc@localhost ~]$ cd /nsd19
-bash: cd: /nsd19: 权限不够
[dc@localhost ~]$ exit
[root@localhost ~]# setfacl -m u:dc:rx /nsd19 #单独赋予dc用户权限
[root@localhost ~]# getfacl /nsd19 #查看ACL策略
[root@localhost ~]# su - dc
[dc@localhost ~]$ cd /nsd19
[dc@localhost ~]$ pwd
[dc@localhost ~]$ exit
Linux中判断用户具备的权限(完全体):
1.首先查看该用户或者组是否有ACL策略
2.查看用户,对于该数据所处的身份,顺序所有者>所属组>其他人,原则是匹配及停止
3.查看相应身份的权限位
[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
[root@localhost ~]# setfacl -x u:zhangsan /nsd22 #删除指定用户ACL
[root@localhost ~]# getfacl /nsd22
[root@localhost ~]# setfacl -x u:dc /nsd22 #删除指定用户ACL
[root@localhost ~]# getfacl /nsd22
[root@localhost ~]# setfacl -b /nsd22 #清除目录所有ACL策略
[root@localhost ~]# getfacl /nsd22
[root@localhost ~]# mkdir /home/public
[root@localhost ~]# chmod 777 /home/public
[root@localhost ~]# setfacl -m u:lisi:--- /home/public #单独拒绝某些用户
[root@localhost ~]# getfacl /home/public
- R:递归设置ACL策略
[root@localhost ~]# setfacl -Rm u:dc:rwx /opt/aa
mask权限掩码:在设置了
ACL策略后,组位置权限表示的是权限掩码
3.附加权限
•粘滞位,Sticky Bit 权限
–占用其他人(Other)的 x 位
–显示为 t 或 T,取决于其他人是否有 x 权限
–适用于目录,用来限制用户滥用写入权
–在设置了t权限的目录下,即使用户有写入权限,也不能删除或改名其他用户文档
设置了粘滞位的目录只能对自己创建的文件修改
[root@localhost ~]# mkdir /nsd26
[root@localhost ~]# chmod 777 /nsd26
[root@localhost ~]# ls -ld /nsd26
[root@localhost ~]# chmod o+t /nsd26
[root@localhost ~]# ls -ld /nsd26
•Set GID权限(SGID权限)
–占用属组(Group)的 x 位
–显示为 s 或 S,取决于属组是否有 x 权限
–对目录有效
–在一个具有SGID权限的目录下,新建的文档会自动继承父目录的属组身份
设置了SGID的目录,新建文件会自动继承父目录所属组
[root@localhost ~]# mkdir /nsd18
[root@localhost ~]# chown :tmooc /nsd18 #修改所属组
[root@localhost ~]# ls -ld /nsd18
[root@localhost ~]# chmod g+s /nsd18 #赋予SGID特殊权限
[root@localhost ~]# ls -ld /nsd18
[root@localhost ~]# mkdir /nsd18/abc01
[root@localhost ~]# ls -ld /nsd18/abc01
[root@localhost ~]# mkdir /nsd18/abc02
[root@localhost ~]# ls -ld /nsd18/abc02
[root@localhost ~]# touch /nsd18/1.txt
[root@localhost ~]# ls -ld /nsd18/1.txt
- Set UID(SUID)权限(了解)
占用属主(User)的 x 位
显示为 s 或 S,取决于属主是否有 x 权限
仅对可执行的程序有意义
当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限
即在普通用户执行有SUID权限的程序时,会以root的身份执行
- 总结补充
请问实现lisi用户可以读取/etc/shadow文件内容,您有几种办法?(至少写出三种以上)
- 利用其他人身份
chmod o+r /etc/shadow
- 利用所属组身份
chown :lisi /etc/shadow
chmod g+r /etc/shadow
- 利用所有者身份
chown lisi /etc/shadow
chmod u+r /etc/shadow
- 利用ACL策略
setfacl -m u:lisi:r /etc/shadow
- 手动建立用户家目录
/etc/skel是新建用户时,会以此目录作为模板建立用户家目录
]# useradd natasha
]# rm -rf /home/natasha
]# cp -r /etc/skel /home/natasha
]# chown -R natasha:natasha /home/natasha
]# ls -lA /home/natasha
]# su - natasha
[natasha@localhost ~]$
-
权限掩码mask
-
新建文件/目录的默认权限
-
一般文件默认均不给 x 执行权限
-
其他取决于 umask(权限掩码) 设置
-
新建目录默认权限为755
-
新建文件默认权限为644
-
[root@localhost ~]# umask
0022
[root@localhost ~]# umask -S #显示新建目录的默认权限
u=rwx,g=rx,o=rx
[root@nb ~]# mkdir -m 777 /nsd26 #-m无视umask值创建数据指定数据的权限
[root@nb ~]# ls -ld /nsd26
实现natasha用户新建数据,目录权限为700文件为600
[root@nb ~]# useradd natasha
[root@nb ~]# vim /home/natasha/.bashrc #修改家目录配置文件
umask 077 #新增配置,指定权限掩码值
[root@nb ~]# su - natasha
上一次登录:四 2月 23 17:26:16 CST 2023pts/0 上
[natasha@nb ~]$ umask
0077
[natasha@nb ~]$ mkdir abc
[natasha@nb ~]$ ls -ld abc
drwx------. 2 natasha natasha 6 2月 23 17:27 abc
[natasha@nb ~]$ exit
- 常见故障:递归设置权限错误
[root@nb ~]# mkdir /nsd26
[root@nb ~]# mkdir /nsd26/haha
[root@nb ~]# mkdir /nsd26/xixi
[root@nb ~]# touch /nsd26/1.txt
[root@nb ~]# touch /nsd26/2.txt
[root@nb ~]# chmod -R a=--- /nsd26
[root@nb ~]# ls -ld /nsd26
[root@nb ~]# ls -l /nsd26
[root@nb ~]# find /nsd26 -type d -exec chmod 755 {} \;
[root@nb ~]# ls -l /nsd26
[root@nb ~]# find /nsd26 -type f -exec chmod 644 {} \;
[root@nb ~]# ls -l /nsd26