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