Это просто. Просто создайте нового пользователя с домашним каталогом в том, к которому он должен иметь доступ (эта команда должна быть запущена под sudo
или в корневой оболочке):
adduser --home /restricted/directory restricted_user
Это создаст пользователя restricted_user
, каталог /restricted/directory
, а затем будут установлены права доступа к каталогу, чтобы пользователь мог в него записывать. По умолчанию у него не будет возможности записывать в любую другую директорию.
Если у вас уже есть директория, вы можете запустить команду adduser
с опцией --no-create-home
и установить разрешения вручную (также с привилегиями корня), например:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Если вам нужно сделать недоступными даже каталоги с возможностью записи в мире для этого пользователя, есть два варианта.
1) Если вы хотите предоставить пользователю интерактивный сеанс оболочки, то подумайте о следующем это руководство о создании тюрьмы для chroot (в вашем /restricted/directory
).
После этого добавьте следующее к вашему sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Если вам нужно, чтобы он копировал файлы только между своей конечной точкой подключения и вашим хостом, все гораздо проще. Добавьте эти строки в конец вашего sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Затем прокомментируйте Subsystem sftp /usr/lib/openssh/sftp-server
, поставив в начале значок хэша (#
).
После перезагрузки вашего SSH сервера (он не убивает интерактивные сессии при перезагрузке, так что это безопасно, даже если вы что-то неправильно настроили; также, не закрывает вашу текущую сессию до того, как вы проверили, что вы все еще можете войти), все должно работать, как задумывалось.