Как заблокировать пользователю просмотр чужих файлов через SFTP

Кстати говоря, Вы можете сделать заказ у разработчика которого вы сейчас читаете, по любым вопросам с администрированием серверов, а также сайтами. Я помогу в любой задаче, оплата почасовая. Можете обратиться в Telegram для быстрой обратной связи, либо на почту которая на странице "Обо мне".

Дата публикации: 18.12.2021
Дата обновления: 19.12.2021

Бывает необходимость выдать доступы к SFTP но не раскрывая всех файлов операционной системы, чтобы пользователь зайдя на SFTP попал в определённую папку и не мог никак выйти из неё, для этого надо сделать chroot jail. Использование FTP без шифрования крайне небезопасно, поэтому советую либо выдавать SFTP доступ либо FTP доступ с шифрованием. Чтобы индивидуально не прописывать правила для каждого пользователя можно создать группу:

groupadd sftponly

Назвать данную группу sftponly можно как угодно.

Далее необходимо добавить пользователя в данную группу:

useradd -g sftponly -s /bin/false -m -d /home/username username

Установите пароль новому пользователю:

passwd username

Кстати, говоря о паролях, у нас уже есть статья по генерации пароля:

Генерация паролей на Linux через pwgen

Можно воспользоваться командой: passgen

Если пользователь уже существует, его нужно добавить в данную группу:

usermod -G sftponly -s /bin/false username2

Далее, необходимо выдать права на домашнюю директорию:

chown root: /home/username
chmod 755 /home/username

Так как домашние каталоги принадлежат пользователю root, пользователям необходимо создать дополнительные каталоги внутри домашних, чтобы они имели доступ к папке, где могут создавать файлы, папки и прочее.

mkdir /home/username/{public_html,uploads}
chmod 755 /home/username/{public_html,uploads}
chown username:sftponly /home/username/{public_html,uploads}

Далее откройте файл в редакторе /etc/ssh/sshd_config

nano /etc/ssh/sshd_config

Найдите строку: Subsystem sftp, обычно в конце файла, данная строка должна выглядеть так:

Subsystem sftp internal-sftp

Добавьте в конец файла:

Match Group sftponly
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no
  X11Forwarding no

Далее перезапустите службу ssh или sshd (CentOS, Fedora)

systemctl restart ssh
systemctl restart sshd

Кстати говоря, Вы можете сделать заказ у разработчика которого вы сейчас читаете, по любым вопросам с администрированием серверов, а также сайтами. Я помогу в любой задаче, оплата почасовая. Можете обратиться в Telegram для быстрой обратной связи, либо на почту которая на странице "Обо мне".

Генерация паролей на Linux через pwgen

Компиляция Telegram TDLib — Could NOT find OpenSSL

SIA & DIA — Создание и передача .zip .tar.gz .tar.bz2 архива в Linux и распаковка

Установка Composer на Debian 8.2

Python Error — ‘ascii’ codec can’t encode characters in position

Установка ElasticSearch на Debian 8.10

Что такое SSH? Как войти на сервер через SSH