文件权限
把⼀个⽤户加⼊了⼀个组,该⽤户就拥有了该组的权限,当⼀个⽤户要操作某个⽂件时,系统会依次检索该⽤户是否是该⽂件的(属主)拥有者,其次是(数组)组成员,最后是其他⼈,如果扫描到是拥有者,则具备拥有者的权限,不必往后扫描,以此类推
权限类型
每一个权限拥有一个数字编号
r:可读(read)—> 4
w:可写(write)—> 2
x:可执⾏(execute)—> 1
-:没有对应权限
执行脚本 == 运行脚本
权限的归属
权限位

权限位主要分为三个部分,分别是属主、属组以及其他人
rwx : 属主—>可读可写可执行
r-x : 属组—>可读可执行
rw- : 其他人—>可读可写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 使用ll命令查看文件详情,在每个文件详情最前方,有10个字符来表示文件类型和权限 [root@localhost ~] -rw-r--r-- 1 root root 0 12月 14 19:11 1 drwxr-xr-x 2 root root 6 12月 18 15:51 a -rwxr-xr-x 1 root root 4609 11月 21 11:43 init.sh
在Linux 系统中权限是区分用户的,即属主(用户)、属组(组用户)、其他用户,第一位表示文件的类型,-代表文件,d代表目录,其他每个用户占三个字符,这里-rwxr-xr-x对应如下关系 - rwx r-x r-x
含义解释 第一位:-代表文件,d代表目录 用户、组用户、其他用户都未rwx形式,其中r表示读、w表示写、x表示可执行,-表示没有权限,拿用户组举例,r只能出现在第一个位置、w只能出现在第二个位置、x只能出现在第三位。
|

如果我们将出现字符(可以是r、w、x)表示为1,出现-表示为0,那么对应二进制如下,r - - = 100、- w - = 010、- - x = 001、再转换成10进制,那么读=4、写=2、可执行=1,将转换为以下关系

也就是说这里的数字简写了用户权限,我们也可以用数字反推权限,比如数据6,我们转换为为二进制:110,转换为:rw-,具有可读、可写权限。
现在我们已经明白了:-rwxr-xr-x权限含义了,这里用数字简写就是-755,这里还需要改写成0755,这里的0可以简单理解成10进制
设置权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| chmod 格式: chmod [参数] [权限表达式] [操作对象] 参数: -R : 递归增加权限 [root@localhost ~] -rw-r--r-- 1 root root 0 12月 18 16:42 /root/1.txt
[root@localhost ~] [root@localhost ~] -rwxr-xrw- 1 root root 0 12月 18 16:42 /root/1.txt [root@localhost ~] [root@localhost ~] -r-x--x-w- 1 root root 0 12月 18 16:42 /root/1.txt
[root@localhost ~] [root@localhost ~] -rwxrw-r-x 1 root root 0 12月 18 16:42 /root/1.txt
[root@localhost ~] [root@localhost ~] -rwxr-xrw- 1 root root 0 12月 18 16:42 /root/1.txt [root@localhost ~] [root@localhost ~] -rwxrwxrwx 1 root root 0 12月 18 16:42 /root/1.txt
[root@localhost ~] [root@localhost ~] [root@localhost ~] [root@localhost ~] drwxrwxrwx 2 root root 19 12月 18 17:13 c
[root@localhost ~] -rwxrwxrwx 1 root root 0 12月 18 17:13 /a/b/c/d.txt
[root@localhost ~] 或 [root@localhost ~]
[root@localhost ~] ---------- 1 root root 0 12月 18 16:42 /root/1.txt
|
权限的作用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 1、权限对于用户的意义 1、普通用户是严格遵守权限的 2、root用户是高于权限 3、权限需要重新登才生效(su和su - 都可以)
2、权限对于文件的意义 1、r:读取文件内容 2、w:修改文件内容 3、x:可以把文件当成一个命令/程序运行
3、权限对于目录的意义 1、r:可以浏览该目录下子目录名和子文件名(路径的最小权限是必须拥有可执行权限) 2、w:创建、删除、移动(同上) 3、x:可以进入该目录(同上)
|
权限之特殊权限
SUID
- 作用对象必须是二进制文件(cat出来是乱码的文件)
- 该文件必须拥有可执行权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| chmod 4xxx [文件名] or chmod u+s [文件名]
[root@localhost ~] -rwsr-xr-x 1 root root 27856 4月 1 2020 /usr/bin/passwd
查看passwd命令的权限,我们可以看到一个不曾见到过的权限 s
而 S 权限是一个特殊权限 SUID 权限仅对⼆进制可执⾏⽂件有效 如果执⾏者对于该⼆进制可执⾏⽂件具有 s 的权限,执⾏者将具有该⽂件的所有者的权限 本权限仅在执⾏该⼆进制可执⾏⽂件的过程中有效
[root@localhost ~]
[user@localhost ~]$ cat /etc/shadow cat: /etc/shadow: 权限不够
[user@localhost ~]$ ll /etc/shadow ----------. 1 root root 997 6月 20 18:02 /etc/shadow
[root@localhost ~] -rwxr-xr-x. 1 root root 54160 10⽉ 31 2018 /usr/bin/cat
[root@localhost ~]
[root@localhost ~] -rwsr-xr-x. 1 root root 54160 10⽉ 31 2018 /usr/bin/cat
[root@localhost ~] [user@localhost ~]$ cat /etc/shadow
|
SBIT
SBIT 是 the restricted deletion flag or sticky bit 的简称,有时也称为Sticky。
- 只对目录有效,用来阻止非文件的所有者删除文件,比较常见的就是/tmp目录
1 2 3 4 5 6 7 8 9 10 11
| chmod o+t [文件名] or chmod 1xxx [文件名]
[root@localhost ~] drwxrwxrwt. 13 root root 4096 8⽉ 11 17:09 /tmp/
权限信息中最后⼀位 t 表明该⽬录被设置了 SBIT 权限。
SBIT 对⽬录的作⽤是: 当⽤户在该⽬录下创建新⽂件或⽬录时,仅有⾃⼰和 root 才有权⼒删除,主要作⽤于⼀个共享的⽂件夹。
|
SGID
- 用户对某一目录具有写和执行权限,该用户就可以在该目录下建立文件,如果该目录被SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组
1 2 3 4 5
| chmod g+s [文件名] or chmod 2xxx [文件名]
ps:当 SGID 作⽤于普通⽂件时,和 SUID 类似,在执⾏该⽂件时,⽤户将获得该⽂件所属组的权限。
|
Umask
新建的文件、目录的默认权限是由umask决定的
uid > 199并且属主与数组相等的⽤户下比如test ,umask: 0002
除1之外的其他⽤户下,⽐如root⽤户,umask: 0022
在Linux中,常用的文件的权限是666,目录的权限是777
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| 1、文件权限计算方法: 文件的权限是跟 umask 值相减,遇到奇数加一;遇到偶数则不变。 2、目录权限计算方法: 目录的权限只要跟 umask 值相减即可。 总结:umask设置的越小,权限就越大,慎用
默认文件权限:644 默认的目录权限:755 [root@localhost ~] [root@localhost ~] -rw-r--r-- 1 root root 0 12月 18 20:55 a.txt [root@localhost ~] [root@localhost ~] drwxr-xr-x 2 root root 6 12月 18 20:57 b [root@localhost ~] 0022
[root@localhost ~]
[root@localhost tmp] ...... if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002 else umask 022 fi
需求: 要求把1个月之前修改过的日志文件删除。
案例: 案例1:将index文件添加属主 : 可读可写可执行、属组 :可读可写、其他人:没有任何权限 chmod 760 index
案例2:将baidu下的所有文件设置rwxr--r-- chmod -R 744 baidu/
案例3:将index这个文件的属组增加一个可执行权限。 chmod g+x index chmod g+x,o-r index
|