thumb

Сервер sshd (OpenSSH) дозволяє здійснювати доступ по протоколу SFTP. «OpenSSH» за замовчуванням дає користувачеві доступ до всієї файлової системи, тобто до кореня. Але можна chroot-нуть користувача в його домашню директорію. Тобто користувач буде замкнений у своїй домашній директорії.

Починаючи з версії 4.8, «OpenSSH» підтримує chroot (http://openssh.org/txt/release-4.8) і тепер не потрібні патчі.

Підготовка

Право входу в систему по протоколу SFTP матимуть користувачі які мають системні облікові записи. У прикладі Я буду використовувати ім’я користувача Arthur з домашньою директорією в /home/Arthur. Користувач Arthur входить в групу users.

Якщо необхідний користувач ще не існує, то створимо:

adduser Arthur

Створимо групу:

groupadd users

Додаємо користувача Arthur в групу users:

useradd -G users Arthur

Установка OpenSSH

Якщо OpenSSH ще не встановлено:

apt-get install ssh openssh-server

Включення chrooted SFTP

Для включення SFTP відкриємо файл настройки OpenSSH сервера:

nano /etc/ssh/sshd_config

і переконаємося в тому, що є одна з цих рядків:

Subsystem sftp /usr/lib/openssh/sftp-server

або:

Subsystem sftp internal-sftp

Потім додамо наступний блок в кінець файлу (для кожного користувача якого хочемо chroot-ить необхідний окремий блок):

Match User Arthur
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server

Примітка: ChrootDirectory - власником цього каталогу повинен бути root і у інших користувачів не повинно бути прав на запис. Тому ChrootDirectory робиться на каталог вище, де у користувачів немає прав на запис, а вже всередині каталогу /home/Arthur у нього є права на запис.

Якщо користувачів багато, тоді можна chroot-нуть групу в яку входять всі користувачі:

Match Group users
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server

Примітка: Match - підтримує «User», «Group», «Host» і «Address» - для гнучкої і груповий настройки.

Тобто все що входять до групи users будуть chroot-ится в директорію /home.

Перезапускаємо OpenSSH:

sudo /etc/init.d/ssh restart

або так:

sudo service ssh restart

Якщо ми chroot-ім різних користувачів в одну директорію але не хочемо, щоб вони гуляли по домашнім директоріям інших користувачів, тоді потрібно змінити права на кожну домашню директорію:

chmod 700 /home/Arthur

Тепер можна підключиться до нашого хосту по протоколу SFTP.