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.