Я установил vsftpd на моем сервере Ubuntu. Это сервер разработки, и я хочу иметь возможность передавать свой код по FTP прямо в каталог, который выдает Apache.
Как многие из вас знают, www-data - это пользователь Apache, а пользователю www-data необходимо иметь права доступа к каталогу, который выдает Apache.
Я также не хотел делать www-данные пользователем FTP, поэтому вместо этого я создал другого пользователя для использования с FTP и поместил оба www-data и нового пользователя в новую группу под названием www.
Я сделал chown -R www-data:www *
для каталога, который обслуживает Apache, и он работает в основном нормально.
Проблема возникает, когда я загружаю по FTP файл, который ранее не существовал в этом каталоге. Владелец настроен на моего пользователя FTP. Я хочу, чтобы владелец получил значение www-data, а группа - www, когда будет загружен новый файл.
Есть ли способ сделать это с помощью vsftpd?
Я неистово гуглил в течение нескольких часов, но я не могу найти способ сделать это. Любая помощь будет принята с благодарностью.
Редактировать:
Я просто настроил пару заданий cron для запуска каждую минуту и установил права доступа:
*/1 * * * * chown -R www-data:www /var/www
*/1 * * * * chmod -R g+rw /var/www
Это работает, но это немного неуклюже, и между загрузкой нового кода и его работой, когда я нажимаю F5 в моем браузере, задержка составляет ~ 1 минуту.
Читать man 2 chmod
, особенно часть, которая говорит:
S_ISGID (02000) set-group-ID (set process effective group ID on execve(2); mandatory locking, as described in fcntl(2); take a
new file's group from parent directory, as described in chown(2) and mkdir(2))
Вы могли, вероятно, использовать это для создания всех файлов созданными в каталоге в www
группа и изменение Ваш веб-сервер umask
значение к 022
Чтобы сделать это безопасно, считайте и перечитайте man 2 chmod
, man 2 open
, man 2 stat
и что-либо указало в Видении Также: разделы. Изучите, как Linux имеет дело с файлом и полномочиями каталога для забавы и/или прибыли!
Или, Вы могли установить inoticoming - trigger actions when files hit an incoming directory
, и сделайте свою вещь каждый раз, когда файл совершает нападки.