Як обмежити користувачеві доступ по SFTP в свою домашню директорію
Це важко буде назвати керівництвом або мануалом по налаштуванню прав доступу користувачів в Linux.
Тут я описую одну конкретну задачу, з якою часто доводиться стикатися в повсякденній роботі.
Працюємо ми в основному з CentOS, а останнім часом саме з CentOS 7, тому дана шпаргалка призначена в першу чергу для даної версії системи. Якщо вона працює і в інших дистрибутивах або версіях CentOS - чудово.
Перш за все, я допускаю що OpenSSH вже встановлений в системі.
Тому відразу ж йдемо в редагування налаштувань
Прокрутити до кінця файлу і дописуємо наступні рядки
Тут доречно маленьке, але дуже важливе зауваження.
По-перше, власником усіх директорій в дорозі, які ми вказуємо в директиві ChrootDirectory повинен бути root. В іншому випадку користувач просто не зможе зайти по SFTP.
По-друге, ці директорії не повинні бути доступні для запису для будь-яких інших користувачів.
Таким чином, нам необхідно виконати ще кілька дій, щоб обмеження доступу користувача в свою домашню директорію мало сенс.
Є кілька варіантів. Тут розглянемо два з них.
Перший варіант: міняємо власника директорії testuser на root і створюємо піддиректорію, наприклад public_html, власником якої буде вже наш користувач testuser.
Таким чином, наш користувач по суті втрачає свою власну домашню директорію, але при цьому має права на читання її вмісту, а також повний доступ до піддиректорії public_html, де він вже зможе створювати все що необхідно.
Другий варіант: в конфіграціі SSH сервера вказуємо базовий шлях до директорії / home, власником якої в будь-якому випадку є root і вона недоступна для запису іншими користувачами.
У цьому випадку наш користувач testuser не втрачає свою домашню директорію і має повні права на запис у своїй директорії.
Разом з цим, якщо у нас в системі будуть інші користувачі, при логін буде видно всі домашні директорії всіх користувачів. Але це вже тема для окремого посту.