类Unix系统,包括在Linode平台上运行的Linux系统,具有非常强大的访问控制系统,允许系统管理员有效地配置多个用户的访问权限,而无需给予每个用户所有访问权限。 chmod命令是修改这些文件权限的最佳的和最简单的方法。
该指南简要概述了文件权限和命令的操作chmod
。如果您觉得本指南有帮助,请参阅我们的基本管理实践指南以及Linux用户和组指南。
在本指南中,chmod
是指由GNU项目提供的最新版本。默认情况下,chmod
包含在Linode提供的所有系统镜像中,并且作为几乎所有基于Linux的操作系统发行版中软件包的最基本的一部分。
类Unix系统上的所有文件系统对象都有三种主要类型的权限:读取,写入和执行。权限授予三个可能的类:用户,用户组和所有系统用户。
要查看一组文件的文件权限,请使用:
ls -lha
在输出的第一列中,有10个字符表示权限位。要了解它们之所以被称为权限位的原因,请参阅下面的八进制表示法部分。
drwxr-xr-x 2 user group 4.0K 2009-08-13 10:16 docs
-rw-r--r-- 1 user group 8.1K 2009-07-09 16:23 roster.py
lrwxrwxrwx 2 user group 4.0K 2009-08-13 10:16 team.docs
理解本专栏含义的一种方法是将这些位分成组。
文件类型 | 用户 | 组 | 全局 |
---|---|---|---|
d 目录 | rwx | r-x | r-x |
- 常规文件 | rw- | r-- | r-- |
l 符号链接 | rwx | rwx | rwx |
第一个字符表示文件的类型。三个一组中的剩余九位分别表示用户,组和全局的权限。各个代表含义如下:
r
:读取w
:写入x
:执行请注意,符号链接所针对的文件的访问权限由目标文件控制,而不是链接对象的控制。还有其他文件权限可以控制文件的其他权限。
chmod
命令的格式为:
chmod [who][+,-,=][permissions] filename
请看以下chmod
命令:
chmod g+w ~/group-project.txt
这将授予所有拥有文件~/group-project.txt
的用户组的所有成员对该文件的写入权限。更改目标用户权限的其他选项包括:
单词 | 含义 |
---|---|
u | 用户 |
g | 组 |
o | 其他 |
a | 所有 |
+
授予权限,而-取消
权限。复制权限也可行:
chmod g=u ~/group-project.txt
该参数g=u
表示授予组与用户相同的权限。
可以通过用逗号分隔来为多个用户分配不同的权限,如下例所示:
chmod g+w,o-rw,a+x ~/group-project-files/
这会向用户组成员添加写入权限,并从系统的“其他”用户中删除读写权限。最后,a+x
将执行权限添加到所有类。该值也可以为+x
。如果未指定类,则权限将被添加到所有类或者从所有类移除。
在该表示法中,文件的所有者被称为user
(例如u+x
)。
chmod -R +w,g=rw,o-rw, ~/group-project-files/
该-R
选项会将修改应用于指定的目录及其所有内容。
设置权限的另一种方法是通过八进制表示法。
以下代码效果与chmod u=rwx,go=rx
相同。
chmod 750 ~/group-project.txt
该文件的权限是- rwx r-x ---
。
忽略第一个比特,每个被-
占用的比特可以被替换为0
而r
,w
或x
表示为1
。结果转换为:
111 101 000
这称为八进制表示法,因为二进制数通过使用数字0到7转换为base-8:
二进制 | 八进制 | 权限 |
---|---|---|
000 | 0 | - |
001 | 1 | -X |
010 | 2 | -W- |
011 | 3 | -wx |
100 | 4 | R- |
101 | 5 | RX |
110 | 6 | RW- |
111 | 7 | RWX |
每个数字独立于其他两个数字。因此,750
表示当前用户可以在组和其他人无法写入时进行读取,写入和执行。
744
,这是一个典型的默认权限,允许所有者读取,写入和执行,以及组和所有用户读取。
两种表示法都是等效的,您可以选择使用任意一种表单更清楚地表达您的权限需求。
以下示例更改了文件权限,使任何用户都可以执行文件“〜/ group-project.py”:
chmod +x ~/group-project.py
Unix系统上文件的默认权限通常是600
或644
。权限600
指所有者对文件具有完全读写权限,而其他用户无权访问该文件。权限644
指文件所有者具有读写权限,而系统上的组成员和其他用户只具有读取权限。
执行以下示例之一以恢复这些“默认”权限:
chmod 600 ~/roster.txt
chmod 644 ~/gigs.txt
对于可执行文件,700
和755
与600
和644
除了在执行权限方面其余均相同。
执行以下示例之一来恢复这些“默认”可执行权限:
chmod 700 ~/generate-notes.py
chmod 755 ~/regenerate-notes.py
在许多情况下,管理员和用户应限制对文件的访问,尤其是包含密码和其他敏感信息的文件。msmtp和Fetchmail(~/.msmtprc
和~/.fetchmailrc
)的配置文件是两个常见的示例。
您可以使用以下任意一种命令删除对这些文件的所有权限:
chmod 600 .msmtprc
chmod g-rwx,o-rwx .fetchmail
有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些资源是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或时效性。