chmod 命令是 Linux 和 macOS 中用来改变文件或目录权限的命令。它的全称是 change mode,用来控制谁可以访问文件或目录以及他们可以做什么(读取、写入、执行)。
语法代码语言:javascript代码运行次数:0运行复制chmod [选项] [权限设置] [文件/目录]1. 权限的组成文件权限通常有三个部分:所有者、所在组 和 其他用户。每个部分都可以设置三种权限:读取(r)、写入(w)、执行(x)。
r:读取权限,数字值为 4。w:写入权限,数字值为 2。x:执行权限,数字值为 1。例如,对于一个文件,权限可以是:
rwx(读取、写入、执行):数字值 7(4+2+1)rw-(读取、写入):数字值 6(4+2)r--(读取):数字值 4---(没有权限):数字值 0这三个部分分别对应:
文件所有者(User)文件所属用户组(Group)其他用户(Others)2. 权限的设置方式权限可以通过两种方式设置:符号方式和数字方式。
(1) 符号方式符号方式使用 r、w、x 来表示权限,用 +、- 来表示增加或删除权限,用 = 来指定确切的权限。
+:添加权限-:去掉权限=:设置为指定权限(覆盖现有权限)例子: 增加文件所有者的执行权限:
chmod u+x 文件名
去掉文件所属用户组的写入权限:
chmod g-w 文件名
为其他用户设置读取和执行权限:
chmod o+rx 文件名
为文件所有者、用户组和其他用户设置完全权限:
chmod a=rwx 文件名
这里 a 表示所有用户(all),rwx 表示赋予所有权限。
(2) 数字方式数字方式使用一个三位数的数字来表示权限。每个数字表示一个权限组(所有者、所属组、其他用户)的权限,数字的含义前面已经提到过。
rwx = 7(4 + 2 + 1)rw- = 6(4 + 2)r-- = 4(4)--- = 0例子: 为所有者赋予读写执行权限,为所属组赋予读执行权限,为其他用户赋予读权限:
chmod 755 文件名
解释:7 是所有者的权限(rwx),5 是所属组的权限(r-x),5 是其他用户的权限(r-x)。
为所有者赋予读写权限,为所属组和其他用户赋予读权限:
chmod 644 文件名
解释:6 是所有者的权限(rw-),4 是所属组的权限(r--),4 是其他用户的权限(r--)。
给文件设置没有任何权限:
chmod 000 文件名
3. 常用选项 -R:递归地更改目录及其内容的权限。
例子:递归地为目录 mydir 及其中的所有文件和子目录设置权限:
chmod -R 755 mydir
-v:显示每个更改的详细信息。
例子:
chmod -v 755 文件名
--reference=文件:将一个文件的权限应用到另一个文件。
例子:将 file1 的权限应用到 file2:
chmod --reference=file1 file2
4. 实际示例假设有一个名为 myfile.txt 的文件,当前你希望进行以下更改:
让文件的所有者能够读、写、执行该文件,用户组和其他用户只能读取:
chmod 744 myfile.txt
让文件的所有者能读写文件,所属组和其他用户有读取和执行权限:
chmod 755 myfile.txt
递归地更改 mydir 目录和其中所有文件的权限为所有者可以读写,组用户和其他用户只能读取:
chmod -R 744 mydir
5. 总结chmod 是一个非常强大的命令,可以让你灵活地控制文件和目录的访问权限。根据需要,使用符号方式或者数字方式来设置不同的权限,确保文件和目录的安全性和可访问性。