Відповіді:
Це просто. Просто створіть нового користувача з домашнім каталогом, встановленим для того, до якого вам потрібно мати доступ (ця команда повинна виконуватися під sudo
або в кореневій оболонці):
adduser --home /restricted/directory restricted_user
Це створить користувача restricted_user
, каталог /restricted/directory
і потім буде встановлено дозволи для каталогу, щоб користувач міг писати в нього. За замовчуванням вона не зможе писати до будь-якого іншого каталогу.
Якщо у вас вже є каталог, ви можете запустити adduser
команду з --no-create-home
доданою опцією та встановити дозволи вручну (також із правами root), наприклад:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Якщо вам потрібно зробити навіть доступні для запису світові каталоги недоступними для цього користувача, є два варіанти.
1) Якщо ви хочете надати користувачеві сеанс інтерактивної оболонки, то розгляньте, дотримуючись цього посібника щодо створення в'язниці chroot (у вашому /restricted/directory
).
Після цього додайте до свого sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Якщо вам потрібно лише копіювати файли між його кінцевою точкою з'єднання та вашим хостом, все набагато простіше. Додайте ці рядки в кінці вашого sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Потім прокоментуйте знак, Subsystem sftp /usr/lib/openssh/sftp-server
поставивши #
на початку знак хеш ( ).
Після перезавантаження вашого SSH-сервера (він не знищує інтерактивні сеанси при перезапуску, тому це безпечно, навіть якщо ви щось неправильно налаштували; також не закриває запущений сеанс перед тим, як перевірити, що ви все ще можете ввійти), все має працювати за призначенням.
Subsystem sftp internal-sftp
рядок у своєму другому прикладі над Match
блоком. Інакше ssh видасть помилку і не запуститься.
Найпростіший спосіб створити обмеженого користувача, який не може скинути заданий каталог (наприклад, у верхній каталог тощо) і має обмежений / вибраний набір команд для використання, - використовувати обмежений оболонку. Довідка:
Спочатку створіть символьне посилання під назвою rbash
(запустити як користувач root).
ln -s /bin/bash /bin/rbash
Потім просто створіть звичайного користувача за допомогою цієї обмеженої оболонки та встановіть її домашній dir у потрібну папку:
useradd -s /bin/rbash -d /home/restricted_folder username
Навіть без оболонки з обмеженими можливостями, якщо ви явно не додасте цього користувача до списку судора чи будь-яких спеціальних груп, він за замовчуванням буде обмежений.
З обмеженою оболонкою забороняється або не виконується:
зміна каталогів cd
встановлення або скасування значень SHELL, PATH, ENV або BASH_ENV
із зазначенням імен команд, що містять /
вказуючи ім'я файлу, що містить a / як аргумент для. вбудована команда
Вказівка імені файлу, що містить косу рису, як аргумент для параметра -p для вбудованої хеш-команди
імпорт визначень функцій із середовища оболонки при запуску
аналіз значення SHELLOPTS з середовища оболонки при запуску
перенаправлення виводу за допомогою операторів перенаправлення>,> |, <>,> &, &> та >>
використовуючи команду exec buildin для заміни оболонки на іншу команду
додавання або видалення вбудованих команд з параметрами -f та -d до команди enable вбудованої
Використання команди вбудованої команди для ввімкнення відключених вбудованих оболонок
вказуючи параметр -p на команду вбудованої команди
вимкнення режиму з обмеженням set + r або set + o обмежено.
Ці обмеження застосовуються після запуску файлів
Більше того / Необов'язково, щоб обмежити користувача обмеженим / вибраним набором команд, які можна використовувати, ви можете створити .bash_profile, доступний лише для читання цьому користувачеві, за допомогою
PATH=$HOME/bin
і символізуйте всі потрібні команди в папку ~ / bin для цього користувача:
ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm
тощо.
HTH