Linux 中的文件或目录拥有 3 中角色:
- 所有者
- 所属群组
- 其他人
这三种角色都分别有不同的权限。
Linux 用户账号密码以及群组的记录文件位置
① 账号以及一般使用者还有 root 用户的相关信息记录在/etc/passwd。
② 个人的账号密码记录在/etc/shadow。
③ 组名信息记录在/etc/group。
Linux 的文件属性
可以使用 ls -al 进行查看:
可以发现, 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参数进行递归修改。
使用符号类型来修改权限
文件或目录拥有的 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命令进入该目录