【发布时间】:2015-12-16 17:18:24
【问题描述】:
在研究了一段时间后,这让我有点难过。我需要更改所有文件和目录的权限设置,以便组和其他人除了一个特定目录之外没有读、写或执行权限。到目前为止,我已经尝试过 `
chmod go-rwx | chmod go+rwx 'filename'
有什么建议吗?`
【问题讨论】:
标签: linux directory file-permissions chmod
在研究了一段时间后,这让我有点难过。我需要更改所有文件和目录的权限设置,以便组和其他人除了一个特定目录之外没有读、写或执行权限。到目前为止,我已经尝试过 `
chmod go-rwx | chmod go+rwx 'filename'
有什么建议吗?`
【问题讨论】:
标签: linux directory file-permissions chmod
我认为没有比两步管道更短的解决方案。
否则,您可能需要检查 umask。 umask 在创建时更改文件的默认权限(遗憾的是仅在由同一 shell 创建的文件上,但您可以将其添加到 .bash_rc/.bash_profile 中,这样您打开的每个 shell 都会默认执行此操作)
umask 077
将设置掩码,以便每个新文件都具有 700 之类的权限。 因此,您可能只想使用它,以便将来无需重新启动该管道。
编辑 如果问题出在管道本身,那么我会这样做
cd && chmod -R 700 && cd 'path/to/that/directory' && chmod -R 777
使用双 '&' 而不是管道,只是因为没有输出到管道,所以 && 可能会解决问题
【讨论】:
find 旨在将它找到的文件名传递给另一个程序。您可以print 他们,但在您的情况下,您可能希望使用-exec 来构建一个调用chmod 的命令行。 find 也可以选择排除某些模式。