我有一个由其他人归档的归档文件,我希望在下载后自动更改解压缩文件中文件系统的一个分支,以获得读取访问权限。(我不能改变存档的创建方式)。
我查过这个帖子:chmod: How to recursively add execute permissions only to files which already have execute permission as查过其他一些帖子,但没有查到joy。
这些目录最初带有多个但都是错误的标志,它们可能显示为:
drwx------
d---r-x---
drwxrwxr-x
dr--r-xr--到目前为止,这些只是我发现的少数几个,但可能还有更多。
尝试查看没有x权限的目录时出现find错误,因此不会将其传递给chmod。到目前为止,我一直在做的是手动更改父目录上的权限,然后进入子目录并对它们执行相同的操作,等等。但这是大量的手工劳动。有没有什么方法可以自动做到这一点?
也就是说,我现在是怎么做的:
执行以下操作:
$ chmod -R +x
$ chmod -R +r直到我没有得到错误,然后
$ find -type f -exec chmod -x {} +但肯定有更好的办法。
发布于 2012-11-14 19:23:20
除了执行访问权限外,您还需要读取访问权限才能列出目录。如果您只有execute访问权限,那么您可以找到目录中条目的名称,但没有其他信息(甚至连类型都找不到,所以您不知道哪些条目是子目录)。这对我来说很有效:
find . -type d -exec chmod +rx {} \;发布于 2012-11-14 19:36:26
可以将chmod与X模式字母(大写X)一起使用,以便仅为目录设置可执行标志。
在下面的示例中,清除了可执行标记,然后递归地为所有目录设置可执行标记:
~$ mkdir foo
~$ mkdir foo/bar
~$ mkdir foo/baz
~$ touch foo/x
~$ touch foo/y
~$ chmod -R go-X foo
~$ ls -l foo
total 8
drwxrw-r-- 2 wq wq 4096 Nov 14 15:31 bar
drwxrw-r-- 2 wq wq 4096 Nov 14 15:31 baz
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 x
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 y
~$ chmod -R go+X foo
~$ ls -l foo
total 8
drwxrwxr-x 2 wq wq 4096 Nov 14 15:31 bar
drwxrwxr-x 2 wq wq 4096 Nov 14 15:31 baz
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 x
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 y稍微解释一下:
chmod -x foo -清除foochmod +x foo的eXecutable标志-为foochmod go+x foo设置eXecutable标志-与上面相同,但仅为组和其他用户设置该标志,不接触用户(所有者) permissionchmod go+X foo -与上面相同,但仅适用于目录,不接触fileschmod -R go+X foo -与上面相同,但递归地为foo的所有子目录执行此操作
发布于 2012-11-14 19:20:11
尝试同时更改所有权限:
chmod -R +xrhttps://stackoverflow.com/questions/13377606
复制相似问题