【问题标题】:How do I clean up file permissions for a directory structure如何清理目录结构的文件权限
【发布时间】:2013-05-23 17:24:23
【问题描述】:

情况如下:我有两个目录结构副本,其中文件可能具有不同的内容,但名称和位置相同。并且其中一个结构具有正确的文件权限(即可执行文件被标记为可执行文件,不可执行文件则不是),我需要将这些权限复制到另一棵树。我该怎么做?

【问题讨论】:

    标签: linux file-permissions


    【解决方案1】:

    给定 source(具有正确权限的目录的完整路径)和 target(需要更改其权限的目录的完整路径)

    chmod -R a-x target
    find target -type d -exec chmod a+x {} \;
    chmod a+x `find source -executable -type f | grep -v "Permission denied" | sed 's/source/target/'`
    
    1. 将所有内容标记为不可执行
    2. 将所有目录标记为可执行
    3. source 中查找每个可执行文件,并将其在 target 中的匹配文件标记为可执行文件,去掉有问题的文件。

    【讨论】:

    • 如果您的目录结构很大,您可能希望在最后一行使用 xargs 而不是反引号(以避免命令行参数计数限制)。
    • 这看起来不错,但请注意,在病理情况下它会失败,例如目录具有可执行访问权限但没有读取访问权限等......它也无法处理其他类型的权限位,例如setuid/setgit 和粘性位。当然,它也会忽略非 Unix 元数据,例如包含 selinux 标签的 ext2 属性等......这里的一般解决方案将非常麻烦。
    • 您对“权限被拒绝”的处理是错误的 - 您正在搜索stdout,而此消息将输出到stderr
    猜你喜欢
    • 2018-04-20
    • 2010-12-04
    • 2013-07-30
    • 2010-09-30
    • 2011-06-07
    • 1970-01-01
    • 2018-04-26
    • 2014-06-21
    • 2010-09-24
    相关资源
    最近更新 更多