递归更改权限与不递归更改权限之间的区别

递归更改权限与不递归更改权限之间的区别

chmod 777 * 命令和chmod -R 777 * 递归或正常更改权限有什么区别 ?

答案1

假设您有以下目录结构:

$ ls -lR
.:
total 4
drwxr-xr-x 3 user users 4096 Aug  2 14:05 a

./a:
total 4
drwxr-xr-x 3 user users 4096 Aug  2 14:05 b

./a/b:
total 4
drwxr-xr-x 2 user users 4096 Aug  2 14:05 c

./a/b/c:
total 0

只是将chmod 777 *当前目录中的所有文件的权限设置为 0777。但是,子目录中的文件不受影响,即a/权限设置为 0777 但不设置a/b等等a/b/c

$ chmod 777 *
$ ls -lR
.:
total 4
drwxrwxrwx 3 user users 4096 Aug  2 14:05 a

./a:
total 4
drwxr-xr-x 3 user users 4096 Aug  2 14:05 b    <=== Note

./a/b:
total 4
drwxr-xr-x 2 user users 4096 Aug  2 14:05 c    <=== Note

./a/b/c:
total 0

这就是递归发生的地方:chmod -R 777 *当前目录的所有子目录中的所有文件和目录都将受到影响:

$ ls -lR
.:
total 4
drwxrwxrwx 3 user users 4096 Aug  2 14:05 a

./a:
total 4
drwxrwxrwx 3 user users 4096 Aug  2 14:05 b    <=== Note

./a/b:
total 4
drwxrwxrwx 2 user users 4096 Aug  2 14:05 c    <=== Note

./a/b/c:
total 0

注意:如果您使用 bash,则“所有文件”的含义取决于 的值dotglob,请参阅 bash(1);对于其他外壳也是如此。

相关内容