我有几个用户,一个是通过 OSX GUI 创建的,一个是没有人适用于 nginx 和 php-fpm。
以下所有命令均按如下方式执行根。
我为我的项目创建了新组:
dscl . -create /groups/mygroup gid 404 # used some random id here, is it ok?
将用户添加到组:
dseditgroup -o edit -a myuser -t user mygroup
dseditgroup -o edit -a nobody -t user mygroup
id
表示用户现在确实在该组中。
ls -la
回报包括:
drwxr-xr-x 27 myuser mygroup 918 Dec 4 00:00 myproject
但
sudo -u nobody stat /Users/myuser/Documents/www/myproject
返回
stat: Permission denied
怎么了?
答案1
为了统计 /Users/myuser/Documents/www/myproject,nobody 用户需要能够遍历每个目录,这意味着它需要对每个目录有“搜索”(也称为“执行”,出于历史原因)访问权限。通常,只有 myuser 对 /Users/myuser/Documents 有权限,因此,除非您更改了此权限,否则只有 myuser 可以执行此操作任何事物在该文件夹中。
如果您需要无人帐户才能访问此文件夹,我建议使用访问控制列表来添加所需的权限:
chmod +a "group:mygroup allow search" /Users/myuser/Documents /Users/myuser/Documents/www
顺便说一句,OS X 已经有一个“nobody”用户帐户作为系统用户和组的标准集合的一部分;我建议不要修改它,以免破坏任何依赖于它具有某些属性的系统功能(/安全系统)。如果您需要一个具有非标准权限/组成员身份/等的帐户,请创建一个不同的帐户并使用它。