Unix-like(比如 Linux 和 OS X) 操作系统,有一个非常重要且根深蒂固的特性,那就是允许多用户。
比如,连接上网络,我们可以多人同时通过 ssh(secure shell) 登录并操作同一个系统。
Linux 通过 文件所有权(ownership) 和 访问权限(permissions) 保护文件的安全,避免文件被其他用户破坏。
我们用 owner、group、others 来区分不同等级的所有权, 并使用 Read(r)、Write(w)、Execute(x) 来区分不同的访问权限。组合起来,就可以限制不同等级的所有权拥有不同的访问权限。
前提:这里假设你已经知道用户和群组的概念和 ls 命令的基本用法。
查看文件权限
通过 ls 命令查看文件权限。
|
|
让我们看看各部分的意思
|
|
聚焦到访问权限部分
|
|
第一位是文件类型(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 用户。
|
|
修改群组 (chgrp)
使用 chgrp 命令修改文件所属群组 chgrp group filename。
文件的拥有者才能修改群组。
示例: 修改文件 myfile,让它属于名为 TechnologyDepartment 的群组。
|
|
修改文件的权限 (chmod)
使用 chmod 命令修改文件的权限。
首先让我们认识以下字符:
- 身份
- u 即 user 的缩写,指文件的拥有者
- g 即 group 的缩写,指文件所属群组
- o 即 others 的缩写,指其他人(即不是拥有者,也不是群组)
- a 即 all 的缩写,指所有人(拥有者、群组和其他人)
- 操作符
- + 增加权限
- - 移除权限
- = 指定唯一权限
Talk is cheap. Show me the code. — Torvalds, Linus (2000-08-25).
该让我们看看 ‘code’ 了…
以下是示例:
|
|
增加拥有者对 myfile 写的权限。
|
|
去除群组对 myfile 写的权限。
|
|
指定其他人对 myfile 只有读的权限(没有写和执行的权限)。
|
|
增加所有人对 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: 管理文件权限和所有权