У меня есть пара пользователей, один был создан с помощью OSX GUI, один никто для nginx и php-fpm.

Все команды ниже выполняются от имени пользователя root.

Я создал новую группу для своего проекта:

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 ответ1

0

Для того чтобы stat /Users /myuser /Documents /www /myproject, пользователь nobody должен иметь возможность проходить по каждому из каталогов на пути к нему, что означает, что ему нужен "поиск" (он же "выполнить") для исторические причины) доступ к каждому из этих каталогов. Обычно только myuser имеет какие-либо разрешения для /Users /myuser /Documents, поэтому, если вы не изменили это, только myuser может что- либо делать в этой папке.

Если вам нужна учетная запись nobody, чтобы получить доступ к этой папке, я бы порекомендовал использовать списки контроля доступа, чтобы добавить необходимые разрешения:

chmod +a "group:mygroup allow search" /Users/myuser/Documents /Users/myuser/Documents/www

Кстати, OS X уже имеет учетную запись "nobody" как часть стандартного набора системных пользователей и групп; Я бы рекомендовал не изменять его, чтобы не нарушать какие-либо системные функции (/ системы безопасности), которые зависят от того, имеют ли он определенные свойства. Если вам нужна учетная запись с нестандартными разрешениями / членство в группе / и т.д., Создайте другую учетную запись и используйте ее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .