AddThis Smart Layers

воскресенье, 18 октября 2015 г.

Как ограничить пользователю доступ по SFTP в свою домашнюю директорию

Это тяжело будет назвать руководством или мануалом по настройке прав доступа пользователей в Linux.
Здесь я описываю одну конкретную задачу, с которой часто приходится сталкиваться в повседневной работе.

Работаем мы в основном с CentOS, а в последнее время именно с CentOS 7, поэтому данная шпаргалка предназначена в первую очередь для данной версии системы. Если она работает и в других дистрибутивах или версиях CentOS - замечательно.


Прежде всего, я допускаю что OpenSSH уже установлен в системе.

Поэтому сразу же идем в редактирование настроек

nano /etc/ssh/sshd_config

Пролистываем до конца файла и дописываем следующие строки

Match User testuser
    ChrootDirectory /home/testuser
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Здесь уместно маленькое, но очень важное примечание.
Во-первых, владельцем всех директорий в пути, которые мы указываем в директиве ChrootDirectory должен быть root. В противном случае пользователь просто не сможет зайти по SFTP.
Во-вторых, эти директории не должны быть доступны для записи для каких-либо других пользователей.

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

Есть несколько вариантов. Здесь рассмотрим два из них.

Первый вариант: меняем владельца директории testuser на root и создаем поддиректорию, например public_html, владельцем которой будет уже наш пользователь testuser.

cd /home
chown root.root testuser/
chmod 755 testuser/
mkdir testuser/public_html
chown testuser.testuser testuser/public_html

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

Второй вариант: в конфиграции SSH сервера указываем базовый путь к директории /home, владельцем которой в любом случае является root и она недоступна для записи другими пользователями.

Match User testuser
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

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

Комментариев нет :

Отправить комментарий