ANT设置ACL权限

时间:2013-07-09 19:09:15

标签: symfony ant permissions acl

对于我的Symfony应用程序,我使用ANT构建了一个部署脚本。在installation manual中,您可以看到需要为app/cache/app/logs目录设置权限。因此,我在命令行上使用以下方法:

sudo chmod +a "_www allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs

使用setfacl的方法对我来说不起作用(Mac OS),而umask的第三个选项对我来说是不可行的。

所以我正在考虑如何使用ANT做到这一点,并想出了:

<chmod perm="+a '_www allow delete,write,append,file_inherit,directory_inherit'">
    <fileset dir="app/cache" />
    <fileset dir="app/logs" />
</chmod>

问题是它什么也没做。我甚至没有收到错误消息,也没有更改权限。有什么建议吗?我无法使用perm="0775"perm="0777"等变通方法,因为我无法再使用ANT删除它(仅限sudo ant,但这不是我想要的)。 有任何建议如何处理?

2 个答案:

答案 0 :(得分:0)

好的,明白了:

<exec executable="chmod" dir="webroot" failonerror="true">
    <arg line="+a '_www allow delete,write,append,file_inherit,directory_inherit' app/cache app/logs" />
</exec>

答案 1 :(得分:0)

我的系统(Debian Wheezy)似乎不支持+a属性,但这对我有用(docs中的第二个选项):

<exec executable="/bin/sh" dir="${basedir}/app" failonerror="true">
    <arg value="-c"/>
    <arg value="setfacl -dR -m u:www-data:rwX -m u:`whoami`:rwX cache logs"/>
</exec>

使用sh -c似乎是必要的,因为如果没有它,我就无法使用whoami的反引号。

您可能需要将dir="${basedir}/app"更改为您自己的应用路径。