ZhouJiatao's Blog

Linux权限

Unix-like(比如 Linux 和 OS X) 操作系统,有一个非常重要且根深蒂固的特性,那就是允许多用户。
比如,连接上网络,我们可以多人同时通过 ssh(secure shell) 登录并操作同一个系统。
Linux 通过 文件所有权(ownership) 和 访问权限(permissions) 保护文件的安全,避免文件被其他用户破坏。
我们用 owner、group、others 来区分不同等级的所有权, 并使用 Read(r)、Write(w)、Execute(x) 来区分不同的访问权限。组合起来,就可以限制不同等级的所有权拥有不同的访问权限。

前提:这里假设你已经知道用户和群组的概念和 ls 命令的基本用法。

查看文件权限

通过 ls 命令查看文件权限。

1
2
$ ls -l ./myfile
-r-xr-xr-x 1 zjt wheel 626272 Sep 14 08:57 myfile

让我们看看各部分的意思

1
2
3
4
-rwxr-xr-x 1 zjt wheel 626272 Sep 14 08:57 myfile
| | | | | | |
访问权限 连接数 拥有者 群组 文件大小 最后修改日期 文件名
(owner) (group)

聚焦到访问权限部分

1
2
3
4
- rwx r-x r-x
| | | |
文件类型 拥有者 群组 其他人
(type) (owner) (group) (others)

第一位是文件类型(type):

  • d 文件夹(directory)。
  • l 快捷键(link)。
  • - 常规文件。区别于文件夹和快捷键。

随后是 3 组字符集合,分别规定 拥有者、群组、其他人 的访问权限。每组集合包含 3 位字符,你可能会看到以下这些字符:

  • r 文件可读
  • w 文件可写
  • x 文件可执行
  • - 没有分配权限

所以,从该输出可以解读出这些权限信息:

  • 拥有者,即 zjt 用户,可以 读、写、执行(rwx) 该文件;
  • 群组 wheel 的用户,可以 读、执行(r-x) 该文件;
  • 其他人 可以 读、执行(r-x) 该文件;

修改文件的所有权 (ownership)

修改拥有者 (chown)

使用 chown 命令修改文件的拥有者 chmod username filename
超级管理员才能修改文件的拥有者。
示例: 修改文件 myfile, 使得它的拥有者为 hunter 用户。

1
2
3
$ su
Password:
# chown hunter myfile

修改群组 (chgrp)

使用 chgrp 命令修改文件所属群组 chgrp group filename
文件的拥有者才能修改群组。
示例: 修改文件 myfile,让它属于名为 TechnologyDepartment 的群组。

1
# chgrp TechnologyDepartment myfile

修改文件的权限 (chmod)

使用 chmod 命令修改文件的权限。
首先让我们认识以下字符:

  • 身份
    • u 即 user 的缩写,指文件的拥有者
    • g 即 group 的缩写,指文件所属群组
    • o 即 others 的缩写,指其他人(即不是拥有者,也不是群组)
    • a 即 all 的缩写,指所有人(拥有者、群组和其他人)
  • 操作符
    • + 增加权限
    • - 移除权限
    • = 指定唯一权限

Talk is cheap. Show me the code. — Torvalds, Linus (2000-08-25).

该让我们看看 ‘code’ 了…

以下是示例:

1
$ chmod u+w myfile

增加拥有者对 myfile 写的权限。

1
$ chmod g-w myfile

去除群组对 myfile 写的权限。

1
$ chmod o=r myfile

指定其他人对 myfile 只有读的权限(没有写和执行的权限)。

1
$ chmod a+r myfile

增加所有人对 myfile 读的权限。

1
$ chmod go+rx myfile

增加群组和其他人对 myfile 读和执行的权限。

相信你看完示例后,已经理解了 chmod 的用法。

如果你还有什么问题,希望你能写下留言。

参考链接:
Red Hat Enterprise Linux Step By Step Guide: 3.13. Ownership and Permissions
Understanding Linux File Permissions
linuxcommand.org: Permissions
An Introduction to Linux Permissions
鸟哥的Linux私房菜: 第六章、Linux 的文件权限与目录配置
学习 Linux,101: 管理文件权限和所有权