Sudo, su & scripts

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

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

Ik heb een map met eigen scripts, oorspronkelijk op /opt/scripts, maar recentelijk verplaatst naar /home/strompf/Dropbox/.roaming/opt/scripts. So far, so good.

Maar niet zo good:

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.

Gebruikers

PATH-variabele specificeren en aanpassen in .bashrc - Nie moeilijk!

su

  • su Maakt gebruik van sytem-wide environment variables. Die vind je in /etc/environment
  • Als je daar de PATH-variabele bijwerkt, dan werkt het commando su MyScript.sh.

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"

Vandaar de foutmelding. Uiteraard kun je dit pad aanpassen, maar ik heb de indruk dat dat niet verstandig is. Alternatieve oplossingen:

  • Gebruik sudo in het script zelf, waar dat nodig is - Getest, en het werkt
  • Gebruik su
  • Gebruik absolute padnamen.

Bronnen