Дозволити користувачеві виконувати команди як інший користувач із оточенням у судорах


2

Отже, у мене є файл, який виглядає приблизно так у моєму файлі sudoers:

user1 ALL=(user2) NOPASSWD: /scripts/dir/

Це дозволяє user1 запускати всі виконувані файли в /scripts/dir/якості user2, не вводячи свій пароль, використовуючи команду типу sudo -u user2 /scripts/dir/script. Однак я зіткнувся з проблемами, в яких очікується, що виконувані файли працюватимуть із середовищем user2 ( $PATH, $DISPLAYтощо). user1 може домогтися цього, виконавши щось на зразок, sudo -iu user2 /scripts/dir/scriptщо імітує оболонку входу, але з вищевказаним вводом sudoers це не працює, і йому буде запропоновано ввести свій пароль. Чи є запис судорів, який дозволить користувачеві1 запустити цю команду або, принаймні, матиме змогу створити .bashrc, .cshrc тощо. User2 під час виконання команд?

Я знайшов SETENVваріант, але це дозволяє користувачеві1 зберігати існуюче середовище, а не приймати середовище user2. Я міг би source /home/user2/.bashrcслідувати за цим sudo -Eu user2 /scripts/dir/script; це дасть середовище user1 user2, яке буде збережено -Eпараметром, але це передбачає, що user1 прочитав доступ до .bashrcфайлу і що сценарій не намагається виконувати жодні команди, які user1 не має дозволу на запуск.

Сторінка людини sudoers повідомляє про -iможливість sudo:

Як особливий випадок, якщо вказано параметр -i (початковий вхід) sudoers, sudoers буде ініціалізувати середовище незалежно від значення env_reset. Змінні DISPLAY, PATH та TERM залишаються незмінними; HOME, MAIL, SHELL, USER та LOGNAME встановлюються залежно від цільового користувача. В AIX (та системи Linux без PAM) також міститься вміст / etc / environment. У системах BSD, якщо прапор use_loginclass увімкнено, також застосовуються змінні шляху та setenv в /etc/login.conf. Усі інші змінні середовища видаляються.

що, схоже, вказує на те, що можна надати -iопцію з деякою конфігурацією судорів, можливо, надавши користувачеві дозвіл на виконання ALLкоманд або спеціально дозволяючи цю -iопцію в судорах, але я сподіваюся, що існує більш тонкий спосіб досягти цього. Крім того , здається, вказує , що PATHі DISPLAYвийде з середовища користувача User1 , який є не те , що я хочу.

Звичайно, я можу дати користувачеві1 більше дозволів, ніж потрібно для цього, але це становить ризики для безпеки.

Відповіді:


0

Отже, я не міг знайти безпечний спосіб зробити це, тому я в кінцевому підсумку використовував SETENV:параметр у записі sudoers, а потім перед тим, як видавати команди як user1, я джерело user2 .bashrcта надаю -Eопцію при виклику sudo. Це не безпечний спосіб виконання того, що я хотів зробити, тому що user1 може встановити свою PATHзмінну середовища таким чином, щоб він міг виконувати довільні виконувані файли як user2.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.