掘金 后端 ( ) • 2024-04-08 16:56

theme: nico

文件和目录的权限与归属

访问权限 ls -l命令可以查看指定文件或目录的权限。

[root@localhost /]# ll opt          //ls -l 可以查看文件目录的属性
总用量 0
drwxr-xr-x. 2 root root 6 3月  26 2015 rh

image.png

权限格式:rwx rw- --x

r读:

  • 文件:可以看里面的内容。
  • 文件夹:可以用ls看文件夹中的文件列表。

w 写入:

  • 文件:可以修改文件的内容。(必须要有读的权限才能对其更改)
  • 文件夹:新建文件(文件夹),删除文件(文件夹),移动文件(文件夹)。(在没有读权限下还是可以操作的)

x 执行:

  • 文件:可以运行(命令、脚本)颜色是绿色。
  • 文件夹:执行是最小的权限,没有执行什么都做不了所以必须得有。

归属(所有权):

  1. 属组:拥有该文件或目录的组账号(文件的拥有组)
  2. 属主:拥有该文件或目录的用户账号(文件的主人,文件的拥有者,拥有最高权限)
  3. 其他人:除了上面两种

数字表示法:

image.png

读:100——4

写:010——2

执行:001——1

最高权限:111——7

将二进制转化成十进制

修改文件属性权限命令:chmod

chmod命令格式:chmod 【选项】 指明属主,属组,其他人+权限 文件

常用选项:

选项 功能 -R 递归 u 属主 g 属组 o 其他人 a 所有人 + 加上 - 减去 = 赋予
  • chmod u+r 文件名(为属主加上读的权限)
  • chmod u-r 文件名(为属主减去读的权限)
  • chmod u+r 文件名(为属主)
  • chmod a+r 文件名(为所有人都加上读的权限)

演示:

[root@localhost /]# ll zhutou                  //查看当前该文件的权限
-rw-r--r--. 1 root root 0 4月   7 13:53 zhutou
[root@localhost /]# chmod a+rwx zhutou        //给当前文件权限升级为777
[root@localhost /]# ll zhutou
-rwxrwxrwx. 1 root root 0 4月   7 13:53 zhutou

也可写成数字表示法,会较为方便一些

[root@localhost /]# ll zhutou                   //查看当前该文件权限
-rw---x--x. 1 root root 0 4月   7 13:53 zhutou
[root@localhost /]# chmod 777 zhutou            //给所有人加上最高权限
[root@localhost /]# ll zhutou                   //查验
-rwxrwxrwx. 1 root root 0 4月   7 13:53 zhutou

设置文件和目录的归属chown、chgrp

设置文件属性的属主与属组

chown命令格式:

选项 功能 chown 属主 文件名 只改变文件的属主 chown :属组 文件名 只改变文件的属组 chown .属组 文件名 只改变文件的属组 chown 属主:属组 文件名 属主属组都改变 chown 属主.属组 文件名 属主属组都改变

常用选项:

-R:递归修改指定目录下所有文件、子目录的归属

演示:

chown既可以改变属主也可以改变属组

[root@localhost zhubao]# ll      //查看当前文件夹下所有文件的属性
总用量 4
-rw-r--r--. 1 root root 0 4月   8 15:04 1
-rw-r--r--. 1 root root 0 4月   8 15:04 2
-rw-r--r--. 1 root root 0 4月   8 15:04 3
-rw-r--r--. 1 root root 9 4月   8 15:05 hello

[root@localhost zhubao]# chown zhubao.zhubao 1  //将文件1的属主与属组改为zhubao
[root@localhost zhubao]# ll
总用量 4
-rw-r--r--. 1 zhubao zhubao 0 4月   8 15:04 1
-rw-r--r--. 1 root   root   0 4月   8 15:04 2
-rw-r--r--. 1 root   root   0 4月   8 15:04 3
-rw-r--r--. 1 root   root   9 4月   8 15:05 hello
[root@localhost zhubao]# chown zhutou:zhutou 2 //换一种写法得出结果相仿

[root@localhost zhubao]# ll
总用量 4
-rw-r--r--. 1 zhubao zhubao 0 4月   8 15:04 1
-rw-r--r--. 1 zhutou zhutou 0 4月   8 15:04 2
-rw-r--r--. 1 root   root   0 4月   8 15:04 3
-rw-r--r--. 1 root   root   9 4月   8 15:05 hallo
[root@localhost zhubao]# chown :guinv 3  //改变文件3的属组为guinv
[root@localhost zhubao]# ll
总用量 4
-rw-r--r--. 1 zhubao zhubao 0 4月   8 15:04 1
-rw-r--r--. 1 zhutou zhutou 0 4月   8 15:04 2
-rw-r--r--. 1 root   guinv  0 4月   8 15:04 3
-rw-r--r--. 1 root   root   9 4月   8 15:05 hallo

权限掩码umask

设置新建文件夹或目录的默认权限

[root@localhost /]# mkdir zhutou    //在系统中创建新文件夹默认权限为755
[root@localhost /]# ll -d zhutou
drwxr-xr-x. 2 root root 6 4月   8 15:37 zhutou
[root@localhost zhutou]# touch 11   //在系统中默认创建文件权限为644
[root@localhost zhutou]# ll 11
-rw-r--r--. 1 root root 0 4月   8 15:40 11

umask作用:

  • 控制新建的文件或者目录的权限。
  • 默认权限去除umask的权限为新建的文件
  • 规定了新建文件和新建文件夹落地权限

777(最高权限)-022(umas设置权限)=755(新建文件的默认权限)

umask查看:  umask

umask设置:  umask 0022

  1. 文件夹:这里的0022,第一个0为特殊权限,可以忽略,剩下的022为默认777基础上没有的权限,所以文件夹默认权限为755(rwx r-x r-x)。

  2. 文件:出于安全性考虑新建文件的最高权限为666 ,执行权限对于文件而言相对是比较危险的,所以一开始文件是没有执行权限的(相当于文件的初始权限是在最高权限777-111开始的)所以便得出666-022=644(rw- r-- r--)

umask设置格式

umask后面跟上数值可以设置umask值(umask 0000)

演示:

1.将umask改为0000创建文件夹(权限拉满)

[root@localhost zhutou]# mkdir zhubao
[root@localhost zhutou]# ll -d zhubao
drwxrwxrwx. 2 root root 6 4月   8 16:04 zhubao

2.将umask改为0123 新建文件则变为666-123=644(-rw-r--r--)文件结果遇到奇数加一偶数不变。

[root@localhost zhutou]# touch 123
[root@localhost zhutou]# ll 123
-rw-r--r--. 1 root root 0 4月   8 16:07 123

这样的umask只起到一个临时效果如果想要永久改变默认的话需写到/etc/profile文件下

[root@localhost zhutou]# vim /etc/profile   //写入profile文件里可永久有效
[root@localhost zhutou]# umask
0123

文件的特殊权限SUID、SGID、sticky bit

三种特殊权限

  1. suid:如果拥有该权限,把当前用户当做文件的属主

  2. guid:如果拥有该权限,把当前用户当成文件的属组

  3. stike:拥有该权限的文件夹,该文件内的文件只有超级管理员和属主可以删除其他人不可以删除。