Пользователь хочет, чтобы PHP мог записывать файлы в своем каталоге
Пользователь хочет, чтобы PHP записывал файлы в свою директорию /home/, он советует мне сделать usermod -a -G www-data username
где username
это его имя пользователя. Я не был уверен, было ли это проблемой безопасности или нет.
Как лучше всего подойти к этому?
2 ответа
Предлагаемая команда добавляет пользователя в www-data
группа. Это может дать ему непреднамеренные дополнительные разрешения, в частности, он сможет получить доступ к любому файлу, который ограничен www-data
группа. Это, вероятно, намного больше, чем вы рассчитывали.
Например, предположим, что два пользователя делают этот запрос и добавляются в www-data
группа, и каждый пользователь открывается ~/www-shared
к www-data
группа. Тогда каждый сможет читать и писать другим www-shared
каталог.
Списки контроля доступа выглядят намного более подходящими для заявленной цели. Это требует, чтобы ваша операционная система и файловая система поддерживали ACL. В Linux убедитесь, что файловая система смонтирована с acl
вариант. Затем пользователь может запустить setfacl -m user:www-data:rwx ~/www-shared
поделиться каталогом с www-data
пользователь.
Тем не менее, эта проблема звучит как то, с чем сталкивались многие люди, работающие на веб-серверах. Так что может быть гораздо лучшее решение, использующее набор инструментов Apache.
Это не очень хорошая идея, потому что пользовательские www-данные будут находиться в группе пользователя. Таким образом, веб-сервер может манипулировать всеми файлами этого пользователя.
Кроме того, любые другие пользователи в системе могут читать и записывать файлы данного пользователя с помощью простого сценария php.
Как правило, не стоит предоставлять веб-серверу больше прав на запись / чтение, чем необходимо. Таким образом, вы можете захотеть расширить разрешения только в каталоге (или даже в файле), которому требуется доступ для записи. Это может быть каталог загрузки, например.
лайк...
chgrp www-data /home/foobar/public_html/wordpress/uploads
chmod -R g+rwX /home/foobar/public_html/wordpress/uploads