Отже, у мене є файл, який виглядає приблизно так у моєму файлі 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 більше дозволів, ніж потрібно для цього, але це становить ризики для безпеки.