GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit cestu pro příkazy sudo

To je obvykle nastaveno pomocí secure_path možnost v /etc/sudoers . Od 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 environ‐
               ment 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.

Chcete-li spustit příkazy, které nejsou ve výchozím nastavení $PATH , můžete buď

  1. Použijte úplnou cestu:sudo ~/bin/my-command; nebo

  2. Přidejte adresář obsahující příkaz do secure_path . Spusťte sudo visudo a upravte zabezpečenou cestu:

    Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/youruser/bin/"
    

    Uložte soubor a při příštím spuštění sudo , adresář ~/bin bude ve svých $PATH .


Toto jsem použil pro řešení:

sudo cp $(which my-command) /usr/bin
...

which příkaz se provádí v podshellu, který není root, takže je schopen najít my-command , pak sudo zkopíruje spustitelný soubor do cesty, která má root uživatel může přistupovat. Není to skvělé pro zabezpečení, ale bylo v pořádku, když jsem spouštěl bitovou kopii dockeru, která byla zničena hned po spuštění příkazu.


Linux
  1. Jak nastavit vHosts v Apache

  2. Jak ve skriptu Python nastavím PYTHONPATH?

  3. Jak mohu nastavit automatické dokončování pro příkazy Git?

  1. Jak nastavit cestu JAVA_HOME na Ubuntu?

  2. Jak udělat alias pro dlouhou cestu?

  3. Jak nastavím výchozí přezdívku pro nová připojení irssi?

  1. Jak vytvořit `sudo`, aby zachoval $path?

  2. Jak nastavit umask pro systémového uživatele?

  3. Jak nastavit PATH pro všechny uživatele v Debianu?