Sudo, su & scripts: verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
 
(16 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
<code>sudo</code> Staat voor ''super user do'' en da's een manier om een commando uit te voeren als beheerder. <code>su</code> Staat voor ''substitute user'': Een manier om de actuele inlogprompt van eigenaar te laten veranderen. In den beginne allemaal duidelijk. Niet dus.
+
Op het moment dat ik de executie van scripts combineer met <code>sudo</code> of <code>su</code>, krijg ik allerlei rare effecten. Tijd om in het konijnenhol af te dalen!
  
 
== sudo cd ==
 
== sudo cd ==
Regel 11: Regel 11:
 
== PATH ==
 
== PATH ==
  
Ik heb een map met eigen scripts, oorspronkelijk op <code>/opt/scripts</code>, maar recentelijk verplaatst naar <code>/home/strompf/Dropbox/.roaming/opt/scripts</code>. So far, so good.
+
In <code>/home/jeroen/Dropbox/Scripts</code> bewaar ik allerlei eigen scripts, bv. rondom webserverbeheer. Die locatie heb ik toegevoegd aan <code>$PATH</code>. Toch gaat dat niet altijd goed:
  
Maar niet zo good:
+
<pre>
 +
MijnScript.sh        # Werkt prima
 +
sudo MijnScript.sh  # Werkt niet!
 +
su MijnScript.sh    # Werkt niet!
 +
</pre>
  
MijnScript.sh        # Werkt prima
+
Dat komt omdat ''gebruikers'', ''sudo'' en ''su'', alle drie andere mechanismes hebben tav. de PATH-variabele.
sudo MijnScript.sh  # Werkt niet!
+
 
su MijnScript.sh     # Werkt niet!
+
=== Reguliere gebruikers ===
 +
 
 +
Voor reguliere gebruikers, kun je de PATH-variabele specificeren en/of aanpassen in <code>.bashrc</code> - Werkt prima.
 +
 
 +
=== su ===
 +
 
 +
<code>su</code> Maakt gebruik van ''sytem-wide environment variables''. Die vind je in <code>/etc/environment</code> (het bestand - niet de map!). Voorbeeld van wat ik daar zoal aantrof in een vrij nieuwe Linux Mint-installatie (juli 2020):
 +
 
 +
<pre>
 +
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
 +
</pre>
 +
 
 +
Dit heb ik als volgt aangepast:
 +
 
 +
<pre>
 +
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/strompf/Dropbox/Scripts"
 +
</pre>
 +
 
 +
Het commando <code>su MyScript.sh</code> werkt nu.
 +
 
 +
=== sudo ===
 +
 
 +
''sudo'' Has a policy of resetting the environment and setting a secure path. It is enabled by default:
 +
 
 +
<pre>
 +
/etc/sudoers:
 +
 
 +
Defaults  env_reset
 +
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
 +
</pre>
 +
 
 +
In juli 2020 heb ik dit aangepast middels <code>sudo visudo</code> - Werkt prima.
 +
 
 +
== Zie ook ==
 +
 
 +
* [[Su]]
 +
* [[Sudo]]
  
 
== Bronnen ==
 
== Bronnen ==
Regel 24: Regel 64:
 
* http://askubuntu.com/questions/291666/why-doesnt-sudo-cd-var-named-work
 
* http://askubuntu.com/questions/291666/why-doesnt-sudo-cd-var-named-work
 
* http://askubuntu.com/questions/128413/setting-the-path-so-it-applies-to-all-users-including-root-sudo
 
* http://askubuntu.com/questions/128413/setting-the-path-so-it-applies-to-all-users-including-root-sudo
 +
* https://help.ubuntu.com/community/EnvironmentVariables

Huidige versie van 21 jul 2020 om 17:50

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