如何在 Linux 上递归使用 chmod?

您可能遇到过这样一种情况:您使用 Linux 作为主要操作系统,然后您尝试创建或编辑文件,而 Linux 终端响应类似“权限拒绝”错误。通常情况下,此类错误与您当前用户拥有的权限不足有关,可以通过设置正确的文件权限或更改所有者来解决。

在 Linux 中,文件通过文件权限、所有权和属性进行控制,从而确保只有经过授权的用户和进程才能访问文件和目录。

在了解如何让chmod命令在所有目录和子目录上递归运行之前,让我们先了解chmod命令的实际含义。

chmod是一个 linux 命令,主要用于更改文件系统对象的访问权限。它根据一种模式更改每个文件的权限,其中模式简单地描述了要修改的权限。

语法

chmod [Options]... Mode [,Mode]... file...

chmod [Options]... Numeric_Mode file...

chmod [Options]... --reference=RFile file...

在上面的语法中, [OPTIONS] 占位符可以替换为可以与其一起使用的不同标志,一些最常用的标志是

-f, --silent, --quiet suppress most error messages

-v, --verbose output a diagnostic for every file processed

-c, --changes like verbose but report only when a change is made

-c, --reference=RFile use RFile's mode instead of MODE values

-R, --recursive change files and directories recursively

--help display help and exit

--version output version information and exit

现在我们知道了chmod 的实际作用,让我们考虑几个例子,我们将为同一个文件提供不同的权限。

示例 1

chmod 777 sample.txt

上面的命令使用模式777,这意味着任何人都可以读取、写入和执行文件。

示例 2

chmod 020 sample.txt

上面的命令使用模式020,这只是意味着只有一组可以读取、写入和执行文件。

现在,让我们学习如何递归地运行chmod

语法

chmod -R MODE directory

考虑我们有一个目录,我想在其中对所有文件递归运行 chmod。该目录在命令之前看起来像这样

immukul@192 linux-questions-code % ls -tlr

total 960

-rw-r--r-- 1 immukul staff 446966 Sep 23 1998 wget-1.5.3.tar.gz

drwxr-xr-x 3 immukul staff     96 Jul  7 17:42 d1

-rwxrwxrwx 1 root    staff    106 Jul  8 13:10 sample2.sh

drwxr-xr-x 4 immukul staff    128 Jul  8 19:05 d2

-rwxrwxrwx 1 root    staff    946 Jul 12 18:45 sample.sh

-rwxrwxrwx 1 root    staff    718 Jul 12 18:48 sample1.sh

考虑下面显示的命令

chmod -R 777 .
输出结果
total 960

-rwxrwxrwx 1 immukul staff 446966 Sep 23 1998 wget-1.5.3.tar.gz

drwxrwxrwx 3 immukul staff     96 Jul  7 17:42 d1

-rwxrwxrwx 1 root    staff    106 Jul  8 13:10 sample2.sh

drwxrwxrwx 4 immukul staff    128 Jul  8 19:05 d2

-rwxrwxrwx 1 root    staff    946 Jul 12 18:45 sample.sh

-rwxrwxrwx 1 root    staff    718 Jul 12 18:48 sample1.sh

以上是 如何在 Linux 上递归使用 chmod? 的全部内容, 来源链接: utcz.com/z/343851.html

回到顶部