GNT sans publicité, site mobile, fonctionnalitées exclusives...

tester si script lancé par sudo ou non

Le
unbewusst.sein
j'ai pris l'habitude de faire ça :
[ "$SUDO_USER" -a `id -u` -eq 0 ] || {
echo "Please run via sudo."
exit 1
}

echo "OK you are a SUDO_USER!"

# le script continue


je ne comprends pas bien le test :
$SUDO_USER" -a `id -u` -eq 0

parce que, si je lance le script via sudo,
id -u est à 0
si NON lancé par sudo
id -u est à 501


donc, qu'est-ce que fait "$SUDO_USER" -a là-dedans ???

en fait je voudrais une structure if then else fi
car je ferai des choses en + si le script est lancé par sudo, donc j'ai
écrit :

if [[ `id -u` -eq 0 ]]; then
echo "sudoer"
# faire ce qu'il y a à faire en tant que sudoer
else
echo "NOT sudoer"
# faire ce qu'il y a à faire en tant qu'user
fi
là dessus le "$SUDO_USER" -a " a disparu, d'où ma question


--
« Tel n'a de chaleur pour ses amis, que pour les brûler. »
(Proverbe arabe)
Lire les 12 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sergio
Le #24207251
Le Mon, 30 Jan 2012 16:31:03 +0100, Une Bévue a écrit :

j'ai pris l'habitude de faire ça :
[ "$SUDO_USER" -a `id -u` -eq 0 ] || {
echo "Please run via sudo."
exit 1
}

echo "OK you are a SUDO_USER!"

# le script continue



Moi je fais :

UID_ROOT=0
if [ "$UID" -ne "$UID_ROOT" ]
then
echo "Va donc, eh manant..."
else
echo "Mes hommages, vous êtes root..."
fi

(piqué dans l'ABS guide).


--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Nicolas George
Le #24207301
Une Bévue, dans le message
j'ai pris l'habitude de faire ça :



Pour faire quoi ? Pourquoi veux-tu tester si ton script a été lancé avec
sudo, et par opposition à quoi ?
Sergio
Le #24207431
Le Mon, 30 Jan 2012 17:26:42 +0000, Sergio a écrit :

j'ai pris l'habitude de faire ça :
[ "$SUDO_USER" -a `id -u` -eq 0 ] || {
echo "Please run via sudo."
exit 1
}



Moi je fais :

UID_ROOT=0
if [ "$UID" -ne "$UID_ROOT" ]
then
echo "Va donc, eh manant..."
else
echo "Mes hommages, vous êtes root..."
fi

(piqué dans l'ABS guide).



Sinon, si on utilise sudo plutôt que le compte "root" pour faire les
manips délicates, autant préfixer les commandes du script par sudo.

Exemple:
#!/bin/bash
#
# chkdsk : Force le fskck et redemarre
#
sudo touch /forcefsck
sudo touch /home/forcefsck
sudo shutdown -r -F now




--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
unbewusst.sein
Le #24208011
Sergio
Moi je fais :

UID_ROOT=0
if [ "$UID" -ne "$UID_ROOT" ]
then
echo "Va donc, eh manant..."
else
echo "Mes hommages, vous êtes root..."
fi

(piqué dans l'ABS guide).



En tant que simple user :
imyt% echo $UID
501
imyt% echo $UID_ROOT

imyt%

En tant que root :
imyt% su root
Password:
sh-3.2# echo $UID
0
sh-3.2# echo $UID_ROOT

sh-3.2#

en tant que sudoer :
imyt% sudo echo $UID
Password:
501
imyt% sudo echo $UID_ROOT

imyt%

sur Mac os x lion ça ne marcherait pas ?

--
« Tel n'a de chaleur pour ses amis, que pour les brûler. »
(Proverbe arabe)
unbewusst.sein
Le #24208001
Nicolas George
Pour faire quoi ? Pourquoi veux-tu tester si ton script a été lancé avec
sudo, et par opposition à quoi ?



comme simple utilisateur, les pems des fichiers enregistrés ne sont pas
les mêmes.

si le script a été lancé par sudo, je dois faire un :
chown yt:staff sur certains fichiers, sinon ils sont root:root

--
« Tel n'a de chaleur pour ses amis, que pour les brûler. »
(Proverbe arabe)
Publicité
Suivre les réponses
Poster une réponse
Anonyme