Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tester si script lancé par sudo ou non

12 réponses
Avatar
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)

10 réponses

1 2
Avatar
Sergio
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
Avatar
Nicolas George
Une Bévue, dans le message
<1keoz70.8zsp181iv11q8N%, a écrit :
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 ?
Avatar
Sergio
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
Avatar
unbewusst.sein
Sergio wrote:

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)
Avatar
unbewusst.sein
Nicolas George <nicolas$ wrote:

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)
Avatar
Fabien LE LEZ
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.
Avatar
Tanguy Briançon
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
Avatar
Sergio
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
Avatar
erwan
Sergio écrivait :


$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é
Avatar
Sergio
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
1 2