IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Limiter une commande pour un utilisateur


Sujet :

Administration système

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 290
    Points : 137
    Points
    137
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ifconfig eth0 | grep "inet ad" | cut -d ":" -f 2 | cut -d " " -f 1
    Merci
    jb

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    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).
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    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

  4. #4
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    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 Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  5. #5
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    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 ?

  6. #6
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    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.
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  7. #7
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Voici la liste sous Mandriva Hangzhou ( http://forum.club.mandriva.com/viewt...cc866918dae7e6 , cooker dernier cri) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [root@localhost][/etc]# cat shells 
    /bin/sh
    /bin/bash
    /bin/ash
    /bin/bsh
    Sous debian etch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  8. #8
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    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 ?
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 290
    Points : 137
    Points
    137
    Par défaut
    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 ...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 290
    Points : 137
    Points
    137
    Par défaut
    Je viens de m'apercevoir de ceci ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [root@serveurDev sbin]# cat /usr/local/sbin/ifconfig.sh
    /sbin/ifconfig

  11. #11
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    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.

  12. #12
    Membre confirmé Avatar de herzleid
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 393
    Points : 509
    Points
    509
    Par défaut
    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

  13. #13
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Ç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.

Discussions similaires

  1. Problème pour limiter une commande
    Par Vince_14 dans le forum LabVIEW
    Réponses: 1
    Dernier message: 30/06/2011, 18h36
  2. Réponses: 1
    Dernier message: 22/11/2007, 04h47
  3. Attendre l'execution d'une commande pour continuer
    Par sculpteur dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 27/09/2007, 15h46
  4. Utiliser le resultat d'une command pour generer un nom de fichier
    Par jfourment dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 20/08/2007, 17h53
  5. Réponses: 7
    Dernier message: 24/07/2006, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo