Есть ли способ ограничить следующие команды sudo -i
или sudo -s
в файле sudoers
?
Когда я добавлю !/usr/bin/sudo -i
или !/usr/bin/sudo -s
, sudo
прежнему позволяет пользователям запускать команду.
Я знаю, что это не очень хороший ответ, так как я не могу напрямую ответить на ваш вопрос, но в man sudoers
есть раздел под названием « Предотвращение побега оболочки», который, я думаю, может вас заинтересовать:
Когда sudo выполняет программу, она может делать все, что пожелает, в том числе запускать другие программы. Это может быть проблемой безопасности, поскольку программа нередко разрешает экранирование оболочки, что позволяет пользователю обходить контроль доступа и ведение журнала sudo. К распространенным программам, разрешающим экранирование оболочки, относятся оболочки (очевидно), редакторы, paginators, почта и терминальные программы.
Есть два основных подхода к этой проблеме:
restrict Avoid giving users access to commands that allow the user to run arbitrary commands. Many editors have a restricted mode where shell escapes are disabled, though sudoedit is a better solution to running editors via sudo. Due to the large number of programs that offer shell escapes, restricting users to the set of programs that do not is often unworkable. noexec Many systems that support shared libraries have the ability to override default library functions by pointing an environment variable (usually LD_PRELOAD) to an alternate shared library. On such systems, sudo's noexec functionality can be used to prevent a program run by sudo from executing any other programs. Note, however, that this applies only to native dynamically-linked executables. Statically-linked executables and foreign executables running under binary emulation are not affected.
Черный список в sudoers - почти наверняка пустая трата времени. Есть слишком много обходных путей.
Для реализации каких-либо ограничений единственный практический подход - белый список. Даже в этом случае будьте осторожны с разрешениями для любых команд, включенных в белый список (для этого потребуется регулярный аудит), любых команд, которые могут разрешать экранирование оболочки, и любых команд, которые могут записывать новые / существующие файлы.
Так, например, это плохие идеи: