Чтобы создать пользователя SSH, который имеет разрешение только на доступ к определенным папкам

48

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

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

дурацкий
источник

Ответы:

50

Это просто Просто создайте нового пользователя с его домашним каталогом, для которого вы должны иметь доступ (эта команда должна быть запущена 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поместив знак hash ( #) в начале.

После перезапуска вашего SSH-сервера (он не прерывает интерактивные сеансы при перезапуске, поэтому он безопасен, даже если вы что-то неправильно настроили; также не закрывает запущенный сеанс, пока вы не проверили, что все еще можете войти), все должно работать как предполагалось.

whitequark
источник
1
Я пытался, но кажется, что я все еще могу CD .. и просматривать верхний каталог. и когда я использую vi a.txt в верхнем каталоге, он показывает: нажмите Enter или команду, чтобы продолжить, и я не могу выйти из vi
Глупо
1
Могу ли я использовать опцию № 2, если пользователь должен иметь доступ только по sshfs?
flickerfly
1
Все отлично работает, кроме того, что у меня нет разрешения на запись. Как я могу установить разрешение на запись для этого ограниченного каталога. Если я использую chmod 775, пользователь больше не сможет войти.
Меня зовут
3
Вы должны написать Subsystem sftp internal-sftpстроку во втором примере над Matchблоком. В противном случае ssh выведет ошибку и не запустится.
Tik0
1
Спойлер предупреждение: не работает с Scp
велосипедом
5

Самый простой способ создать пользователя с ограниченными правами, который не может отклониться от заданного каталога (например, в верхний каталог и т. Д.) И который имеет ограниченный / выбранный набор команд для использования, - это использовать Restricted Shell. Ref:

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

Сначала создайте символическую ссылку с именем rbash(запустите от имени пользователя root).

ln -s /bin/bash /bin/rbash

Затем просто создайте обычного пользователя с помощью этой ограниченной оболочки и установите его домашний каталог в нужную папку:

useradd -s /bin/rbash -d /home/restricted_folder username

Даже без использования Restricted Shell, если вы явно не добавите этого пользователя в список sudoer или какие-либо специальные группы, он будет ограничен по умолчанию.

С помощью Restricted Shell следующие действия запрещены или не выполняются:

  • смена каталогов с помощью CD

  • установка или сброс значений SHELL, PATH, ENV или BASH_ENV

  • указание имен команд, содержащих /

  • указав имя файла, содержащее / в качестве аргумента для. встроенная команда

  • Указание имени файла, содержащего косую черту, в качестве аргумента опции -p встроенной команды hash

  • импорт определений функций из среды оболочки при запуске

  • парсинг значения SHELLOPTS из среды оболочки при запуске

  • перенаправление вывода с использованием операторов перенаправления>,> |, <>,> &, &> и >>

  • использование встроенной команды exec для замены оболочки другой командой

  • добавление или удаление встроенных команд с опциями -f и -d для встроенной команды enable

  • Использование команды enable builtin для включения отключенных встроенных команд оболочки

  • указание опции -p для встроенной команды

  • отключение ограниченного режима с ограниченным набором + 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

и т.п.

НТН

XPT
источник
Я могу найти любой файл в файловой системе, в том числе / корневой каталог, и я могу прочитать эти файлы. Хотите знать, как еще больше ограничить доступ для просмотра чего-либо вне пользовательской папки или захвата любых сетевых пакетов или чтения содержимого / var / log
16851556