📜  Linux 中的 chmod 命令和示例

📅  最后修改于: 2022-05-13 01:57:32.265000             🧑  作者: Mango

Linux 中的 chmod 命令和示例

在类 Unix 操作系统中, chmod命令用于更改文件的访问模式。
该名称是change mode的缩写。

句法 :

chmod [reference][operator][mode] file... 

引用用于区分权限适用的用户,即它们是指定授予权限的字母列表。参考文献由以下一个或多个字母表示:

Reference   Class     Description
u          owner      file's owner

g          group      users who are members of
                      the file's group

o          others     users who are neither the
                      file's owner nor members of 
                      the file's group

a          all       All three of the above, same as ugo

运算符用于指定应如何调整文件的模式。接受以下运算符:

Operator  Description
+         Adds the specified modes to the
          specified classes

-         Removes the specified modes from 
          the specified classes

=         The modes specified are to be made
          the exact modes for the specified 
          classes

注意:在运算符周围放置空格会使命令失败。



模式指示要从指定的类中授予或删除哪些权限。基本权限对应三种基本模式:

r       Permission to read the file.
w       Permission to write (or delete) the file.
x       Permission to execute the file, or, in
        the case of a directory, search it.

我们将使用 chmod 命令更改的权限类型:
在 linux 终端中,要查看对不同文件的所有权限,请键入 ls -l 命令,该命令以长格式列出工作目录中的文件。下图显示了使用 ls -l 及其输出的示例:

让我们看看上图。为了使事情易于理解,删除了一些列和行,并在权限列中添加了额外的空格以使其更易于阅读,如下所示:

- rw- rw- r--  mik  mik    assgn1_client.c
- rw- rw- r--  mik  mik    assgn1_server.c
d rwx rwx r-x  mik  mik    EXAM
- rw- rw- r--  mik  mik    raw.c
- rwx r-x r-x  mik  mik    header.sh
... so on...
  • 第一列代表文件的类型,即它是普通文件还是
    directory 其中 d 代表目录,- 代表普通文件。
  • 文件类型后的第一个设置三个字母告诉什么文件的所有者,有权限做什么。例如:在assgn1_client.c中,所有者权限为rw-,即所有者mik只能读(r)和写(w)文件,不能执行(x)。
  • 注:第3列和第4列分别代表文件的所有者名称和所有者所属的组。
  • 用户权限后面的三个字母是组的权限。
    例如:header.sh 的组权限为 rx,这意味着 mik 组中的其他人不能写(w)header.sh 脚本,而只能读取(r)或执行(x)它。
  • 请注意,当目录设置了 x 时,这具有“允许搜索此目录”的特殊含义。
  • 权限栏中的最后三个字母告诉我们“其他人”可以做什么。通常的做法是保护文件免受外部访问,以便其他人无法写入任何文件或目录。他们可以读取(r)或执行(x)它。例如: assgn1_client.c 的其他权限为 r- - 这意味着它只能被其他(外部)访问读取,但不能被其他(外部)访问写入或执行。

现在,让我们看看如何使用 chmod 命令来更改文件的访问模式。

示例 1:
让我们更改 assgn1_client.c 权限,以便所有者不能在文件中写入(w)而只能读取它。

BEFORE: -rw-rw-r--  mik  mik  assgn1_client.c

COMMAND: chmod u=r assgn1_client.c

AFTER: -r--rw-r--  mik   mik   assgn1_client.c

前 :

后 :

示例 2:
让我们限制权限,使用户无法搜索目录 EXAM。

BEFORE: drwxrwxr-x  mik   mik   EXAM

COMMAND: chmod u=rw EXAM

AFTER: drw-rwxr-x   mik  mik    EXAM

应用 chmod u=rw EXAM 命令后,用户(所有者)无法更改目录。如果用户尝试更改目录,则会显示“权限被拒绝”消息,如下图所示:

参考 :

chmod 维基百科