Чи є спосіб обмежити наступні команди sudo -i
або sudo -s
у sudoers
файлі?
Коли я додаю !/usr/bin/sudo -i
або !/usr/bin/sudo -s
, sudo
все ще дозволяє користувачам виконувати команду.
Чи є спосіб обмежити наступні команди sudo -i
або sudo -s
у sudoers
файлі?
Коли я додаю !/usr/bin/sudo -i
або !/usr/bin/sudo -s
, sudo
все ще дозволяє користувачам виконувати команду.
Відповіді:
Я знаю, що це не є гарною відповіддю, тому що я не можу безпосередньо відповісти на ваше запитання, але в man sudoers
розділі під назвою Запобігання втечам від снарядів, який, на мою думку, може вас зацікавити:
Після того як sudo виконує програму, ця програма може робити все, що заманеться, включаючи запуск інших програм. Це може бути проблемою безпеки, оскільки це не рідкість, коли програма дозволяє заборонити оболонки, що дозволяє користувачеві обходити контроль доступу та ведення журналу Sudo. До загальних програм, що дозволяють виконувати функції оболонок оболонок, є оболонки (очевидно), редактори, пагінатори, поштові та термінальні програми.
Існує два основних підходи до цієї проблеми:
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.
Чорний список у судорах майже напевно є марною тратою часу. Просто занадто багато способів вирішення.
Для здійснення будь-яких обмежень білий список є єдиним практичним підходом. Навіть тоді будьте уважні до дозволів для будь-яких команд, включених у білий список (потрібно буде регулярний аудит цього), будь-яких команд, які можуть дозволити скасування оболонки, та будь-яких команд, які можуть записувати нові / існуючі файли.
Так, наприклад, це погані ідеї:
sudo /bin/bash
абоsudo /bin/zsh
чиsudo /some/renamed/bash
? Якщо ви хочете обмежити користувачів, вам слід додати дозволених команд.