Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/01/2007, 10h17   #1
Membre habitué
 
Inscription : avril 2003
Messages : 290
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2003
Messages : 290
Points : 100
Points : 100
Par défaut Limiter une commande pour un utilisateur

Bonjour à tous
Je ne sais pas si ma question est bien placée, ni même si elle est intelligente (ce qui est plus embêtant ...)
Je souhaite créer un utilisateur qui n'aurait le droit d'exécuter qu'une seule commande. est-ce possible ? Cette commande serait qq chose du genre :
Code :
1
2
 
ifconfig eth0 | grep "inet ad" | cut -d ":" -f 2 | cut -d " " -f 1
Merci
jb
Jibees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2007, 14h57   #2
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 497
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 497
Points : 9 672
Points : 9 672
Bonjour,

A ce que j'en sais, il n'est pas possible d'être si restreint que ca ! Par contre, si tu expliques un peu le pourquoi du comment, il existe peut-être une solution à laquelle tu n'as pas pensé (comme sudo par exemple).
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2007, 15h33   #3
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Si l'utilisateur n'a le droit de lancé qu'une seule commande, il n'aura pas d'interface graphique ni quoi que se soit d'autre car ce sont aussi des commandes. Si c'est celà que tu veux, mets l'ensemble de ta commande dans un fichier /usr/bin/macommande.sh et rend la exécutable 'chmod +x /usr/bin/macommande.sh'. Puis ouvre le fichier /etc/passwd et recherche la ligne de ton utilisateur. Remplace la dernière section (le lancement d'un shell normalement) par /usr/bin/macommande.sh. Ainsi, à chaque fois qu'il essayera de se loguer, la commande sera exécuté et il ne se connectera pas
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2007, 20h59   #4
Rédacteur/Modérateur
 
Avatar de troumad
 
Homme Bernard SIAUD
Enseignant
Inscription : novembre 2003
Messages : 4 400
Détails du profil
Informations personnelles :
Nom : Homme Bernard SIAUD
Âge : 44
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 4 400
Points : 4 944
Points : 4 944
narmataru : j'avais vu qu'il fallait avant définir ton script comme faisant parti des shell possible. À moins que ce ne soit uniquement pour les indiquer comme shell dans la commande adduser ?
__________________
Modérateur Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels
troumad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2007, 08h20   #5
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Citation:
Envoyé par troumad
narmataru : j'avais vu qu'il fallait avant définir ton script comme faisant parti des shell possible. À moins que ce ne soit uniquement pour les indiquer comme shell dans la commande adduser ?
En modifiant directement le fichier /etc/passwd ça fonctionne
Je ne savais même pas qu'on pouvait définir une liste de shell utilisable. Comment fais-tu ?
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2007, 08h40   #6
Inactif
 
Avatar de Hibou57
 
Inscription : mars 2006
Messages : 852
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 852
Points : 398
Points : 398
Citation:
Envoyé par narmataru
En modifiant directement le fichier /etc/passwd ça fonctionne
Je ne savais même pas qu'on pouvait définir une liste de shell utilisable. Comment fais-tu ?
Je pense que s'il y a des systèmes ou c'est nécéssaire, alors ce sont des distributions très spéciales.... Parce qu'il suffit qu'un fichier ait l'attribut executable et les bons droits relativement à la cession en cours pour être executable.

Bon, en tous cas, ce n'est pas un init standard dans ce cas (parce qu'il n'y a que init qui aurait techniquement le moyen d'interdire l'execution d'un shell).

A moins qu'il n'y ait confusion avec un tout autre élément.
Hibou57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2007, 08h44   #7
Rédacteur/Modérateur
 
Avatar de troumad
 
Homme Bernard SIAUD
Enseignant
Inscription : novembre 2003
Messages : 4 400
Détails du profil
Informations personnelles :
Nom : Homme Bernard SIAUD
Âge : 44
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 4 400
Points : 4 944
Points : 4 944
Voici la liste sous Mandriva Hangzhou ( http://forum.club.mandriva.com/viewt...cc866918dae7e6 , cooker dernier cri) :
Code :
1
2
3
4
5
[root@localhost][/etc]# cat shells 
/bin/sh
/bin/bash
/bin/ash
/bin/bsh
Sous debian etch :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[troumad@serveur][~]$ cat /etc/shells 
# /etc/shells: valid login shells
/bin/ash
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/zsh
/bin/sash
/bin/zsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash
__________________
Modérateur Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels
troumad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2007, 21h00   #8
Inactif
 
Avatar de Hibou57
 
Inscription : mars 2006
Messages : 852
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 852
Points : 398
Points : 398
C'est interessant ça Troumad

Citation:
Envoyé par http://www.linuxfromscratch.org/blfs/view/cvs/postlfs/etcshells.html
The shells file contains a list of login shells on the system. Applications use this file to determine whether a shell is valid. For each shell a single line should be present, consisting of the shell's path, relative to the root of the directory structure (/).

For example, this file is consulted by chsh to determine whether an unprivileged user may change the login shell for her own account. If the command name is not listed, the user will be denied of change.

It is a requirement for applications such as GDM which does not populate the face browser if it can't find /etc/shells, or FTP daemons which traditionally disallow access to users with shells not included in this file.
Donc c'est bien sous reserve qu'une applications fasse le control vis-à-vis de /etc/shells. Et il n'est pas difficile de contourner chsh ...

Citation:
Envoyé par man chsh(1)
chsh - Changer le shell appelé à la connexion.
... vu que je n'ai jamais vu chsh null part encore... c'est la première fois que j'entend parler de /etc/shells ou de chsh.

Mais ça m'a l'air assez facile à contourner... isn't it ?
Hibou57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 11h33   #9
Membre habitué
 
Inscription : avril 2003
Messages : 290
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2003
Messages : 290
Points : 100
Points : 100
Citation:
Envoyé par narmataru
Si c'est celà que tu veux, mets l'ensemble de ta commande dans un fichier /usr/bin/macommande.sh et rend la exécutable 'chmod +x /usr/bin/macommande.sh'. Puis ouvre le fichier /etc/passwd et recherche la ligne de ton utilisateur. Remplace la dernière section (le lancement d'un shell normalement) par /usr/bin/macommande.sh. Ainsi, à chaque fois qu'il essayera de se loguer, la commande sera exécuté et il ne se connectera pas
Je reviens vers vous, n'ayant toujours pas résolu le problème (j'ai fait d'autres choses entre temps quand même ...).
J'ai donc créé un utilisateur, un fichier .sh qui exécute une commande (le script fonctionne, il est bien executable, etc ...). Je me connecte sur mon serveur, me logue avec ce compte fictif et malheureusement, j'ai à peine le temps d'apercevoir "last login at ...." que la console efface tout et me propose de me loguer ... Soit je fais qqchose de mal, soit cette solution n'est pas fonctionnelle ...
Jibees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 11h38   #10
Membre habitué
 
Inscription : avril 2003
Messages : 290
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2003
Messages : 290
Points : 100
Points : 100
Je viens de m'apercevoir de ceci ...
Code :
1
2
3
 
[root@serveurDev sbin]# su mon_utilisateur_fictif
su: /usr/local/sbin/ifconfig.sh: Erreur de format pour exec()
Ceci alors que
Code :
1
2
3
 
[root@serveurDev sbin]# ls -al /usr/local/sbin/ifconfig.sh
-rwxr-xr-x 1 mon_utilisateur_fictif mon_utilisateur_fictif 9 jan 31 11:15 /usr/local/sbin/ifconfig.sh
et que
Code :
1
2
3
 
[root@serveurDev sbin]# cat /usr/local/sbin/ifconfig.sh
/sbin/ifconfig
Jibees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 19h27   #11
Membre émérite
 
Avatar de Celelibi
 
Inscription : janvier 2004
Messages : 990
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 990
Points : 822
Points : 822
Hibou57, je pense qu'il n'est pas possible de contourner la vérification de /etc/shells par chsh. Car le but final est d'écrire dans le fichier /etc/passwd, ce qui nécessite les droits root.

Il y a bien sûr moyen d'utiliser un autre shell en le lançant par le .bashrc (ou autre) mais là on n'a rien contourné du tout. (on a juste détourné la question)
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.
Celelibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 13h22   #12
Membre éclairé
 
Avatar de herzleid
 
Inscription : juin 2002
Messages : 376
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juin 2002
Messages : 376
Points : 388
Points : 388
Une idée juste comme ça :
supprimer le path par defaut et en définir un comme :
PATH=/etc/fichier_de_path non accessible en ecriture
copier les qq commandes et les bibliothèque necessaire dans le répertoire indiqué dans /etc/fichier_de_path
et c'est tout.

En gros la méthode du chroot appliquée à quelques commandes de base :p
__________________
www.kywyxy.net
herzleid est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 19h39   #13
Membre émérite
 
Avatar de Celelibi
 
Inscription : janvier 2004
Messages : 990
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 990
Points : 822
Points : 822
Ça n'empêchera pas l'utilisateur d'indiquer le chemin complet du binaire à exécuter, et d'exécuter n'importe quelle commande.

Cela dit, un vrai chroot n'est peut-être pas plus mal.
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.
Celelibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h14.


 
 
 
 
Partenaires

Hébergement Web