命令介绍

chmod命令是用于修改文件或目录的权限的命令。它可以通过改变文件或目录的读、写、执行权限,来控制用户对文件或目录的访问权限。、

第一种: 使用数字修改文件权限

Linux 系统中,文件的基本权限由 9 个字符组成,以 rwxrw-r-x 为例,我们可以使用数字来代表各个权限,各个权限与数字的对应关系如下:

字母 对应的数字 含义 备注
r 4 -
w 2 -
x 1 执行 -

由于这 9 个字符分属 3 类用户,因此每种用户身份包含 3 个权限(r、w、x),通过将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限。

拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:

用户身份 字母权限 数字权限 含义 备注
所有者 rwx 4+2+1 = 7 可读可写可执行 -
所属组 rw- 4+2+0 = 6 可读可写不能执行 -
其他人 r-x 4+0+1 = 5 可读不可写可执行 -

所以,此权限对应的权限值就是 765。

命令格式

使用数字修改文件权限的 chmod 命令基本格式为: chmod [-R] 权限值 文件名

该命令常用的选项及各自的含义说明:

选项 含义 备注
-R 表示连同子目录中的所有文件,也都修改设定的权限。 -

命令实例

实例一:常规修改文件的权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 先查看 permission 目录的权限:
[root@ubuntu2204-101 ~ 07:39:31]# ls -dl permission/
drwxr-xr-x 3 veazhi veazhi 4096 Sep 8 07:06 permission/ # 755

# 只修改 permission 目录权限:
[root@ubuntu2204-101 ~ 07:39:41]# chmod 766 permission/

# 查看:
[root@ubuntu2204-101 ~ 07:40:32]# ls -ld permission/
drwxrw-rw- 3 veazhi veazhi 4096 Sep 8 07:06 permission/ # 766

# 查看子目录权限:
[root@ubuntu2204-101 ~ 07:40:37]# ls -ld permission/a/
drwxr-xr-x 3 veazhi veazhi 4096 Sep 8 07:06 permission/a/ # 755

实例二:递归修改文件的权限<

参数: -R,递归修改目录及目录下所有文件的权限

1
2
3
4
5
6
7
8
[root@ubuntu2204-101 ~ 07:40:46]# chmod -R 777 permission/

# 查看:
[root@ubuntu2204-101 ~ 07:45:57]# ls -dl permission/
drwxrwxrwx 3 veazhi veazhi 4096 Sep 8 07:06 permission/ # 777

[root@ubuntu2204-101 ~ 07:45:33]# ls -al permission/a/b/c/group
-rwxrwxrwx 1 veazhi veazhi 889 Sep 8 07:06 permission/a/b/c/group # 777

再举个例子,通常我们以 Vim 编辑 Shell 文件批处理文件后,文件权限通常是 rw-rw-r–(644),那么,如果要将该文件变成可执行文件,并且不让其他人修改此文件,则只需将此文件的权限该为 rwxr-xr-x(755)即可。

第二种: 使用字母修改文件权限

既然文件的基本权限就是 3 种用户身份(所有者、所属组和其他人)搭配 3 种权限(rwx),chmod 命令中用 u、g、o 分别代表 3 种身份,还用 a 表示全部的身份(all 的缩写)。另外,chmod 命令仍使用 r、w、x 分别表示读、写、执行权限。

命令格式

使用字母修改文件权限的 chmod 命令,其基本格式如下图所示。

命令实例

实例一:递归修改文件的权限

参数: -R,递归修改目录及目录下所有文件的权限

1
2
3
4
5
6
7
8
9
# 以字母的形式修改权限:
[root@ubuntu2204-101 ~ 07:46:32]# chmod -R u=rwx,g=rx,o=rx permission/

# 查看:
[root@ubuntu2204-101 ~ 08:07:58]# ls -ld permission/
drwxr-xr-x 3 veazhi veazhi 4096 Sep 8 07:06 permission/ # 755

[root@ubuntu2204-101 ~ 08:08:08]# ls -la permission/a/b/passwd
-rwxr-xr-x 1 veazhi veazhi 1961 Sep 8 07:06 permission/a/b/passwd # 755
1
2
3
4
5
6
7
8
9
[root@ubuntu2204-101 ~ 08:08:31]# chmod -R a+w permission/

# 修改之前的权限为 755,使用了 a+w 后,都变成了 777
[root@ubuntu2204-101 ~ 08:10:29]# ls -ld permission/
drwxrwxrwx 3 veazhi veazhi 4096 Sep 8 07:06 permission/ # 777

[root@ubuntu2204-101 ~ 08:10:35]# ls -al permission/a/b/c/group
-rwxrwxrwx 1 veazhi veazhi 889 Sep 8 07:06 permission/a/b/c/group # 777