MAC OS X的ACL扩展权限设置

在WEB开发时,网站是以_www的用户运行的,而我在本地是以liuwencan的用户编辑的。这就带来一个问题:如果所有文件属于liuwencan,那么网站运行需要写文件时就因无权限而失败;如果所有文件属于_www,那么liuwencan则需要sudo获取权限才能写进去。最郁闷的是使用git合并的时候,如果忘了加sudo,就会因权限不足提示大量的合并失败,需要先回滚,再重合并下,甚是不爽。

这个问题,在标准LINUX下,是可以用setfacl/getfacl做ACL控制解决此问题,但是MAC OS X上并没有这两个命令。百度了OS X ACL半天得到的不是打不开就是跟问题不搭边,最后去查看这些打不开的页面的快照(快照啊,找得是多蛋疼),找到了答案。

MAC OS X上使用chmod +a增加ACL权限, chmod -a删除ACL权限,ls -le查看ACL权限。

要解决上面提到的问题,执行以下两条命令修改网站根目录的扩展权限即可(www是我网站根目录名称,注意-R参数必须有,将www下面的所有文件也一并设置):

$sudo chmod  -R +a 'liuwencan allow write,delete,file_inherit,directory_inherit,add_subdirectory' www
$sudo chmod  -R +a '_www allow write,delete,file_inherit,directory_inherit,add_subdirectory' www

执行以下命令确认权限设置有成功:

$ls -le #以下为命令输出,对比可确认权限设置符合预期
total 0
drwxr-xr-x+ 37 liuwencan  staff  1258  8  5 10:04 www
 0: user:liuwencan allow add_file,delete,file_inherit,directory_inherit,add_subdirectory
 1: user:_www allow add_file,delete,file_inherit,directory_inherit,add_subdirectory

该命令的其他用法,请参考原文:OS X ACL usage

posted @ 2016-08-05 12:13  枫叶落一地  阅读(2535)  评论(0编辑  收藏  举报