如何在Linux上使用chmod命令

Linux笔记本电脑上的程式化终端提示Fatmawati Achmad Zaenuri / Shutterstock.com

控制谁可以使用Linux访问文件,搜索目录和运行脚本 CHMOD 命令。此命令修改Linux文件权限,乍一看看起来很复杂,但一旦你知道它们是怎样工作的,它们实际上非常简单。

chmod修改文件权限

在Linux中,可以通过多组权限控制谁可以对文件或目录执行操作。有三组权限。一组用于文件的所有者,另一组用于文件组的成员,最后一组用于其他所有人。

权限控制可以对文件或目录执行的操作。它们允许或阻止文件被读取,修改,或者如果是脚本或程序,则执行。对于目录,权限管理谁可以 光盘 进入目录,谁可以创建或修改目录中的文件。

你用的是 CHMOD 用于设置其中每个权限的命令。要查看在文件或目录上设置了哪些权限,我们可以使用 LS

查看和了解文件权限

我们可以使用 -l (长格式)选项 LS 列出文件和目录的文件权限。

ls -l

在终端窗口中输出ls -l

在每一行上,第一个字符标识正在列出的条目类型。如果是破折号(-)它是一个文件。如果是这封信 d 这是一个目录。

接下来的九个字符代表三组权限的设置。

  • 前三个字符显示拥有该文件的用户的权限(用户权限)。
  • 中间三个字符显示文件组成员的权限(组权限)。
  • 最后三个字符显示不在前两个类别中的任何人的权限(其他权限)。

每组权限中有三个字符。字符是存在或不存在其中一个权限的指示符。它们要么是破折号(-)或一封信。如果字符是破折号,则表示未授予权限。如果角色是 [Rw ^或者 X,该许可已被授予。

这些字母代表:

  • r:读取权限。可以打开文件,查看其内容。

  • w:写权限。可以编辑,修改和删除该文件。

  • x:执行权限。如果文件是脚本或程序,则可以运行(执行)。

例如:

  • --- 表示根本没有授予任何权限。
  • RWX 表示已授予完全权限。读,写和执行指标都存在。

在我们的屏幕截图中,第一行以a开头 d。此行指的是名为“archive”的目录。目录的所有者是“dave”,目录所属的组的名称也称为“dave”。

接下来的三个字符是此目录的用户权限。这些表明所有者拥有完全权限。该 [Rw ^,和 X 人物都存在。这意味着用户dave具有该目录的读,写和执行权限。

第二组三个字符是组权限,这些是 R-X。这些表明dave组的成员具有此目录的读取和执行权限。这意味着他们可以在目录中列出文件及其内容,他们可以 光盘 (执行)到该目录。它们没有写入权限,因此无法创建,编辑或删除文件。

最后一组三个字符也是 R-X。这些权限适用于不受前两组权限管理的人员。这些人(称为“其他人”)对此目录具有读取和执行权限。

因此,总而言之,组成员和其他人具有读取和执行权限。所有者(名为dave的用户)也具有写入权限。

对于所有其他文件(除了mh.sh脚本文件),dave和dave组的成员对文件具有读写属性,而其他文件只具有读权限。

对于mh.sh脚本文件的特殊情况,所有者dave和组成员具有读取,写入和执行权限,而其他成员仅具有读取和执行权限。

了解权限语法

使用 CHMOD 要设置权限,我们需要告诉它:

  • 谁:我们为谁设置权限。

  • 什么:我们正在做出哪些改变?我们是否添加或删除了权限?

  • 其中:我们设置了哪些权限?

我们使用指标来表示这些值,并形成简短的“权限声明”,例如 U + X,其中“u”表示“用户”(who),“+”表示添加(what),“x”表示执行权限(which)。

我们可以使用的“谁”值是:

  • u:用户,表示文件的所有者。

  • g:组,表示文件所属组的成员。

  • o:其他人,意思是不受人治的人 üG 权限。

  • a:全部,意思是以上所有。

如果没有使用这些, CHMOD 表现得好像“一个“已被使用过。

我们可以使用的“什么”值是:

  • – :减号。删除权限。

  • +:加号。授予权限。该权限将添加到现有权限中。如果您想拥有此权限并且仅设置此权限,请使用 = 选项,如下所述。

  • =:等号。设置权限并删除其他人。

我们可以使用的“哪个”值是:

  • r:读取权限。

  • w:写入权限。

  • x:执行权限。

设置和修改权限

假设我们有一个文件,每个人都拥有完整的权限。

ls -l new_ file.txt

ls -l new_ file.txt在终端窗口中

我们希望用户dave具有读写权限,并且组和其他用户只具有读取权限。我们可以使用以下命令:

chmod u = rw,og = r new_file.txt

在终端窗口中chmod u = rw,og = r new_file.txt

使用“=”运算符意味着我们删除任何现有权限,然后设置指定的权限。

让我们检查一下这个文件的新权限:

ls -l new_file.txt

ls -l new_ file.txt在终端窗口中

已删除现有权限,并且已按照我们的预期设置了新权限。

怎样在不删除现有权限设置的情况下添加权限?我们也可以轻松地做到这一点。

假设我们有一个已经完成编辑的脚本文件。我们需要让它对所有用户都可执行。它的当前权限如下所示:

ls -l new_script.sh

ls -l new_script.sh在终端窗口中

我们可以使用以下命令为每个人添加执行权限:

chmod a + x new_script.sh

chmod a + x new_script.sh在终端窗口中

如果我们查看权限,我们会看到执行权限现在已授予所有人,现有权限仍然存在。

ls -l new_script.sh

ls -l new_script.sh在终端窗口中

如果没有“a + x”语句中的“a”,我们可以实现同样的目标。以下命令也可以正常工作。

chmod + x new_script.sh

设置多个文件的权限

我们可以同时对多个文件应用权限。

这些是当前目录中的文件:

ls -l

ls -l在终端窗口中

假设我们要从具有“.page”扩展名的文件中删除“其他”用户的写入权限。我们可以使用以下命令执行此操作:

chmod o-r * .page

在终端窗口中输入chmod o-r * .page

我们来看看它有什么影响:

ls -l

ls -l在终端窗口中

我们可以看到,已从“其他”类别的用户的“.page”文件中删除了读取权限。没有其他文件受到影响。

如果我们想要在子目录中包含文件,我们可以使用 -R (递归)选项。

chmod -R o-r * .page

数字速记

另一种使用方式 CHMOD 是以三位数字的形式提供您希望提供给所有者,组和其他人的权限。最左边的数字表示所有者的权限。中间数字表示组成员的权限。最右边的数字代表其他人的权限。

此处列出了您可以使用的数字及其代表的数字:

  • 0:(000)没有许可。
  • 1:(001)执行权限。
  • 2:(010)写入权限。
  • 3:(011)写入和执行权限。
  • 4:(100)读取权限。
  • 5:(101)读取和执行权限。
  • 6:(110)读写权限。
  • 7:(111)读,写和执行权限。

三个权限中的每一个都由十进制数的二进制等效项中的一个位表示。所以5,二进制101,意味着读和执行。 2,二进制为010,表示写入权限。

使用此方法,您可以设置您希望拥有的权限;您不会将这些权限添加到现有权限。因此,如果读取和写入权限已经到位,则必须使用7(111)来添加执行权限。使用1(001)将删除读取和写入权限并添加执行权限。

让我们在其他类别的用户的“.page”文件中添加读取权限。我们还必须设置用户和组权限,因此我们需要将它们设置为已经存在的权限。这些用户已具有读写权限,即6(110)。我们希望“其他人”具有读取和权限,因此需要将其设置为4(100)。

以下命令将完成此任务:

chmod 664 * .page

chmod 664 * .page在终端窗口中

这将我们为用户,组成员和其他人所需的权限设置为我们所需的权限。用户和组成员将其权限重置为已有的权限,其他用户已恢复读取权限。

ls -l

ls -l在终端窗口中

高级选项

如果您阅读了手册页 CHMOD 你会看到有一些与SETUID和SETGID位相关的高级选项,以及限制删除或“粘滞”位。

对于你需要的99%的案例 CHMOD 因为,这里描述的选项将涵盖你。

body #primary .entry-content ul#nextuplist list-style-type:none; margin-left:0px; padding-left:0px;
body #primary .entry-content ul#nextuplist li a text-decoration:none; color:#1d55a9;

请阅读下一步

  • >作家怎样使用GitHub存储他们的作品
  • >怎样轻松回收您无法销售的旧电子产品
  • >怎样检查您的Chromecast是否仍在获取更新
  • >怎样在Web浏览器之外播放Adobe Flash SWF文件
  • >命令行:人们为什么还要为此烦恼?
本文机器自动生成,不保证语句完整通顺和表达准确,亦不对内容真实有效性负责,请读者知悉。