3 пользователя, 1 папка. Пользователи: vsftpd (FTP-сервер), bobmarley (обычный пользователь), www-data (пользователь Apache)
Как их объединить и сделать так, чтобы каждый пользователь мог изменять любые из этих пользовательских данных, не выполняя CHMOD 777?
Пример: bobmarley создал файл 'settings.inc.php' www-data пытается получить доступ к файлу и успешно. Пользователь vsftpd обращается к файлу и может его изменить.
Создать группу (groupadd
) ... chgrp
каталога в эту новую группу ... а затем добавьте каждого пользователя в эту группу. Это самый простой способ. Вы также можете захотеть chmod g+s
в каталоге, чтобы убедиться, что новые файлы создаются с той же группой, что и родительский каталог.
тадаа!
groupadd webapp
usermod -a -G webapp vsftpd (but I think it should be nobody)
usermod -a -G webapp bobmarley
usermod -a -G webapp www-data
chgrp -R webapp /path/to/folder
chmod -R g+w /path/to/folder
Если у вас есть данные в этой папке, вы можете установить SGID для всех подпапок с помощью:
find /path/to/folder -type d -print0 | xargs -0 chmod g+s /path/to/folder
Не забудьте установить umask
для vsftpd, Apache и bobmarley на 002. С этой конфигурацией все файлы, созданные любым пользователем, будут иметь разрешение 664, принадлежащее webapp
группа, и другие пользователи могут изменять.
Объедините их всех в общую группу. chgrp
файлы в эту группу. chmod
файлы / каталоги на 664/775.
Сгруппируйте их. Вот почему в POSIX есть группы. Создать группу xyz
и поместите в него vsftpd, bobmarley и www-data.
А затем назначьте группу папке / файлам с chgrp
.