Как я могу ограничить объем исполняемых команд, которые может запускать пользователь Linux?
Например, я хочу, чтобы пользователь мог запускать только ls
команда и ничего больше. Если пробовали, например запустить cat
, linux выдаст ошибку или вернет null.
Я заглянул в alias
команда, чтобы установить предопределенный список пользовательских команд, но это не ограничивает пользователя от выполнения других команд. Я действительно хотел бы установить alias
затем ограничивают область действия только этими.
Я также изучил эта документация ограничивают пользователей, но все еще не знают, как это сделать.
Область действия: я использую учетную запись службы для запуска команд ssh в нашем приложении PHP. Я хочу ограничить команды для этой учетной записи службы, чтобы предотвратить ситуацию, когда кто-то вводит команды в ssh_exec();
- Такие как ls
и ввести | some command
Думаю, я попробую это: https://github.com/ghantoos/lshell
Вы также можете привязать команды к определенным ssh-ключам в файле авторизованных ключей.
from="host.com",command="/bin/ls" ssh-dss <SSH PUBLIC KEY>
Это ограничивает доступ к учетной записи с использованием определенного общедоступного ssh, чтобы запускать только определенную команду с определенного хоста. Видеть
man sshd
для дополнительных опций.
Я бы, наверное, занялся этой ситуацией, написав сценарий-оболочку. Здесь для вас доступно частичное решение, пожалуйста, прочтите и посмотрите, не сможете ли вы сделать это по этой ссылке.
Я знаю, что это определяет использование UID, если вам это нужно для нескольких пользователей, подумайте об использовании GID вместо этого и поместите всех этих типов пользователей в ту же самую группу.
Ура и удачи!
Если вы хотите ограничить выполнение команд пользователями SSH, вы можете использовать ChrootDirectory
введено в OpenSSH 4.9p1
Вы также найдете статически связанный двоичный файл busybox
полезно при настройке среды chroot. (В приведенной выше статье уделяется много внимания настройке полной среды chroot.)