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

Lancement /etc/acpi/sleep.sh en tant qu'utilisateur + une idée

6 réponses
Avatar
thomas
Bonjour =C3=A0 tous,

Cela m'ennuie de taper mon mot de passe root =C3=A0 chaque fois que je lanc=
e
/etc/acpi/sleep.sh ou /etc/acpi/hibernate.sh (et je ne vois pas de bonne
raison d'utiliser uswsusp). Y a-t-il un moyen simple d'y arriver sans
ajouter =C3=A0 sudoers toutes les commandes des scripts qui doivent =C3=AAt=
re
lanc=C3=A9es en root? J'aimerais bien y mettre directement les deux scripts=
,
mais comme ce ne sont pas des binaires, =C3=A7a ne marche pas.

De mani=C3=A8re g=C3=A9n=C3=A9rale, je trouve =C3=A7a g=C3=AAnant qu'on ne =
puisse ajouter que des
binaires =C3=A0 sudoers et pas des noms de shell scripts. Il y aurait
peut-=C3=AAtre =C3=A0 ce sujet un petit programme simple =C3=A0 faire en C:=
un b=C3=AAte
lanceur de scripts dont le nom figure dans une "liste blanche" =C3=A9ditabl=
e
seulement par root. On ajoute ce lanceur =C3=A0 sudoers et =C3=A7a donne:

~$ sudo zelauncher /etc/acpi/sleep.sh # mise en veille par un user,
# pas de mot de passe =C3=A0 taper

~$ sudo zelauncher /tmp/evilscript.sh # un script malveillant
Sorry, '/tmp/evilscript.sh' not in '/etc/zelauncher.whitelist'

Qu'en dites-vous?

Thomas

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org

6 réponses

Avatar
Silvère Maugain
On Sat, Aug 15, 2009 at 10:25:22AM +0200, thomas wrote:
Bonjour à tous,


Bonjour,

Y a-t-il un moyen simple d'y arriver sans
ajouter à sudoers toutes les commandes des scripts qui doivent être
lancées en root?


Quite à dire une betise, fait-tu partie du groupe "powerdev" ?

Bonne journée,
Sil

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
~TraydenT~
On 15/08/2009 10:25, thomas wrote:
Bonjour à tous,



Bonjour,

Cela m'ennuie de taper mon mot de passe root à chaque fois que je lance
/etc/acpi/sleep.sh ou /etc/acpi/hibernate.sh (et je ne vois pas de bonne
raison d'utiliser uswsusp). Y a-t-il un moyen simple d'y arriver sans
ajouter à sudoers toutes les commandes des scripts qui doivent être
lancées en root? J'aimerais bien y mettre directement les deux scripts,
mais comme ce ne sont pas des binaires, ça ne marche pas.



J'allais dire Sticky Bit, mais j'ai bien fait de vérifier : du coup, je
vais dire SUID (http://fr.wikipedia.org/wiki/Permissions_Unix#Droit_SUID) ^^
De manière générale, je trouve ça gênant qu'on ne puisse ajouter que des
binaires à sudoers et pas des noms de shell scripts. Il y aurait
peut-être à ce sujet un petit programme simple à faire en C: un bête
lanceur de scripts dont le nom figure dans une "liste blanche" éditable
seulement par root. On ajoute ce lanceur à sudoers et ça donne:

~$ sudo zelauncher /etc/acpi/sleep.sh # mise en veille par un user,
# pas de mot de passe à taper

~$ sudo zelauncher /tmp/evilscript.sh # un script malveillant
Sorry, '/tmp/evilscript.sh' not in '/etc/zelauncher.whitelist'

Qu'en dites-vous?

Thomas



--
TraydenT

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
thomas
2009/8/15 Silvère Maugain :
On Sat, Aug 15, 2009 at 10:25:22AM +0200, thomas wrote:
Bonjour à tous,


Bonjour,

Y a-t-il un moyen simple d'y arriver sans
ajouter à sudoers toutes les commandes des scripts qui doivent à ªtre
lancées en root?


Quite à dire une betise, fait-tu partie du groupe "powerdev" ?



Gasp j'avais oublié ça!

~$ adduser thomas powerdev
~$ adduser thomas ashamed_users

Ça a résolu mon problème, merci!

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
thomas
2009/8/15 ~TraydenT~ :
On 15/08/2009 10:25, thomas wrote:
Cela m'ennuie de taper mon mot de passe root à chaque fois que je l ance
/etc/acpi/sleep.sh ou /etc/acpi/hibernate.sh (et je ne vois pas de bonne
raison d'utiliser uswsusp). Y a-t-il un moyen simple d'y arriver sans
ajouter à sudoers toutes les commandes des scripts qui doivent à ªtre
lancées en root? J'aimerais bien y mettre directement les deux scri pts,
mais comme ce ne sont pas des binaires, ça ne marche pas.



J'allais dire Sticky Bit, mais j'ai bien fait de vérifier : du coup, je vais
dire SUID (http://fr.wikipedia.org/wiki/Permissions_Unix#Droit_SUID) ^^



Non ça n'est pas si simple que ça parce que précisément le SUID n'a pas
d'effet sur un shell script (sauf erreur de ma part). Exemple:

~# echo "touch /root/test" > foo.sh
~# chmod +x,+s foo.sh
~# ll foo.sh
-rwsr-sr-x 1 root 17 aoû 15 12:28 foo.sh
~# exit
exit
~$ /root/foo.sh
touch: ne peut faire un touch sur `/root/test': Permission non accordé e

++
Thomas

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
Guillaume Caron
--=-CDtCJeJ4wZriEUwqfTN6
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit



Le samedi 15 août 2009 à 13:02 +0200, thomas a écrit :

2009/8/15 ~TraydenT~ :
> On 15/08/2009 10:25, thomas wrote:
>> Cela m'ennuie de taper mon mot de passe root à chaque fois que je lance
>> /etc/acpi/sleep.sh ou /etc/acpi/hibernate.sh (et je ne vois pas de bonne
>> raison d'utiliser uswsusp). Y a-t-il un moyen simple d'y arriver sans
>> ajouter à sudoers toutes les commandes des scripts qui doivent être
>> lancées en root? J'aimerais bien y mettre directement les deux scripts,
>> mais comme ce ne sont pas des binaires, ça ne marche pas.
>>
> J'allais dire Sticky Bit, mais j'ai bien fait de vérifier : du coup, je vais
> dire SUID (http://fr.wikipedia.org/wiki/Permissions_Unix#Droit_SUID) ^^

Non ça n'est pas si simple que ça parce que précisément le SUID n'a pas
d'effet sur un shell script (sauf erreur de ma part). Exemple:

~# echo "touch /root/test" > foo.sh
~# chmod +x,+s foo.sh
~# ll foo.sh
-rwsr-sr-x 1 root 17 aoû 15 12:28 foo.sh
~# exit
exit
~$ /root/foo.sh
touch: ne peut faire un touch sur `/root/test': Permission non accordée



Euh, cette erreur ne serait pas plutôt dû au fait que les utilisateurs
normaux n'ont pas d'accès en lecture (et surtout pas en écriture !) sur
le répertoire /root ?

Comme ça, ça marche un peu mieux :

# echo "touch /tmp/essai" > /tmp/foo.sh
# chmod +x,+s /tmp/foo.sh
# ll /tmp/foo.sh
-rwsr-sr-x 1 root root 17 aoû 16 10:09 /tmp/foo.sh
# exit
exit
$ /tmp/foo.sh
$ ls -l /tmp/essai
-rw-r--r-- 1 gc gc 0 aoû 16 10:09 /tmp/essai

Mais au final, le fichier créé n'appartient pas à root, donc tu avais
raison.

Cordialement,
--
Guillaume


--=-CDtCJeJ4wZriEUwqfTN6
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.26.3">
</HEAD>
<BODY>
<BR>
<BR>
Le samedi 15 ao&#251;t 2009 &#224; 13:02 +0200, thomas a &#233;crit&nbsp;:
<BLOCKQUOTE TYPE=CITE>
<PRE>
2009/8/15 ~TraydenT~ &lt;<A HREF="mailto:"></A>&gt;:
&gt; On 15/08/2009 10:25, thomas wrote:
&gt;&gt; Cela m'ennuie de taper mon mot de passe root &#224; chaque fois que je lance
&gt;&gt; /etc/acpi/sleep.sh ou /etc/acpi/hibernate.sh (et je ne vois pas de bonne
&gt;&gt; raison d'utiliser uswsusp). Y a-t-il un moyen simple d'y arriver sans
&gt;&gt; ajouter &#224; sudoers toutes les commandes des scripts qui doivent &#234;tre
&gt;&gt; lanc&#233;es en root? J'aimerais bien y mettre directement les deux scripts,
&gt;&gt; mais comme ce ne sont pas des binaires, &#231;a ne marche pas.
&gt;&gt;
&gt; J'allais dire Sticky Bit, mais j'ai bien fait de v&#233;rifier : du coup, je vais
&gt; dire SUID (<A HREF="http://fr.wikipedia.org/wiki/Permissions_Unix#Droit_SUID">http://fr.wikipedia.org/wiki/Permissions_Unix#Droit_SUID</A>) ^^

Non &#231;a n'est pas si simple que &#231;a parce que pr&#233;cis&#233;ment le SUID n'a pas
d'effet sur un shell script (sauf erreur de ma part). Exemple:

~# echo &quot;touch /root/test&quot; &gt; foo.sh
~# chmod +x,+s foo.sh
~# ll foo.sh
-rwsr-sr-x 1 root 17 ao&#251; 15 12:28 foo.sh
~# exit
exit
~$ /root/foo.sh
touch: ne peut faire un touch sur `/root/test': Permission non accord&#233;e
</PRE>
</BLOCKQUOTE>
Euh, cette erreur ne serait pas plut&#244;t d&#251; au fait que les utilisateurs normaux n'ont pas d'acc&#232;s en lecture (et surtout pas en &#233;criture !) sur le r&#233;pertoire /root ?<BR>
<BR>
Comme &#231;a, &#231;a marche un peu mieux :
<BLOCKQUOTE>
<PRE>
# echo &quot;touch /tmp/essai&quot; &gt; /tmp/foo.sh
# chmod +x,+s /tmp/foo.sh
# ll /tmp/foo.sh
-rwsr-sr-x 1 root root 17 ao&#251; 16 10:09 /tmp/foo.sh
# exit
exit
$ /tmp/foo.sh
$ ls -l /tmp/essai
-rw-r--r-- 1 gc gc 0 ao&#251; 16 10:09 /tmp/essai
</PRE>
</BLOCKQUOTE>
Mais au final, le fichier cr&#233;&#233; n'appartient pas &#224; root, donc tu avais raison.<BR>
<BR>
Cordialement,<BR>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
--<BR>
Guillaume
</TD>
</TR>
</TABLE>
<BR>
</BODY>
</HTML>

--=-CDtCJeJ4wZriEUwqfTN6--



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
Sylvain Sauvage
Guillaume Caron, dimanche 16 août 2009, 10:13:12 CEST
[…]
> Non ça n'est pas si simple que ça parce que précisé ment le SUID n'a pas
> d'effet sur un shell script (sauf erreur de ma part). Exemple:
[…]
Euh, cette erreur ne serait pas plutôt dû au fait que les utili sateurs
normaux n'ont pas d'accès en lecture (et surtout pas en écritur e !) sur
le répertoire /root ?

Comme ça, ça marche un peu mieux :
[…]



Non. Le bit SUID est désactivé sur les scripts (de nos jours).
De toute façon, cette idée est dangereuse (injection de code
dans les paramètres p.ex.).

On peut contourner le problème en faisant un programme
compilé, SUID, qui ferait juste un system(3) (⇒ man 3 system).
Puis on ajoute de la sécurité à ce programme (mot de passe) et
quelques options et on l’appelle « su ». Si on ajoute quelques
fichiers de configuration, on l’appelle « sudo  ».

Et rappelez-vous que les cochons sont des suidés…

--
Sylvain Sauvage

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS