Sudo, su & scripts

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Op het moment dat ik de executie van scripts combineer met sudo of su, krijg ik allerlei rare effecten. Tijd om in het konijnenhol af te dalen!

sudo cd

Het commando sudo cd ... werkt niet: Na dit commando, is de werkdirectory immers aangepast, en mogelijk naar een locatie waar de gewone gebruiker geen rechten toe heeft.

De oplossing zou zijn:

sudo -i

PATH

In /home/jeroen/Dropbox/Scripts bewaar ik allerlei eigen scripts, bv. rondom webserverbeheer. Die locatie heb ik toegevoegd aan $PATH. Toch gaat dat niet altijd goed:

MijnScript.sh        # Werkt prima
sudo MijnScript.sh   # Werkt niet!
su MijnScript.sh     # Werkt niet!

Dat komt omdat gebruikers, sudo en su, alle drie andere mechanismes hebben tav. de PATH-variabele.

Reguliere gebruikers

Voor reguliere gebruikers, kun je de PATH-variabele specificeren en/of aanpassen in .bashrc - Werkt prima.

su

su Maakt gebruik van sytem-wide environment variables. Die vind je in /etc/environment (het bestand - niet de map!). Voorbeeld van wat ik daar zoal aantrof in een vrij nieuwe Linux Mint-installatie (juli 2020):

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Dit heb ik als volgt aangepast:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/strompf/Dropbox/Scripts"

Het commando su MyScript.sh werkt nu.

sudo

sudo Has a policy of resetting the environment and setting a secure path. It is enabled by default:

/etc/sudoers:

Defaults  env_reset
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

In juli 2020 heb ik dit aangepast middels sudo visudo - Werkt prima.

Zie ook

Bronnen