Из соображений безопасности я хотел бы отключить корневой доступ через ssh.
Я создал нового пользователя (user1) с административными полномочиями.
adduser user1
usermod -aG sudo user1
и присвоил/www каталог этому пользователю.
sudo chown -R $USER:$USER /var/www/
sudo chmod -R 755 /var/www
(Моей структурой папок является www/site1.com, www/site2.com, и т.д.),
Мои сайты должны записать некоторые файлы (такие как карты сайта, RSS ленты, и т.д.), таким образом, я установил полномочия www каталога к:
sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www
Теперь, однако, пользователь user1 работы отлично через оболочку с командой sudo, но больше не может добавлять/редактировать/удалять файлы и папки в/www каталоге и его подкаталогах через sftp.
Я прочитал многие руководства, как настроить апачские полномочия увеличить безопасность, совместно использовать администрирование с другими пользователями, и т.д. и т.д. и т.д.
Но я все еще не понял, как решить мою проблему.
В настоящее время, чтобы мочь обработать файлы на моем сервере через sftp я должен использовать пользователя root с душевным спокойствием для безопасности.
Я пропускал что-то об установке полномочия папок или пользователь?
Возможно установить другую группу и пользовательский доступ для файлов и каталогов, и это позволит и Apache и Вашему user1 пользователю редактировать то, что находится в /var/www
не требуя root/sudo и ничего не делая мировым перезаписываемым.
Так, установите "пользовательское" разрешение внутри /var/www
кому: user1
. Установите разрешение "группы" на www-data
(но ТОЛЬКО для определенных файлов или каталогов, которые веб-сервер должен записать в).
sudo chown -R user1:user1 /var/www
sudo chgrp www-data /var/www/specific-file
Необходимо постараться не позволять веб-серверу записать во все /var/www
каталог и его содержание, вместо этого давая вышеупомянутое разрешение группы только определенным файлам, где это необходимо. Это - хороший принцип защиты для ограничения доступа веб-сервера, чтобы записать в файлы только в те файлы, что это строго необходимо для - и это - хорошая идея попытаться гарантировать, что те файлы не выполняются непосредственно (не .php или другие исполняемые сценарии, например).
Если Вы изменяетесь, каталог с setgid укусил, этими проблемами должна быть история.
Попробуйте это
chmod 2775 /var/www
С setgid набором битов все файлы в этом каталоге принадлежат www-данным группы (это должно быть типичным пользователем и группой папки, www-data:www-data), и не пользователь.
Таким образом, целый user1 находится в www-данных группы, пользователь должен смочь изменить, удалить и открыть файлы.
Попробуйте.
Сначала введите пользователя в соответствующую группу. Самый простой путь
sudo nano /etc/group
Найдите www-данные и введите user1 после ":" в конце
ВЫЙДИТЕ ИЗ СИСТЕМЫ/ВОЙДИТЕ снова
Теперь создайте папку, например.
sudo mkdir /var/www2
и затем помещенный setgid обдумал его
sudo chmod 2775 /var/www2 && sudo chown www-data:www-data /var/www2
теперь введите папку, создайте другую папку или файл. Это должно работать и выглядеть примерно так (удостоверьтесь, что Вы видите "s" при использовании ls),
Посмотрите здесь, например.
simmel@tron:/var/www2
$ ls -la
total 0
drwxrwsr-x 1 www-data www-data 8 Feb 21 10:28 .
drwxr-xr-x 1 root root 126 Feb 21 10:26 ..
drwxrwsr-x 1 simmel www-data 0 Feb 21 10:28 blah
Как Вы видите для части группы существует RWS, показанный вместо показанного RWX.