Пользователь с ограничением: только SFTP

Dec 27, 2014 15:06

Если надо сделать пользователя, который может только закачивать и удалять файлы в выделенной для него директории - типичный сценарий для wwwmaster и при этом не видеть что делается в других папках сервера.

Подготовка (делается один раз):
Всех пользователей будем хостить в папке /var/www где у каждого будет своя личная корневая директория.
Для удобства добавления новых пользователей имеет смысл добавить специальную группу для таких товарищей sftponly и внести изменения в настройки:
#groupadd sftponly
#nano /etc/ssh/sshd_config

Match Group sftponly
ChrootDirectory /var/www/%u/ # обратите внимание на слэш в конце! Есть неудобство что имя пользователя должно совпадать с именем домашней папки!
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
На этом подготовка закончена и теперь рутина:
Проверяем что не накосячили с правами доступа на общую папку:
# ls -ld /var/www/
drwxr-xr-x 5 root root 4096 Dec 27 11:09 /var/www/
общая папка должна принадлежать полностью root
Создание домашней папки для пользователя:
#mkdir /var/www/wwwmaster
эта папка тоже должна принадлежать только root
# ls -dl /var/www/testuser/
drwxr-xr-x 3 root root 4096 Dec 27 10:40 /var/www/wwwmaster/
Добавление нового пользователя:
# useradd -g sftponly -d /var/www/wwwmaster/ -s /sbin/false wwwmaster
# passwd guestuser
Изменение имеющегося:
#usermod -g sftponly -d /var/www/wwwmaster/ -s /sbin/false wwwmaster

[Насчет слеша в конце /var/www/wwwmaster/]
В принципе, если в sshd_config, не поставили бы слеш, тогда при назначении домашней папки пользователю, всегда требовалось следить за тем чтоб всегда был, но так как в нашем случае этот слеш есть то при создании или изменении пользователя записи /var/www/wwwmaster/ и /var/www/wwwmaster эквивалентны


На этом этапе пользователь уже может логиниться по SFTP в систему (если перезапустить sshd), но вот писать в свою папку не может, это ограничение можно обойти только создав специальную папку внутри домашней директории пользователя и выставв на неё права на запись для пользователя:
#mkdir /var/www/wwwmaster/public_html
#chown wwwmaster:sftponly /var/www/wwwmaster/public_html

Ну вот и все, осалось перезапустить sshd

sftp, linux, server

Previous post Next post
Up