按字母顺序
要使用此方法,我们必须记住以下规则和字母才能正确使用。
要更改用户的权限,我们必须使用字母“u”。
就像组“g”和其他组的“o”一样。
像用户、组和其他人一样,我们必须记住一些字母来授予读、写和执行权限,就像读权限一样,你必须使用字母“r”,写“w”和执行它是“x”。
因此,使用 chmod 命令分配权限的公式如下所示:
- u – 用户
- g – 组
- o – 其他
- r - 读取
- w——写
- x – 执行
例如,如果我们想使用字母顺序向用户/所有者授予读和写权限,并为组和其他人授予读权限,则命令将是:
# chmod u+rw,g+r,o+r file_name
更改文件或者目录权限的 Linux 命令是 chmod,我们喜欢将其理解为更改文件模式。
chmod 有两种操作模式:
- 符号模式
- 数字/八进制模式
要使用 Linux chmod 命令更改权限,我们必须遵循一些语法和规则。
正如我们上面讨论的,我们可以使用数字和字母方式更改权限,在这里我已经用所有技巧解释了这两种方法。
数值方式
要使用此方法,我们必须记住以下规则和数字才能正确使用。
- 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.