0

他们 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

是什么赋予了?为什么扩展不能自己运行?

4

1 回答 1

0

这两个-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

话虽这么说,我不确定为什么,顺便说一下,它不会是分词。我原以为扩展顺序会使单词拆分结果,但是 .

于 2014-09-12T16:34:04.227 回答