chmod
命令用于改变文件或目录的权限。权限定义了谁可以读取、写入或执行文件或目录。chmod
命令通过修改文件或目录的权限位来工作,这些权限位定义了文件或目录的拥有者、组和其他用户的访问权限。
语法
chmod [选项]... 模式[,模式]... 文件...
chmod [选项]... 八进制模式 文件...
权限的表示方法
- 符号模式:使用
u
(用户)、g
(组)、o
(其他)、a
(所有)指定要更改权限的类别,以及+
(添加权限)、-
(删除权限)、=
(指定权限)来修改权限。例如,chmod u+x file
会给文件的所有者添加执行权限。 - 八进制模式:权限以三个八进制数字表示,分别代表文件所有者、所属组和其他人的权限。每个数字是读(4)、写(2)和执行(1)权限的总和。例如,
chmod 755 file
会设置文件所有者有读、写和执行权限,而组用户和其他用户只有读和执行权限。
示例
-
使用符号模式更改权限
chmod u+x,go-w file # 给文件所有者添加执行权限,并从组用户和其他用户中删除写权限 chmod a+r file # 给所有用户添加读权限
-
使用八进制模式更改权限
chmod 700 file # 文件所有者有读、写和执行权限,组用户和其他用户没有任何权限 chmod 644 file # 文件所有者有读和写权限,组用户有读权限,其他用户有读权限
数字权限使用格式
在这种使用方式中,首先我们需要了解数字如何表示权限。 首先,我们规定 数字 4 、2 和 1表示读、写、执行权限(具体原因可见下节权限详解内容),即 r=4,w=2,x=1 。此时其他的权限组合也可以用其他的八进制数字表示出来,
如:
rwx = 4 + 2 + 1 = 7
rw = 4 + 2 = 6
rx = 4 +1 = 5
即
若要同时设置 rwx (可读写运行) 权限则将该权限位 设置 为 4 + 2 + 1 = 7
若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置 为 4 + 2 = 6
若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为 4 +1 = 5
上面我们提到,每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。语法格式为 :
chmod <abc> file...
范例:
设置所有人可以读写及执行
chmod 777 file (等价于 chmod u=rwx,g=rwx,o=rwx file 或 chmod a=rwx file)
设置拥有者可读写,其他人不可读写执行
chmod 600 file (等价于 chmod u=rw,g=---,o=--- file 或 chmod u=rw,go-rwx file )
注意
- 只有文件或目录的所有者或具有适当权限的用户(如 root 用户)才能使用
chmod
命令更改权限。 - 使用
chmod
更改目录的权限时,也会影响在该目录下创建的新文件和目录的默认权限,但这取决于 umask 设置。 - 在某些系统上,特别是使用 SELinux 或 AppArmor 的系统,文件权限可能受到额外的安全策略的限制。
权限检查
要查看文件或目录的当前权限,可以使用 ls -l
命令。这将列出文件和目录的详细信息,包括权限、所有者、组和大小等信息。