UNIX/Linux系统中,每个文件或目录都关联着3种类型的权限,这些权限控制着对它们的访问权限。这些权限是读取、写入和执行。这允许或防止用户读取文件或向文件写入。执行权限允许用户将文件作为脚本或可执行文件运行。
在本教程中,我们将学习Linux中的chmod命令。
什么是chmod命令
chmod命令用于更改Linux中文件系统对象(如文件和目录)的访问权限。它也用于更改特殊标志,如SUID、SGID和粘着位。
您可以使用ls -l
命令来检查由r、w和x表示的文件模式。
Linux文件权限
在Linux/Unix等类Unix操作系统中,每个文件和目录都由用户和组拥有。当我们谈论Linux文件权限时,涉及到文件所有者、组所有者和权限。
有三个基于用户的权限组:
- 所有者 - 拥有文件或目录的用户。默认情况下,当用户创建文件或目录时,相同的用户将成为其所有者。
- 组 - 拥有文件或目录的组。组中的所有成员将在文件或目录上具有相同的访问权限。
- 其他 - 不是文件或目录所有者且不属于组的用户。这意味着“所有人”或以另一种方式说的“世界”。
使用chown命令可以更改文件和目录的所有权。要仅更改文件或目录的组,可以使用chgrp命令。默认的文件和目录权限基于umask设置。
每个文件或目录有三种文件权限类型:
- 读取
- 写入
- 执行
字符表示读取是r
,表示写入是w
,表示执行是x
。
读取权限
文件的读取权限表示可以打开和读取文件。
目录(文件夹)的读取权限表示用户可以列出目录的内容。
写入权限
文件的写入权限表示可以更改文件(更改或修改)。
目录的写入权限表示可以更改目录内容。例如,用户可以在目录中创建新文件、删除或重命名文件。
执行权限
文件的执行权限表示可以执行文件。例如,用户可以执行程序或shell脚本文件。
目录的执行权限表示用户可以更改(cd)到目录。但这不会允许用户列出目录内容。
特殊权限模式
除了读取、写入和执行外,您还可以为文件和目录分配一些特殊权限模式。特殊权限模式包括SUID(setUID)、SGID(setGID)和粘着位。
当文件上设置了SUID位时,文件始终以拥有文件的用户身份运行,而不是以启动程序的用户身份运行。使用SUID的Linux命令的一个示例是ls -l /usr/bin/passwd
,当普通用户运行该命令时,会获得提升的特权。
当文件上设置了SGID时,有效组将设置为文件的组。在执行程序时,用户将获得文件组权限。
粘着位通常设置在目录上。一旦在目录上设置了粘着位,则该目录内的文件或目录只能由文件所有者或root更改。
如何在Linux中执行chmod
chmod使用符号模式或数字模式来指定权限。您需要root、文件所有者或sudo用户特权才能更改文件权限。
使用数字模式更改文件/目录权限的chmod
chmod数字模式也称为绝对模式。这是最常用的方法。
读取、写入和执行分配具有特定值的数字,如下所示:
- 读取权限:4
- 写入权限:2
- 执行权限:1
这些数字可以组合在一起来表示权限组合,例如:
- 读取和写入权限:4+2=6
- 读取、写入和执行权限:4+2+1=7
然后,将这些数字用于每个用户类别的权限组合,例如:
- 文件所有者:7
- 文件所属组:6
- 其他用户:5
要使用数字模式更改文件/目录权限,请按照以下步骤操作:
ls -l
命令查看文件/目录的当前权限。chmod 700 filename
。ls -l
命令检查文件/目录的新权限是否已应用。使用符号模式更改文件/目录权限的chmod
符号模式是根据当前权限状态和指示符更改文件/目录权限的一种方法。符号模式包括以下指示符:
+
添加权限-
删除权限=
设置权限
符号模式还使用以下字符表示用户类别:
u
文件所有者g
文件所属组o
其他用户a
所有用户
要使用符号模式更改文件/目录权限,请按照以下步骤操作:
ls -l
命令查看文件/目录的当前权限。chmod u+rwx filename
。ls -l
命令检查文件/目录的新权限是否已应用。有用的chmod命令示例
让我们通过数字和符号方法检查一些使用chmod命令更改权限的示例。
chmod 755 目录名
这相当于 chmod u=rwx,go=rx
。为所有者设置读、写和执行权限(完全权限),为其他用户设置读和执行权限。
chmod +x 文件名
这相当于 chmod ugo+x
或 chmod u+x,g+x,o+x
。为所有者、组和其他用户设置执行权限。
chmod 750 目录名
这相当于 chmod u+rwx,g=rx,o=
。为所有者设置完全权限,为组设置读和执行权限,为其他用户设置无权限。
chmod u+rwx 目录名
忽略所有权限,为所有者设置读、写和执行权限。
chmod -R 700 目录名
递归地为目录的所有者设置完全权限。
chmod go-rwx 文件名
从文件中删除组和其他用户的读、写和执行权限。
chmod 644 文件名
为所有者分配读和写权限,并为文件的组和其他用户分配只读权限。
chmod g+x 文件名
将组成员的执行权限分配给文件。
chmod go-rw 文件名
为文件删除用户和组类的读和写权限。
结论
在本教程中,我们学习了Linux中的chmod命令。我们已经学习了Linux权限以及如何更改它们。