按字母顺序

要使用此方法,我们必须记住以下规则和字母才能正确使用。
要更改用户的权限,我们必须使用字母“u”。
就像组“g”和其他组的“o”一样。

像用户、组和其他人一样,我们必须记住一些字母来授予读、写和执行权限,就像读权限一样,你必须使用字母“r”,写“w”和执行它是“x”。

因此,使用 chmod 命令分配权限的公式如下所示:

  • u – 用户
  • g – 组
  • o – 其他
  • r - 读取
  • w——写
  • x – 执行

例如,如果我们想使用字母顺序向用户/所有者授予读和写权限,并为组和其他人授予读权限,则命令将是:

# chmod u+rw,g+r,o+r file_name
Linux chmod命令示例

更改文件或者目录权限的 Linux 命令是 chmod,我们喜欢将其理解为更改文件模式。
chmod 有两种操作模式:

  • 符号模式
  • 数字/八进制模式

要使用 Linux chmod 命令更改权限,我们必须遵循一些语法和规则。
正如我们上面讨论的,我们可以使用数字和字母方式更改权限,在这里我已经用所有技巧解释了这两种方法。

查看更多教程 https://on  itroad.com

数值方式

要使用此方法,我们必须记住以下规则和数字才能正确使用。

  • 4 – 授予读取权限
  • 2 – 给予写权限
  • 1 – 授予执行权限

例如,如果我们想使用数字方式向用户/所有者授予读和写权限,并为组和其他人授予读权限,那么命令计算将是:

4+2 = 6 :这将为用户/所有者添加读写权限。

4 : 这将为组添加读取权限。

4:这将为其他添加读取权限。

所以命令会是这样的:

# chmod 644 filename

我们可以使用以下命令检查任何文件的权限:

# ls -l file.txt 
-rw-rw-r-- 1 geeklab geeklab 0 Nov 20 06:16 file.txt

并使用以下命令检查目录的权限:

# ls -ld data/
drwxrwxr-x 2 geeklab geeklab 4096 Nov 20 06:18 data/

现在的问题是如何识别分配给文件或者目录的权限。
这很简单。
上面我举了两个例子。
现在让我们识别file.txt的权限。
如果我们注意到文件的属性以“-rw-rw-r–”开头。
在这里,我们可以确定分配给 file.txt 的权限。

权限部分分为 10 位,其中

"-" :第一位负责识别它是文件、目录还是符号链接。
请参考以下符号:

重要符号:

  • – :分配给文件的权限
  • d : 分配给目录的权限
  • l : 分配给符号链接的权限
  • 第 2、3、4 位为所有者许可。
  • 第 5、6、7 位为 Group 许可。
  • 第8、9、10位为他人许可。

要授予对任何文件/目录的权限,我们必须使用“+”符号。
要从任何文件/目录中删除权限,我们必须使用“–”符号。

chmod 命令使用示例

为文件分配权限

这里我有一个名为 file.txt 的文件。
让我们使用 chmod 命令为用户/所有者授予读和写权限。

$ chmod u+rw file.txt
$ ls -l file.txt 
-rw------- 1 geeklab geeklab 0 Nov 20 06:16 file.txt

通过数值方式使用以下命令:

$ chmod 600 file.txt

为目录分配权限

以下命令可用于授予目录权限。
这里我有一个名为 data 的目录。
因此,让我们向用户/所有者授予完全权限(读取、写入、执行)。
参考下面的命令。

$ chmod u+rwx data/
$ ls -ld data/
drwx------ 2 geeklab geeklab 4096 Nov 20 06:18 data/

数值方式:

$ chmod 700 data/

从文件/目录中删除权限

使用以下 Linux chmod 命令从文件/目录中删除权限。
在这里,我从用户/所有者中删除读取和写入权限。

$ chmod u-rw file.txt
$ ls -l file.txt 
----rw-r-- 1 geeklab geeklab 0 Nov 20 07:18 file.txt

给每个人权限

我们可以使用以下命令向所有人授予权限。
在这里,我为每个人分配了访问 file.txt 的完全权限。
有两种方法可以做到这一点。

方法一

$ chmod a+rwx file.txt
$ ls -l file.txt 
-rwxrwxrwx 1 geeklab geeklab 0 Nov 20 06:44 file.txt

方法二
你也可以使用下面的 Linux chmod 命令来做同样的事情。

$ chmod ugo+rwx file.txt
$ ls -l file.txt 
-rwxrwxrwx 1 geeklab geeklab 0 Nov 20 06:44 file.txt

数值方式:

$ chmod 777 file.txt

使用单个 Linux chmod 命令为用户、组和其他人分配不同的权限

在这里,我正在使用单个命令从用户/所有者中删除执行权限并为组和其他人添加执行权限。

$ chmod u-x,g+x,o+x file.txt
$ ls -l file.txt 
-rw-rwxrwx 1 geeklab geeklab 0 Nov 20 09:40 file.txt

通过引用任何其他文件来为文件分配权限

我们可以将权限从一个文件复制到另一个文件。
这里我有一个名为 a1.txt 的文件,其权限类似于“-rw-r–r–”。

$ ls -l a1.txt 
-rw-r--r-- 1 geeklab geeklab 0 Nov 20 07:21 a1.txt

现在我想为另一个名为 a2.txt 的文件分配相同的权限。
我们可以使用带有参数 –reference 的 Linux chmod 命令来执行此操作。
参考下面的命令。

$ chmod --reference=a1.txt a2.txt
$ ls -l a2.txt 
-rw-r--r-- 1 geeklab geeklab 0 Nov 20 07:22 a2.txt

递归分配权限

我有一个名为 data 的目录,其中有很多文件,我想一次授予所有文件的权限,而不是手动一个一个。
为此,我们可以使用带有参数 -R 的 Linux chmod 命令。
这将以递归方式授予权限。

$ chmod -R ugo+rwx data/

数值方式:

$ chmod -R 777 data/

使用详细输出分配权限

通过使用带有参数 -v 的 Linux chmod 命令,我们可以在为任何文件/目录分配权限后获得输出。
参考下面的命令。

$ chmod -v 777 file.txt 
mode of 'file.txt' changed from 0664 (rw-rw-r--) to 0777 (rwxrwxrwx)

使用输出分配权限(此命令仅在有任何更改时才给出输出)

带有参数 -c 的 chmod 命令也与详细输出(即 -v)执行相同的操作。
但只有在权限发生任何变化时才会显示输出。
如果我们分配相同的权限,则不会显示任何输出。

$ chmod -c 755 file.txt 
mode of 'file.txt' changed from 0777 (rwxrwxrwx) to 0755 (rwxr-xr-x)

通过忽略/解决错误来分配权限

为了在分配权限期间避免任何错误或者纠正任何错误,我们可以使用带有参数 -f 的 Linux chmod 命令。
参考下面的命令。

$ chmod -f 755 file.txt

对于 chmod 命令帮助

对于 chmod 命令更多选项和参数,我们可以使用以下命令。

$ chmod --help
Usage: chmod [OPTION]... MODE[,MODE]... FILE...
  or:  chmod [OPTION]... OCTAL-MODE FILE...
  or:  chmod [OPTION]... --reference=RFILE FILE...
Change the mode of each FILE to MODE.
With --reference, change the mode of each FILE to that of RFILE.
  -c, --changes          like verbose but report only when a change is made
  -f, --silent, --quiet  suppress most error messages
  -v, --verbose          output a diagnostic for every file processed
      --no-preserve-root  do not treat '/' specially (the default)
      --preserve-root    fail to operate recursively on '/'
      --reference=RFILE  use RFILE's mode instead of MODE values
  -R, --recursive        change files and directories recursively
      --help     display this help and exit
      --version  output version information and exit
Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'.
GNU coreutils online help: [http://www.gnu.org/software/coreutils/]
Full documentation at: [http://www.gnu.org/software/coreutils/chmod]
or available locally via: info '(coreutils) chmod invocation'

检查 chmod 命令版本

我们可以使用带有参数 –version 的 Linux chmod 命令来检查已安装的 chmod 命令版本的版本。

$ chmod --version
chmod (GNU coreutils) 8.25
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later [http://gnu.org/licenses/gpl.html].
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by David MacKenzie and Jim Meyering.
日期:2020-09-17 00:14:57 来源:oir作者:oir