Это просто Просто создайте нового пользователя с его домашним каталогом, для которого вы должны иметь доступ (эта команда должна быть запущена 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-сервера (он не прерывает интерактивные сеансы при перезапуске, поэтому он безопасен, даже если вы что-то неправильно настроили; также не закрывает запущенный сеанс, пока вы не проверили, что все еще можете войти), все должно работать как предполагалось.
Subsystem sftp internal-sftp
строку во втором примере надMatch
блоком. В противном случае ssh выведет ошибку и не запустится.Самый простой способ создать пользователя с ограниченными правами, который не может отклониться от заданного каталога (например, в верхний каталог и т. Д.) И который имеет ограниченный / выбранный набор команд для использования, - это использовать Restricted Shell. Ref:
http://man.he.net/man1/rbash
Сначала создайте символическую ссылку с именем
rbash
(запустите от имени пользователя root).Затем просто создайте обычного пользователя с помощью этой ограниченной оболочки и установите его домашний каталог в нужную папку:
Даже без использования 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 только для чтения для этого пользователя с помощью
и вставьте любые пользовательские команды в папку ~ / bin для этого пользователя:
и т.п.
НТН
источник