Linux 中的文件或目录拥有 3 中角色:
  • 所有者
  • 所属群组
  • 其他人

这三种角色都分别有不同的权限。


Linux 用户账号密码以及群组的记录文件位置

① 账号以及一般使用者还有 root 用户的相关信息记录在/etc/passwd
Linux——权限设置

② 个人的账号密码记录在/etc/shadow
Linux——权限设置

③ 组名信息记录在/etc/group
Linux——权限设置


Linux 的文件属性

可以使用 ls -al 进行查看:
Linux——权限设置
可以发现, Linux 的文件属性可以分成 7 部分:

① 第一部分表示文件的类型和权限:

共由 10 个字符组成:
第 1 个字符表示这个文件的类型:

  • d:目录
  • -:文件
  • l:连接文件,即快捷方式
  • b:可供存储的接口设备,如 /dev/sda
  • c:串行接口设备,如鼠标、键盘
  • s:数据接口文件,资料接口文件,通常被用在网络上的数据惩戒,在 /var/run 中可以看到
  • p:数据输送文件,主要目的是解决多个程序同时存取一个文件造成的错误问题

后面的 9 个字符,以 3 个为一组分别表示文件所有者文件所属群组以及其他人的权限:

  • 第 1 组(即第 2 - 4 个字符):文件所有者拥有的权限
  • 第 2 组 (即第 5 - 7 个字符):文件所属群组拥有的权限
  • 第 3 组(即第 8 - 10 个):其他人拥有的权限

文件的权限且 rwx 这三个参数组成

  • r 表示可读,可用 4 代替(后面修改权限时会用到)。
  • w 表示可写,可用 2 代替。
  • x 表示可执行,可用 1 代替。
  • - 表示无此权限。

如:drwxr-xr--

  • d 表示这是一个目录
  • rwx 表示文件的所有者拥有可读可写可执行的权限
  • r-x 表示文件所属群组拥有可读可执行,不可写权限
  • r-- 表示其他人拥有可读,但不可写不可执行的权限
②第 2 栏表示有多少文件在此目录下

若是文件则一般只有 1;若是目录则视情况而定。

③ 第 3 栏表示这个 文件或目录 的拥有者
④ 第 4 栏表示这个 文件或目录 的所属群组
⑤ 第 5 栏表示这个文件的 大小,默认单位为 bytes
⑥ 第 6 栏表示这个文件的 创建日期 或 最近修改日期

若太久没被改动,则可能只会显示年份,若想显示完整的时间格式,可以使用命令:ls -l --full-time

⑦ 第 7 栏表示这个文件的 文件名

修改文件所属群组:chgrp

可以使用 chgrp 命令来修改文件所属群组,但是修改后的组名必须在/etc/group文件中存在才行。

如:将 a.txt 的群组更改为 users 组:
chgrp users a.txt

可以加一个参数-R 表示对目录的所属群组进行递归修改,即在此目录下的所有文件和目录的群组都要做相应的修改。
将 test 目录下的所有文件和目录的群组都改为 users 组:
chgrp -R users /test


更改文件的所有者:chown

可以使用 chown 命令来修改文件的所有者,但是修改后的用户名必须是已经存在系统中的账号,也就是在 /etc/passwd 文件中有记录的用户名称。

如:将 a.txt 的所有者改为 yt:
chown yt a.txt

同样的,也可以加上 -R 参数进行递归,将某个目录下的所有文件和目录的所有者都进行修改。
将 test 目录下的所有文件和目录的所有者都改为 yt:
chown -R yt /test


更改文件的权限:chmod

可以使用两种方式来改变一个文件或目录的权限:

  • 使用数字来修改,即(r:4、w:2、x:1)
  • 使用符号
① 使用数字类型来修改权限
  • 可读(r)可用数字 4 表示;
  • 可写(w)可用数字 2 表示;
  • 可执行(x)可用数字 1 表示

然后将 3 中角色(即文件所有者、文件所属目录、其他人)的读写权限的数值形式的值相加再分别赋予即可。

如:修改 a.txt 的文件权限:

  • 将文件所有者的权限改为可读可写可执行:4 + 2 + 1 = 7
  • 将文件所属群组的权限改为可读可执行,不可写:4 + 0 + 1 = 5
  • 将其他人的权限改为可读,不可写不可执行:4 + 0 + 0 = 4

通过以上的分析,就可以通过命令进行修改 a.txt 的权限:
chmod 754 a.txt

同样可以使用-R参数进行递归修改。

使用符号类型来修改权限

Linux——权限设置
文件或目录拥有的 3 中角色:

  • 所有者:user
  • 所属群组:group
  • 其他人:others
  • 以上 3 种身份都包括:all

那么就可以使用符号来代表上面的 4 中情况:

  • 所有者:u
  • 所属群组:g
  • 其他人:o
  • 以上所有身份:a

用符号来代表读写执行 3 中权限:

  • 读权限:r
  • 写权限:w
  • 执行权限:x

用符号来代表对权限的增加、删除和修改

  • 添加权限:+
  • 删除权限:-
  • 设定权限:=

通过一些例子来说明:
① 将一个文件的权限设定为 rwxr-xr–(即所有者可读可写可执行、所属群组可读可执行不可写、其他人可读不可写不可执行):
chmod u=rwx,g=rx,o=r test.txt

② 若不知道文件原先属性,想将全部人(所有者、所属群组、其他人)的权限都添加可读权限:
chmod a+r test.txt

③ 给文件的所属群组添加可执行权限:
chmod g+x test.txt

④ 给文件的所有者除去可读权限
chmod u-r test.txt


权限对文件的意义

  • 读权限(r):可读取此文件的实际内容,如读取文本文件的文字内容等
  • 写权限(w):可以编辑、新增或是修改该文件的内容,但不含删除该文件
  • 执行权限(x):该文件具有可以被系统执行的权限

权限对目录的意义

  • 读权限(r):表示具有读取目录结构列表的权限。因此若具有 读取 一个目录的权限时,表示可以查 询该目录下的文件名数据,即可以使用 ls 命令将该目录的内容列表显示出来

  • 写权限(w):若具有对目录的写权限,则说明:
    ① 可以在该目录下建立新的文件和目录
    ② 可以删除该目录下已经存在的文件和目录
    ③ 可以将该目录下已经存在的文件或目录更名
    ④ 可以移动该目录内的文件和目录的位置
    由此可见,目录写权限特别重要,不可随便的赋予。

  • 执行权限(x):表示用户能否进入该目录成为工作目录,即能否使用 cd 命令进入该目录

相关文章: