如何在 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