Sudo, su & scripts
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.