1.Linux权限介绍
权限管理就是指对不同的用户,设置不同的文件访问权限,包括对文件的读、写、删除等,在 Linux 系统中,每个用户都具有不同的权限,拿非 root 用户来说,它们只能在自己的主目录下才具有写权限,而在主目录之外,只具有访问和读权限。
2.文件权限查看
ls -l # 可以看到文件的详细信息,包括权限,属主属组等。
ll -d /data
drwxr-xr-x 5 root root 4096 Jul 26 18:25 /data
# 1.基本权限
读取:r 允许查看内容,查看目录的子目录 --> cat 等
写入:w 允许修改内容,创建修改文件夹 --> vim 等
执行:x 允许执行文件,切换目录 --> shell , cd 等
注意:一个文件是否可以删除取决于上级目录的w权限
# 1.1 权限判定
umask
022
# 1.2 设置umask
umask 002
#默认创建文件的权限是=文件最大权限(777)-umask(022)=755
#默认创建目录的权限为=目录最大权限(666)-umask(022)=644
ls -l file # 判断目录下子目录的权限
ls -ld file # 查看目录本身的权限
drwxr-xr-x:这是文件权限和类型部分。d 表示这是一个目录,当为 - 则是文件; 若是 l 则表示为链接文档(link file); 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置); 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置) 。rwx 表示所有者(owner)有读(r)、写(w)和执行(x)权限。r-x 表示所属组(group)有读和执行权限,但没有写权限。r-x 表示其他用户(others)有读和执行权限,但没有写权限。
3.权限管理命令
更改文件属主和属组时,注意是否存在属主和属组。用户权限可以用数字表示r--->4
,w--->2,x--->1。
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件 的属组都会更改。
3.1 chown
更改文件或者目录的属主和属组。
[root@master /]# su - tom # 切换到tomy用户
Last login: Fri Jul 5 15:28:20 CST 2024 on pts/1
[tom@master ~]$ pwd # 目录在tom的家目录下
/home/tom
[tom@master ~]$ mkdir home_tom # 创建一个文件
[tom@master ~]$ pwd
/home/tom
[tom@master ~]$ ll
d rwx rwx r-x 2 tom tom 6 Jul 28 15:08 home_tom
tom tom 表示属主和属组,权限用数字表示为775。
这时属主和属组都是tom,第一个tom表示用户tom可以有d后面第一组rwx权限.第二个tom表示属于tom组的用户可以有d后面第二组rwx权限.
[root@master /]# chown tom:charlotte /home/tom/
2.txt .bash_profile .config/ .ssh/ .zshrc
.bash_history .bashrc home_tom/ test/
.bash_logout .cache/ .mozilla/ .viminfo
[root@master /]# chown tom:charlotte /home/tom/home_tom
[root@master /]# ll tom:charlotte /home/tom/home_tom
ls: cannot access tom:charlotte: No such file or directory
/home/tom/home_tom:
total 0
[root@master /]# ll -d /home/tom/home_tom
drwxrwxr-x 2 tom charlotte 6 Jul 28 15:08 /home/tom/home_tom
这时属主是tom,属组是Charlotte,第一个tom表示用户tom可以有d后面第一组rwx权限,charlotte表示属于charlotte组的用户可以有第二组rwx权限。
3.2 chmod
[root@master /]# ll -d /home/tom/home_tom
drwxrwxr-x 2 tom charlotte 6 Jul 28 15:08 /home/tom/home_tom
[root@master /]# chmod u-rw,g-w,o+w /home/tom/home_tom/
u : 表示用户
g :表示用户组
o : 表示其他既不是主也不是组的人
- : 去除权限
+ : 赋予权限
[root@master /]# ll -d /home/tom/home_tom
d--xr-xrwx 2 tom charlotte 6 Jul 28 15:08 /home/tom/home_tom
chmod 是修改权限的命令,这时tom用户的权限是--x,属于charlotte用户组的用户权限是r-x,其他用户是rwx。
3.3 chgrp
chgrp 和chown类似,但是只能修改用户组。
[root@master /]# chgrp tom /home/tom/home_tom/
[root@master /]# ll -d /home/tom/home_tom
d--xr-xrwx 2 tom tom 6 Jul 28 15:08 /home/tom/home_tom
4.Linux特殊权限
4.1 SUID: chmod u+s file_path
文件: 针对于二进制执行文件添加suid权限,使发起者使用文件所有者权限
4.2 SBID: chmod o+t file_path/dir_path
即使目录有w权限,兑目录设置o+t之后,也只有所有者可以删除自己的文件
4.3 SGID: chmod g+s file_path/dir_path
文件: 添加sgid权限,使发起者使用属组权限
目录: 添加sgid权限,子目录继承父目录的属组
5.ACL权限
ACL 可实现对单一用户设定访问文件 的权限。也可以这么说,设定文件的访问权限,除了用传统方式(3 种身份搭配 3 种权限),还可以使用 ACL 进行设 定。拿st 学员来说,既然赋予它传统的 3 种身份,无法解决问题,就可以考虑使用 ACL 权限控制的方式, 直接对 st 用户设定访问文件的 r-x 权限,也可以给某个组单独权限。
5.1开启acl权限
grep -i acl /boot/config*
5.2Linux ACL权限设置
getfacl file_name 察看文件权限, | 表示或者
setfacl [-R] -m u|g:user_name|group_name:权限 file/dir
setfacl [-R] -x u|g:user_name|group_name:权限 file/dir
-x 删除指定acl权限 -m 修改用户或者用户组的acl权限
6.隐藏权限
6.1查看隐藏权限(lsattr)
lsattr file/dir
6.2设置和取消隐藏权限(chattr)
隐藏权限表