LINUX.ORG.RU

sudo не подставляет $PATH целевого юзера


0

1

собственно сабж.
интересует самый распространенный вариант - sudo без параметров для выполнения в окружение root.
стало это какое то время назад, с чем было связано - не помню.
игры в env_reset и env_keep в sudoers результата не дали. Не зависимо от того (т.е. настройка то из sudoers нормально применяется), попадает ли $PATH в Environment variables to preserve: при выполнении sudo -V она все равно подставляется от запустившего юзера, а не от целевого.

вот как быть?
гуглеж показал что не я один такой, но везде, куда тыкнулся в лучшем случае заканчивалось добавлением /sbin:/usr/sbin в юзерский $PATH.



★★

man sudo

-i [command]
The -i (simulate initial login) option runs the shell specified in the passwd(5) entry of the target user as a login shell.  This means that login-specific resource files such as .profile or .login will be read by the shell.  If a command is specified, it is passed to the shell for execution.  Otherwise, an interactive shell is executed.  sudo attempts to change to that user's home directory before running the shell.  It also initializes the environment, leaving DISPLAY and TERM unchanged, setting HOME, MAIL, SHELL, USER, LOGNAME, and PATH, as well as the contents of /etc/environment on Linux and AIX systems.  All other environment variables are removed.

kaktyc ★★★★
()
Ответ на: комментарий от griz

УМВР

user@host:~$ env | grep test
user@host:~$ sudo su -
root@host:~# echo 'export PATH="$PATH:/tmp/test"' >> /root/.profile 
root@host:~# source /root/.profile
root@host:~# env | grep test
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/etc/alternatives/gem-bin:/tmp/test
root@host:~# logout
user@host:~$ env | grep test
user@host:~$ sudo env | grep test
user@host:~$ sudo -i env | grep test
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/etc/alternatives/gem-bin:/tmp/test:/tmp/test
user@host:~$ 

kaktyc ★★★★
()

Вероятно, это произошло после обновления sudo.

sudo (1.8.2-1) unstable; urgency=low

The sudo package is no longer configured using --with-secure-path. Instead, the provided sudoers file now contains a line declaring 'Defaults secure_path=' with the same path content that was previously hard-coded in the binary. A consequence of this change is that if you do not have such a definition in sudoers, the PATH searched for commands by sudo may be empty.

Using explicit paths for each command you want to run with sudo will work well enough to allow the sudoers file to be updated with a suitable entry if one is not already present and you choose to not accept the updated version provided by the package.

blocknote
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.