Chrooted SFTP (SSH FTP)
Сервер 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.
Якщо ця стаття допомогла вам, будь ласка, залиште коментар
Дякую за прочитання!
Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.