【问题标题】:setfacl not working with brace expansionsetfacl 不适用于大括号扩展
【发布时间】:2014-09-12 16:02:23
【问题描述】:

他们 Symfony 文档让您发出两个命令来设置缓存文件夹的权限:

setfacl -R -m u:www-data:rwx app/cache setfacl -dR -m u:www-data:rwx app/cache

更有效的方法是:

setfacl -R -m u:www-data:rwx -m d:u:www-data:rwx app/cache

这适用于我在 Ubuntu 12.04 上。然而,尝试使用大括号扩展似乎并没有:

setfacl -R {"-m ","-m d:"}u:www-data:rwx app/cache

输出:

setfacl: Option -m: Invalid argument near character 1

如果我用大括号回显命令,然后运行输出,它可以工作:

echo setfacl -R {"-m d:","-m "}g:deploy:rwx . | source /dev/stdin

什么给了?为什么扩展不能自己运行?

【问题讨论】:

    标签: linux bash acl brace-expansion


    【解决方案1】:

    两个 -m 参数没有被分词。它们被作为一个参数传递给setfacl

    当你通过它们回显字符串时。

    $ c ()
    {
        printf 'argc: %s\n' "$#";
        printf 'argv: %s\n' "$@"
    }
    $ c setfacl -R {"-m ","-m d:"}u:www-data:rwx app/cache
    argc: 5
    argv: setfacl
    argv: -R
    argv: -m u:www-data:rwx
    argv: -m d:u:www-data:rwx
    argv: app/cache
    $ echo setfacl -R {"-m ","-m d:"}u:www-data:rwx app/cache | c $(< /dev/stdin)
    argc: 7
    argv: setfacl
    argv: -R
    argv: -m
    argv: u:www-data:rwx
    argv: -m
    argv: d:u:www-data:rwx
    argv: app/cache
    

    话虽如此,我不知道为什么,顺便说一下,它不会是分词。我原以为扩展顺序会使结果分开,但是。

    【讨论】:

      猜你喜欢
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      相关资源
      最近更新 更多