• # Shell restrictif

    Posté par . En réponse au message compte utilisateur. Évalué à 5.

    Il est difficile de gérer ce genre de permission au niveau des permissions du système de fichiers.

    Ca doit pouvoir se faire à coup de selinux et consors, mais c'est certainement bien compliqué pour peu de chose.

    La solution vers laquelle je m'orienterai pour ma part serait un shell restrictif qui autorise ou non l'execution des commandes en question.
    Ca se code très bien en shell.
    Exemple:


    [binarym@gco]:~% grep test /etc/passwd 15:18
    test:x:1001:1001::/home/test:/tmp/rshell.sh
    [binarym@gco]:~% cat /tmp/rshell.sh
    #!/bin/sh
    do_exit=0

    while (( ! $do_exit)) ; do
    echo "exit or uname ?"
    read cmd;
    if [ "$cmd" != "exit" ] && [ "$cmd" != "uname" ] ; then
    echo "$cmd not allowed";
    elif [ "$cmd" == "exit" ] ; then
    do_exit=1;
    else
    uname;
    fi;
    done
    [binarym@gco]:~% su - test
    Password:
    Pas de répertoire, connexion avec HOME=/
    exit or uname ?
    uname
    Linux
    exit or uname ?
    ls
    ls not allowed
    exit or uname ?
    uname -a
    uname -a not allowed
    exit or uname ?
    uname | ls
    uname | ls not allowed
    exit or uname ?
    exit


    Voilà.