Я застреваю с разрешениями пользователей в стеке LAMP (используя Digital Ocean, если это важно). Вот моя установка.
Пользователь dev
имеет следующие группы: dev www-data
В /var/www
папка была установлена так, что владелец www-data:www-data
, это выглядит так:
drwxrwxr-x 3 www-data www-data 4096 Mar 30 17:41 www
Если я использую dev
пользователь в sftp, все выглядит хорошо, но если я затем загружу файл, новый файл будет владеть dev:dev
.
Это становится проблемой, когда у меня появляется новый пользователь по имени dev2
который также работает в том же каталоге, поскольку они не могут удалять или перезаписывать файлы, принадлежащие dev
.
К сожалению, мой опыт работы с пользователями ограничен использованием cPanel, где я могу создать несколько пользователей FTP, у которых нет этой проблемы доступа / перекрытия. Как это сделать через терминал?
В g+s
бит для каталогов будет налагать группу родительского каталога (стиль BSD) вместо группы процесса по умолчанию (стиль SysV). Итак, что-то вроде
chmod g+s /var/www
(а также в любых подкаталогах) должны вызывать www-data
группа, которая будет сохранена при создании новых файлов в ней. Другим вариантом может быть использование так называемых списков ACL POSIX (см. setfacl(1)
), что, хотя и более сложно, может позволить нескольким группам получить доступ к файлам. (Вы можете в конечном итоге получить некоторые задания cron для аудита / установки разрешений, независимо от того, или управление конфигурацией также может обеспечить разрешения в дереве каталогов, в зависимости от того, сколько проблем вы хотите решить.)