Щоб створити SSH користувача, який має лише дозвіл на доступ до певних папок


47

Я встановив SSH, але виявив, що якщо використовую свій оригінальний обліковий запис для входу в Ubuntu, він має занадто багато дозволів.

Я хочу обмежити користувача мати лише дозволи для певних папок Ubuntu. Як я можу налаштувати такого користувача?

Відповіді:


49

Це просто. Просто створіть нового користувача з домашнім каталогом, встановленим для того, до якого вам потрібно мати доступ (ця команда повинна виконуватися під 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-сервера (він не знищує інтерактивні сеанси при перезапуску, тому це безпечно, навіть якщо ви щось неправильно налаштували; також не закриває запущений сеанс перед тим, як перевірити, що ви все ще можете ввійти), все має працювати за призначенням.


1
Я спробував, але здається, що я все ще можу cd .. і переглядати верхній каталог. і коли я використовую vi a.txt у верхньому каталозі, він показує: натисніть клавішу Enter або команду для продовження, і я не можу вийти з vi
Foolish

1
Чи можу я використовувати варіант №2, якщо користувач повинен мати доступ лише до sshfs?
мерехтіння

1
Все працює добре, за винятком того, що я не маю дозволу на написання. Як я можу встановити дозвіл на запис цього обмеженого каталогу. Якщо я використовую chmod 775, користувач більше не може увійти.
Моє ім’я - це

3
Ви повинні написати Subsystem sftp internal-sftpрядок у своєму другому прикладі над Matchблоком. Інакше ssh видасть помилку і не запуститься.
Tik0

1
Оповіщення про спойлер: не працює з scp
велосипед

5

Найпростіший спосіб створити обмеженого користувача, який не може скинути заданий каталог (наприклад, у верхній каталог тощо) і має обмежений / вибраний набір команд для використання, - використовувати обмежений оболонку. Довідка:

http://man.he.net/man1/rbash

Спочатку створіть символьне посилання під назвою 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


я можу знайти будь-який файл у файловій системі, включаючи / root-каталог, і я можу прочитати ці файли. Цікаво, як додатково обмежити доступ до перегляду чого-небудь поза папкою користувача або захоплення будь-яких мережевих пакетів чи читання вмісту / вар / журналу
16851556,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.