Linux
Fermé
eliza_b
Messages postés
340
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
20 août 2014
-
20 janv. 2009 à 17:18
mamiemando Messages postés 33346 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 novembre 2024 - 23 janv. 2009 à 17:51
mamiemando Messages postés 33346 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 novembre 2024 - 23 janv. 2009 à 17:51
A voir également:
- Linux
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
- Diskinternals linux reader - Télécharger - Stockage
- Linux live usb creator - Télécharger - Outils Internet
- Quel linux choisir - Guide
- Backtrack linux - Télécharger - Sécurité
3 réponses
mamiemando
Messages postés
33346
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 novembre 2024
7 803
20 janv. 2009 à 18:58
20 janv. 2009 à 18:58
De base c'est normalement déjà le cas. Sous debian par exemple les scripts permettant de lancer, relancer, ou stopper dans un service sont dans /etc/init.d :
Comme tu le vois ces scripts appartiennent à root et au groupe root. Or un utilisateur normal ne s'appelle pas root et n'appartient pas au groupe root (voir /etc/groups) :
Tu connais sans doutes les notions de droits sous linux (r: read, w:write, x:execute). Pour un fichier on distingue trois triplets rwx : dans l'ordre, le propriétaire (ici root), le groupe (ici le groupe root), et les autres. Si tu regardes les droits dans ce que je t'ai reporté, seul l'utilisateur root peux écrire dans ces scripts, et tout le monde (propriétaire+groupe+les autres) peuvent lire leur contenu et les exécuter.
Note que tu peux changer le propriétaire d'un fichier ou le groupe associé à un fichier avec les commandes chown et chgrp (à condition d'en être propriétaire ou d'être root). Pour plus d'informations :
Dans ton cas il suffirait de retirer les droits en exécution sur les scripts qui ne doivent pas être lancés à l'aide de la commande chmod. Mais en soit ça n'a pas d'intérêt car un script ne fait qu'appeler d'autres commandes que l'on peut taper manuellement. C'est pour ca que debian ne restreint pas l'exécution des scipts des service, le script plantera lamentablement s'il est lancé par un utilisateur qui n'a pas assez de droits :
De manière générale c'est une mauvaise idée de tenter de limiter les droits d'un utilisateur en charcutant les droits, le propriétaire ou les groupes, en général ils sont correctement configurés et il ne faut pas y toucher. Car tu risques de faire des bêtises et en plus, rien n'empêche un utilisateur d'installer dans son home son propre serveur ftp si ca l'amuse. De plus un utilisateur ne peut a priori pas intervenir sur un serveur lancé par root. Si le but c'est juste de l'empêcher de lancer un serveur ftp il vaut mieux intervenir sur la configuration du pare-feu (iptables...).
Bonne chance
(mando@aldur) (~) $ ls -l /etc/init.d/* -rwxr-xr-x 1 root root 2344 nov 14 11:55 /etc/init.d/acpid -rwxr-xr-x 1 root root 8820 fév 26 2008 /etc/init.d/alsa-utils -rwxr-xr-x 1 root root 6464 jui 7 2008 /etc/init.d/apache2 ...
Comme tu le vois ces scripts appartiennent à root et au groupe root. Or un utilisateur normal ne s'appelle pas root et n'appartient pas au groupe root (voir /etc/groups) :
(mando@aldur) (~) $ groups mando dialout cdrom floppy audio video plugdev scard
Tu connais sans doutes les notions de droits sous linux (r: read, w:write, x:execute). Pour un fichier on distingue trois triplets rwx : dans l'ordre, le propriétaire (ici root), le groupe (ici le groupe root), et les autres. Si tu regardes les droits dans ce que je t'ai reporté, seul l'utilisateur root peux écrire dans ces scripts, et tout le monde (propriétaire+groupe+les autres) peuvent lire leur contenu et les exécuter.
Note que tu peux changer le propriétaire d'un fichier ou le groupe associé à un fichier avec les commandes chown et chgrp (à condition d'en être propriétaire ou d'être root). Pour plus d'informations :
man chown man chgrp
Dans ton cas il suffirait de retirer les droits en exécution sur les scripts qui ne doivent pas être lancés à l'aide de la commande chmod. Mais en soit ça n'a pas d'intérêt car un script ne fait qu'appeler d'autres commandes que l'on peut taper manuellement. C'est pour ca que debian ne restreint pas l'exécution des scipts des service, le script plantera lamentablement s'il est lancé par un utilisateur qui n'a pas assez de droits :
(mando@aldur) (~) $ /etc/init.d/apache2 restart Restarting web server: apache2apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName (13)Permission denied: make_sock: could not bind to address [::]:80 (13)Permission denied: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs failed! ... (root@aldur) (~) # /etc/init.d/apache2 restart Restarting web server: apache2apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName ... waiting .apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName . (root@aldur) (~) #
De manière générale c'est une mauvaise idée de tenter de limiter les droits d'un utilisateur en charcutant les droits, le propriétaire ou les groupes, en général ils sont correctement configurés et il ne faut pas y toucher. Car tu risques de faire des bêtises et en plus, rien n'empêche un utilisateur d'installer dans son home son propre serveur ftp si ca l'amuse. De plus un utilisateur ne peut a priori pas intervenir sur un serveur lancé par root. Si le but c'est juste de l'empêcher de lancer un serveur ftp il vaut mieux intervenir sur la configuration du pare-feu (iptables...).
Bonne chance
eliza_b
Messages postés
340
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
20 août 2014
10
23 janv. 2009 à 16:27
23 janv. 2009 à 16:27
Bonjour mamiemando,
Vas y aide moi stp. Je galère la depuis l'autre jour,
Merci d'avance,
Vas y aide moi stp. Je galère la depuis l'autre jour,
Merci d'avance,
mamiemando
Messages postés
33346
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 novembre 2024
7 803
23 janv. 2009 à 17:51
23 janv. 2009 à 17:51
Pour moi restreindre un service revient à restreindre les droits sur les exécutables concernés et/ou leur script de lancement. Ces droits se voient avec un "ls -l" et se corrigent à l'aide des commandes "chown", "chgrp" et "chmod". Pour plus d'infos :
En temps normal tu n'as pas à toucher à ces droits, car ils sont correctement configurés de base. Par exemple dans l'exemple que je t'ai donné on voit que mando n'a pas les droits suffisant pour (re)lancer correctement un serveur apache. Tu peux étoffer les scripts de lancement de service pour contrôler qui les lance.
Exemple :
Mais en soit ce n'est pas top de modifier ces scripts car ils ne font qu'appeler par la suite un binaire qui peuvent être appelés directement par l'utilisateur, et ils sont susceptibles d'être écrasés par des mises à jour ultérieures. Il faut alors soit corriger les droits de ces binaires (dangereux) soit laisser le script planter lamentablement faute de droits suffisants (ce que fait par exemple apache dans l'exemple que je t'ai donné).
Le principe reste le même quelque soit le serveur que tu lances (telnet ou ssh) (ce qui est a priori ce que tu entends par service). Si tu souhaites également restreindre les droits en tant que client (telnet ou ssh) il faut corriger les droits des binaires correspondants mais encore une fois c'est une mauvaise idée.
Dans tous les cas il vaut mieux bloquer un utilisateur au niveau du pare-feu de la machine qu'au niveau des scripts ou des binaires car il ne pourra pas y couper.
Bonne chance
man ls man chown man chgrp man chmod
En temps normal tu n'as pas à toucher à ces droits, car ils sont correctement configurés de base. Par exemple dans l'exemple que je t'ai donné on voit que mando n'a pas les droits suffisant pour (re)lancer correctement un serveur apache. Tu peux étoffer les scripts de lancement de service pour contrôler qui les lance.
Exemple :
#!/bin/bash whoami=`whoami` echo "$whoami lance le script" if [ $whoami != "root" ]; then echo "droits insuffisants" exit fi echo "suite du script"
Mais en soit ce n'est pas top de modifier ces scripts car ils ne font qu'appeler par la suite un binaire qui peuvent être appelés directement par l'utilisateur, et ils sont susceptibles d'être écrasés par des mises à jour ultérieures. Il faut alors soit corriger les droits de ces binaires (dangereux) soit laisser le script planter lamentablement faute de droits suffisants (ce que fait par exemple apache dans l'exemple que je t'ai donné).
Le principe reste le même quelque soit le serveur que tu lances (telnet ou ssh) (ce qui est a priori ce que tu entends par service). Si tu souhaites également restreindre les droits en tant que client (telnet ou ssh) il faut corriger les droits des binaires correspondants mais encore une fois c'est une mauvaise idée.
Dans tous les cas il vaut mieux bloquer un utilisateur au niveau du pare-feu de la machine qu'au niveau des scripts ou des binaires car il ne pourra pas y couper.
Bonne chance
21 janv. 2009 à 12:01
Merci à mamiemando pour ta réponse,
Je pense que je me suis pas bien exprimé,
Voilà, ce que je demande c'est de bloquer le lancement de certains services à un utilisateur qui avait le droit de les lancer auparavant .