

Linux chmod 命令修改文件目录权限
source link: https://www.myfreax.com/chmod-command-in-linux/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.


Linux chmod 命令修改文件目录权限
在 Linux ,对文件的访问是通过文件权限、属性和所有权来验证。这确保只有授权的用户和进程才能访问文件和目录。
本教程介绍如何使用 chmod
命令修改文件和目录的访问权限。
Linux 文件权限
在继续之前,让我们解释一下基本的 Linux 权限模型。在 Linux ,每个文件都与一个所有者和一个组相关联,并为三类不同的用户分配访问权限:
- 文件所有者。
每个文件都有的三种权限类型:
- 读取权限。
- 执行权限。
此概念允许您指定允许哪些用户读取文件、写入文件或者执行文件。你可以使用 ls
命令查看文件权限 :
ls -l filename.txt
-rw-r--r-- 12 myfreax users 12.0K Apr 8 20:51 filename.txt
|[-][-][-]- [------] [---]
| | | | | | |
| | | | | | +-----------> 7. 组Group
| | | | | +-------------------> 6. 所有者Owner
| | | | +--------------------------> 5. 访问方法 Access Method
| | | +----------------------------> 4. 其它人权限 Others Permissions
| | +-------------------------------> 3. 组权限 Group Permissions
| +----------------------------------> 2. 所有者 Owner Permissions
+------------------------------------> 1. 文件类型 File Type
第一个字符显示文件类型。它可以是普通文件 -
、目录 d
、符号链接 l
或任何其他特殊类型的文件。
接下来的九个字符代表文件权限,三个三元组,每个元组包含三个字符。第一个三元组显示所有者权限。
第二个三元组显示组权限,最后一个三元组显示其他人权限。根据文件类型的不同,权限可能具有不同的含义。
上面示例例中的 rw-r--r--
表示文件拥有有读写权限 rw-
,组和其他人只有读权限 r--
。
三个权限三元组中的每一个都可以由以下字符构成,并且具有不同的效果,具体取决于它们是为文件还是目录设置。
权限对文件的影响
权限 | 字符 | 含义 |
---|---|---|
读 | - |
这个文件不可读,也意味着不能够查看文件内容 |
r |
文件可读。 | |
写 | - |
文件不可写,也不能修改 |
w |
文件可以被修改或者写入 | |
执行 | - |
文件不可以被执行 |
x |
文件可以被执行 | |
s |
如果在 user(用户) 三元组中找到 s 表示文件已设置 setuid 位。如果在 group(Linux 组) 三元组中找到 s,则表示文件已设置 setgid 位。这也意味着可执行权限已设置。 当在可执行文件设置 setuid 或 setgid 标志时,文件将以文件的所有者或组权限执行。 | |
S |
和 s 一样,但可执行权限没有被设置,这个标志很少使用在文件上 | |
t |
如果在 others(其它人) 三元组中找到它设置 t ,也就是已设置 sticky 位。 这也意味着已设置文件的可执行权限。此标志对文件无用。 | |
T |
与 t 相同,但未设置可执行权限。此标志对文件无用。 |
权限对目录(文件夹)的影响
在 Linux 中,目录是包含其他文件和目录的特殊类型的文件。
权限 | 字符 | 含义 |
---|---|---|
读 | - |
目录的内容不可见 |
r |
目录内容可见。 例如你可以在目录内部使用 ls 命令列出文件的内容 |
|
写 | - |
无法修改目录内容 |
w |
目录的内容可以更改。 例如 创建文件 或者删除文件 删除文件 等等 |
|
执行 | - |
不能使用 cd 命令切换目录 |
x |
可以使用 cd 命令切换到目录 | |
s |
如果在 user 三元组中找到 s,则目录已设置 setuid 位。如果在 group 三元组中找到 s 则表示已设置 setgid 位。这也意味着可执行权限已设置。当在目录设置 setgid 标志时,在目录创建的文件将继承目录组 GID,而不是创建文件的用户主要组 ID。 setuid 对目录没有影响。 | |
S |
与 s 相同,但未设置可执行权限。 此标志在目录上没有用。 | |
t |
如果在其他人三元组中找到,它会设置粘性位。 这也意味着设置可执行权限。 当在目录设置粘性位时,只有文件所有者、目录所有者或管理用户可以删除或重命名目录中的文件。 | |
T |
与 t 相同,但未设置可执行权限。 此标志在目录上没用。 |
chmod 命令
chmod
命令的语法形式 chmod [OPTIONS] MODE FILE...
。MODE
是权限的模式 ,FILE...
可以是一个或者多个文件与目录,[OPTIONS]
chmod 命令的选项,是可选参数。
chmod 命令允许您使用符号或数字模式或参考文件修改改文件的权限。 我们将在本文后面更详细地解释这些模式。当使用 chmod 命令修改多个文件与目录时 请使用空格分隔多个文件与目录。
只有 root、文件所有者或具有 sudo 权限的用户才能更修改文件的权限。使用 chmod
时要格外小心,尤其在递归修改权限时。
chmod [OPTIONS] MODE FILE...
使用符号模式时 chmod
命令的语言法式如下:
chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...
第一组参数 [ugoa…]
,即用户类型的参数,确定修改文件权限的用户类别,[]
中括号表示参数是可选的。
u
- 文件所有者。g
- 组。o
- 其它人。a
- 所有用户,与同时指定ugo
一样。
如果省略[ugoa…]
参数,则默认为所有用户并且由 umask 设置的权限不受影响。
第二组参数 [-+=]
,操作权限的参数,定义是否要删除、添加或设置权限,[]
中括号表示参数是可选的:
-
删除指定的权限。+
添加指定的权限。=
将当前权限改为指定权限。如果在符号后没有指定权限=
,则删除指定用户类的所有权限。
可以使用字母 r、w、x、X、s 和 t 中的零个,一个或多个来设置权限 perms...
参数。使用单个字母 u、g 和 o 为指定类别的用户设置权限。
当为多个种用户类型设置权限时,请使用逗号分隔多个符号模式。下面的一些示例展示如何在符号模式下使用 chmod
命令。
授予组成员读取文件的权限,但不能写入和执行它:
chmod g=r filename
删除所有用户的执行权限:
chmod a-x filename
递归删除其他用户的写权限:
chmod -R o-w dirname
删除除文件所有者之外的所有用户的读、写和执行权限:
chmod og-rwx filename
同样的事情也可以通过使用下面的命令来完成:
chmod og= filename
授予文件所有者读取、写入和执行权限,授予文件组读取权限,不授予其他用户权限:
chmod u=rwx,g=r,o= filename
将文件的所有者权限添加到文件组成员权限中:
chmod g+u filename
向指定目录添加粘性位:
chmod o+t dirname
使用数字模式时 chmod
命令的语言法式如下:
chmod [OPTIONS] NUMBER FILE...
使用数字模式时,您可以同时设置所有者、组和所有其他人的权限。参数 NUMBER
可以是 3 位或 4 位数字。
当使用 3 位数字时,第一位代表文件所有者的权限,第二位代表文件的组,最后一位代表所有其他用户。
指定用户类型的权限都可以使用权限值的总和表示。写入、读取和执行权限都可以使用数值表示:
r
(读)= 4w
(写)= 2x
(执行)= 1- 无权限 = 0
要以数字模式设置文件的权限,只需计算指定用户类别的总数即可。例如,要授予文件所有者读取、写入和执行权限,授予组的读取和执行权限,而只授予其他用户读取权限,您可以执行以下操作:
- 所有者:rwx=4+2+1=7
- 组:rx=4+0+1=5
- 其他人:rx=4+0+0=4
使用上面的方法,我们得出数值是 754
,它代表要设置的权限。
要设置 setuid
、setgid
和 sticky bit
粘性位,请使用四位数字。当使用 4 位数字时,第一位数字的含义如下:
- setuid =4
- setgid =2
- sticky =1
- 没有变化 = 0
接下来的三个数字与使用 3 位数字时的含义相同。如果首位是 0 则可以省略,模式可以用 3 位表示。数字模式 0755
与 755
相同。
要计算数字模式,您还可以使用另一种二进制方法,但它稍微复杂一些。对于大多数用户来说,知道如何使用 4、2 和 1 计算数值模式就足够。
您可以使用 stat
命令以数字或者符号模式查看文件的权限 :
stat -c "%a" filename
644
以下是如何在数字模式下使用 chmod
命令的一些示例:
授予文件所有者读写权限,仅授予组成员和其他用户读取权限:
chmod 644 dirname
授予文件所有者读、写和执行权限,授予组成员读取和执行权限,不授予其他用户权限:
chmod 750 dirname
为指定目录设置读、写和执行权限,以及粘性位:
chmod 1777 dirname
递归修改文件所有者读取、写入和执行权限,而不为目录的其他用户和组设置权限:
chmod -R 700 dirname
使用参考文件
--reference=ref_file
选项允许您将文件的权限设置为与指定参考文件 ref_file
的权限相同。
chmod --reference=REF_FILE FILE
例如,以下 chmod 命令将权限分配 file1
给 file2
。
chmod --reference=file1 file2
递归修改文件权限
要对指定目录下所有文件和目录进行递归操作,请使用chmod 命令的 -R
( --recursive
) 选项:
chmod -R MODE DIRECTORY
例如,要修改 /var/www
目录下所有文件和子目录的权限为 755
,您可以运行以下命令:
chmod -R 755 /var/www
符号链接权限
符号链接始终具有 777
权限。默认情况下,当修改符号链接的权限时,chmod
将更改链接指向的文件的权限。
chmod 755 symlink
很有可能您不不能够修改目标文件的所有权,而是会收到 cannot access ‘symlink’: Permission denied 的错误。不能够访问软链接,权限拒绝。
出现此错误是因为在大多数 Linux 发行版中默认情况下符号链接是受保护的,您无法对目标文件进行操作。
此选项在 /proc/sys/fs/protected_symlinks
中指定。1
表示启用和 0
禁用。建议不要禁用符号链接的保护。
批量更改文件权限
有时,在某些情况下,您需要批量修改文件和目录权限。最常见的场景是递归修改网站文件的权限为 644
和目录的权限为 755
。
使用数值方法:
find /var/www/my_website -type d -exec chmod 755 {} \;
使用符号方法:
find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;
find
命令将搜索 /var/www/my_website
的文件和目录,并将找到的每个文件和目录传递给 chmod
命令设置权限。
chmod
命令用于修改文件的权限。可以使用符号或数字模式设置权限。要了解更多信息,请访问 chmod
手册页。如果您有任何问题或反馈,请随时发表评论。
微信公众号
支付宝打赏

Recommend
-
5
Llinux文件目录权限及chmod命令简析Jager · 4月22日 · 2014年chmod ·
-
3
为了防止在 Linux 系统中意外删除一些重要文件或目录,除了必要的备份之外,还有一个好方法,就是使用chattr(Change Attribute)命令在类 Unix 等发行版中,该命令能够有效防止文件和目录被意外的删除或...
-
5
使用 find 命令在 Linux 上查找文件和目录 | Linux 中国学习 find 命令的原因有很多。来源:https://linux.cn/article-1407...
-
7
迷途小书童的Note chmod 命令用来改变文件或目录的权限,只有文件的属主和超级用户才能执行这个...
-
4
chmod Linux 递归修改文件的权限 权限拒绝Permission deny错误时。通常,可以通过设置正确的文件权限或所有权来解决与权限不足的错误
-
11
zip Linux zip命令压缩文件和目录 Zip是使用最广泛的存档文件格式,它支持无损数据压缩 ...
-
1
chgrp Linux chown 命令修改文件目录所有权 chown命令用于修改指定文件目录或符号链接所有权 ...
-
6
文件的权限属性 在 linux 中,每个文件都有唯一的“所属者”(user)和“所属群组”(group)。owner 和 group 都对文件有特殊的权限 输入ls -l,就可以详细查看每个文件的权限属性。
-
14
如果你不了解权限,那么永远都不要chmod 777。 在Linux中,对文件的访问由操作系统使用文件权限、属性和所有权进行控制。 每个文件由特定用户和组拥有,并为三种不同类别的用户分配权限访问权限:
-
10
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK