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)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
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)
Fabien LE LEZ
Le #24208171
On Mon, 30 Jan 2012 23:27:24 +0100, (Une
Bévue):

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



J'ai l'impression que tu n'as pas besoin de savoir si sudo est
intervenu ou pas. Ce que tu veux savoir, c'est si l'utilisateur est
root ou pas. Ce qui est assez différent.
Tanguy Briançon
Le #24208241
Bonjour,

J'ai mon pc perso qui est un serveur ssh. Un extrait de
var/lo/auth.log



Jan 30 20:40:50 localhost sshd[11274]: Failed password for root from
211.147.255.238 port 57201 ssh2

Jan 30 20:40:58 localhost sshd[11290]: Failed password for root from
211.147.255.238 port 59015 ssh2

Jan 30 20:41:05 localhost sshd[11308]: Failed password for root from
211.147.255.238 port 60825 ssh2

Jan 30 20:41:13 localhost sshd[11333]: Failed password for root from
211.147.255.238 port 34410 ssh2

...
Jan 30 20:41:37 localhost sshd[11389]: Invalid user postgres from
211.147.255.238
Jan 30 20:41:37 localhost sshd[11389]: error: Could not get shadow
information for NOUSER
Jan 30 20:41:37 localhost sshd[11389]: Failed password for invalid user
postgres from 211.147.255.238 port 39843 ssh2

Jan 30 20:41:44 localhost sshd[11405]: Invalid user postgres from
211.147.255.238
Jan 30 20:41:44 localhost sshd[11405]: error: Could not get shadow
information for NOUSER
ssh2

...

Quelques questions: les connexions root sont interdites avec password
(moi même je n'y arrive pas). Ells sont authorisées via les clés, si
je comprends bien le fichier config de sshd (je n'utilise pas).

On remarque que toutes les tentatives viennent de la même ip: ces
tentatives ne me semblent pas dangereuse. Je
n'ai jamais vu de tentative de login avec un user valide (sauf les
vraies users qui ont un compte....). Est-il possible de savoir les
passwords essayé? Exemple:
" Failed password for invalid user postgres from 211.147.255.238 port
39843". Aucun user postgres n'existe sur ma machine mais on peut avoir
une idée du password essayé?

Si on voulait vraiment attaqué mon PC il me semble qu'une attaque
massive (des milliers de tentative de connexion en quelques
secondes mettrait mon pc à genoux). Mais personne n'a envie d'attaquer
sérieusement mon PC.

J'en déduit donc que des robots tentent des tentatives de connexion
ssh soit comme root soit avec des noms de users débiles (et
des passwords idiots?). Hélas j'en déduit que cela doit marcher de
temps enn temps? Honte aux admins des machines craquées?

Il me semble que même si on a un login, il y a des temps d'attentes
quand 3 passwords sont faux...

Quel est a votre avis le niveau de sécurité du serveur open-ssh
(avec des logins non évidents, et des passwords non triviaux)?


Tanguy
Sergio
Le #24208371
Le Mon, 30 Jan 2012 23:27:23 +0100, Une Bévue a écrit :

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 sudoer :
imyt% sudo echo $UID
Password:
501
imyt% sudo echo $UID_ROOT

imyt%

sur Mac os x lion ça ne marcherait pas ?



$UID_ROOT est une simple variable, définie au début du script
("UID_ROOT=0")...
J'aurais pu faire des comparaisons directes avec 0, mais ça fait plus
"portable" (si un jour l'UID de root devient autre chose que 0).

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
erwan
Le #24208361
Sergio

$UID_ROOT est une simple variable, définie au début du script
("UID_ROOT=0")...
J'aurais pu faire des comparaisons directes avec 0, mais ça fait plus
"portable" (si un jour l'UID de root devient autre chose que 0).



Ce jour là tu ne tourneras plus sous Unix... Il n'est pas possible de
changer cet UID sans changer l'OS complètement.

--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Sergio
Le #24208391
Le Tue, 31 Jan 2012 07:57:44 +0100, erwan a écrit :

$UID_ROOT est une simple variable, définie au début du script
("UID_ROOT=0")...
J'aurais pu faire des comparaisons directes avec 0, mais ça fait plus
"portable" (si un jour l'UID de root devient autre chose que 0).



Ce jour là tu ne tourneras plus sous Unix... Il n'est pas possible de
changer cet UID sans changer l'OS complètement.



Explique ça à l'auteur de l'ABS Guide... (chercher le script 'cleanup')
où j'ai pompé ce bout de script...

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Publicité
Poster une réponse
Anonyme