我可以通过 CLI 使 `sudo` 跟随我的路径吗?

Win*_*nix 4 command-line sudo paths

您可以编辑sudoers文件并设置secure_path以匹配您的路径。这在Unix & Linux 中有记录

是否有我可以传递的命令行开关sudo,以便它使用我设置的路径?例如:

rick@alien:~$ sudo echo $PATH
/home/rick/bin:/home/rick/.local/bin:/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
???????????????????????????????????????????????????????????????????????????????
rick@alien:~$ echo $PATH
/home/rick/bin:/home/rick/.local/bin:/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
???????????????????????????????????????????????????????????????????????????????
rick@alien:~$ sudo which auto-brightness-config
/usr/local/bin/auto-brightness-config
???????????????????????????????????????????????????????????????????????????????
rick@alien:~$ which auto-brightness-config
/mnt/e/usr/local/bin/auto-brightness-config
???????????????????????????????????????????????????????????????????????????????
rick@alien:~$ sudo locate auto-brightness-config
/Desktop/Link to auto-brightness-config
/home/rick/Pictures/display-auto-brightness-config 1.png
/mnt/e/Desktop/Link to auto-brightness-config
/mnt/e/usr/local/bin/.auto-brightness-config
/mnt/e/usr/local/bin/Link to auto-brightness-config
/mnt/e/usr/local/bin/auto-brightness-config
/usr/local/bin/.auto-brightness-config
/usr/local/bin/Link to auto-brightness-config
/usr/local/bin/auto-brightness-config
Run Code Online (Sandbox Code Playgroud)

当我使用sudo它运行/usr/local/bin时,当我真正想要/mnt/e/usr/local/bin.

如果我不想维护sudoers文件中的路径,是否可以传递一个开关sudo以使用我的路径来查找正确的命令?

mur*_*uru 7

Ubuntu 默认已经secure_path设置:

~ sudo -l
Matching Defaults entries for muru on muru-1604:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin    
User muru may run the following commands on muru-1604:
    (ALL : ALL) ALL
Run Code Online (Sandbox Code Playgroud)

还有就是可以覆盖任何命令行选项secure_path中的设置sudoers

来自man sudoers

 secure_path   Path used for every command run from sudo.  If you don't
               trust the people running sudo to have a sane PATH
               environment variable you may want to use this.  Another use
               is if you want to have the “root path” be separate from the
               “user path”.  Users in the group specified by the
               exempt_group option are not affected by secure_path.  This
               option is not set by default.
Run Code Online (Sandbox Code Playgroud)

因此,无论设置exempt_groupsudoers和自己从添加到该组,或免除自己sudoers

Defaults:rick !secure_path
Run Code Online (Sandbox Code Playgroud)

rick大概是你的用户名。)

  • 我认为大多数用户不会想为此使用 `exempt_group`,因为免除组中的用户也不需要输入密码来运行带有 `sudo` 的命令。虽然我认为在这里提到 `exempt_group` 是一种可能的方法是没有道理的,但我建议明确说明这一点,并且我建议大多数人不要这样做,除非他们也想要(并且已经考虑过)这种效果. (4认同)