【问题标题】:Linux - Change permissions of all files & directories except 1 directory?Linux - 更改除 1 个目录之外的所有文件和目录的权限?
【发布时间】:2015-12-16 17:18:24
【问题描述】:

在研究了一段时间后,这让我有点难过。我需要更改所有文件和目录的权限设置,以便组和其他人除了一个特定目录之外没有读、写或执行权限。到目前为止,我已经尝试过 `

chmod go-rwx | chmod go+rwx 'filename'

有什么建议吗?`

【问题讨论】:

    标签: linux directory file-permissions chmod


    【解决方案1】:

    我认为没有比两步管道更短的解决方案。

    否则,您可能需要检查 umask。 umask 在创建时更改文件的默认权限(遗憾的是仅在由同一 shell 创建的文件上,但您可以将其添加到 .bash_rc/.bash_profile 中,这样您打开的每个 shell 都会默认执行此操作)

    umask 077
    

    将设置掩码,以便每个新文件都具有 700 之类的权限。 因此,您可能只想使用它,以便将来无需重新启动该管道。

    编辑 如果问题出在管道本身,那么我会这样做

    cd && chmod -R 700 && cd 'path/to/that/directory' && chmod -R 777
    

    使用双 '&' 而不是管道,只是因为没有输出到管道,所以 && 可能会解决问题

    【讨论】:

    • 这是我最后的作业问题,显然它可以在 1 行中完成,因为唯一的要求是在 1 中完成。我可以使用“查找”并将其通过管道传输到 chmod 吗?
    • chmod -R 'file' 递归执行!可能有帮助
    • @flarp:是的,find 旨在将它找到的文件名传递给另一个程序。您可以print 他们,但在您的情况下,您可能希望使用-exec 来构建一个调用chmod 的命令行。 find 也可以选择排除某些模式。
    • 那么它看起来像这样吗?查找-r | chmod go-rwx -exec '文件名'
    • 可能是这样的然后找到 / ! -name '文件' -exec chmod 700 {} \;
    猜你喜欢
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2020-12-26
    • 1970-01-01
    • 2013-09-19
    • 2012-10-05
    相关资源
    最近更新 更多