你好…我期待chmod 777一堆文件。 或者,因为它更安全,我也可以为这些文件寻找一个chown www:www来使它们可以被networking访问。
现在,由于我有超过400,000个文件, sudo chmod -R 777 ./*和sudo chown -R www:www ./*完全不起作用,只返回“Arg list too long”
一些使用Googlesearchfind和xargs ,但是这不适合我的文件集,因为一些文件名称中有下划线。 我不知道为什么这会打破剧本,但它确实。 命令:
find ./ -name "*" | xargs chmod 777
以下是目录树的匿名片段:
files \- 28934723 \- file1.xml \- file2.txt \- 34905834 \- file1.xml \- file2.txt \- 21398230 \- file1.xml \- file2.txt
据我所知,它应该自动recursion到子目录中,但我不确定。 当我运行上面的命令时, 一些文件改变了,但是大部分目录保持不变(相同的权限)。
在此先感谢您的帮助,你们可以提供:)
sudo chown -R www:www ./ ,如果你不想要www所拥有的目录,只需将它改回来。
我不明白为什么下面的命令行不能工作:
find . -print0 |xargs -0 chmod 777
或者更简单, chmod 777 -R .
如果可以帮助,请尝试限制权限。 如果您试图完全访问www,并且正在使用可用的acl(可能需要重新安装)的redhat系统,请尝试:
setfacl -R -m user:www:rwx the_parent_directory
setfacl -d -R -m user:www:rwx the_parent_directory并在必要时用用户replace组。
如果你的参数列表太长,你不能使用完整的目录,那么这将工作(但会更慢):
find . -type d -exec setfacl -d -R -m user:www:rwx '{}'; setfacl -R -m user:www:rwx '{}' \;
如果那里有文件,而且没有被目录覆盖,那么你需要重新运行这些文件(我确定有人会告诉我一个切换到setfacl的方法,只做最上面的目录):
find . -type f -exec setfacl -m user:www:rwx '{}' \;
你可以使用相同的方法来做777(类似于xargs,但我更喜欢这样,看起来更清洁:
find . -exec chmod 777 '{}' \; 至于下划线,这不应该是一个问题(这可能是由pipe道或其他东西来解释),但是如果它们是:
find . -name \*_\* -exec chmod 777 '{}' \;