Restreindre utilisateur

Demande d'aide : c'est ici.
Répondre
Sydos
Messages : 8
Inscription : 06 avr. 2017, 19:21
Status : Hors-ligne

Bonjour,

Cela fais plusieurs jours que je cherche une solution a mon problème qui est le suivant :

J'aimerais restreindre la console ssh d'un ami, qu'il puisse uniquement lancé des scripts, j'ai déjà un solution mais il faudrait l'amélioré.
J'utilise le script lshell, c'est celui qui me correspond le plus, mais le problème c'est que j'autorise la commande "sh" afin de lancé des script mais malheureusement si il entre "sh" tout court dans la console, il sort du shell restreint crée par lshell.

Comment je pourrais empêché qu'un utilisateur utilise "sh" tout court ou que cela l’empêche de sortir du shell et de pouvoir avoir accès au autre commande.

Bien sur si vous avez d'autres méthodes je suis preneur :)

Merci :)
Cordialement
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

un «chroot» ?
Ça te permettrait de limiter le nombre d'exécutable possible …
Sydos
Messages : 8
Inscription : 06 avr. 2017, 19:21
Status : Hors-ligne

Ouais mais je veux qu'il n'aille nul part (qu'il ne puisse rien voir), juste exécuter un script, et j'ai peur qu'en faisant un "chroot" il y ait des problème :/
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

C'est aussi tout l'intérêt des chroot, le mettre dans un environnement cloisonné d'où il ne peut sortir. La contre partie est qu'il est un peu plus complexe de tout mettre en place. Mais rien d'insurmontable je te rassure.
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Bonjour
…qu'il puisse uniquement lancé des scripts,…
Pourrais-tu donner plus de précisions concernant ces scripts ?

=======
Tu pourrais créer un script qui serait lancé à la connexion à son compte utilisateur
et qui ne lui proposerait, sous forme d'un menu, que la liste des scripts à lancer ou de quitter en fermant sa connexion ssh.
Sydos
Messages : 8
Inscription : 06 avr. 2017, 19:21
Status : Hors-ligne

Comment je devrais procédé ? Pour chroot

MicP, oui ça serais vraiment parfait, le script c'est un démarrage de serveur teamspeak, en .sh
Mais l'idée du menu c'est vraiment super :)
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Remarque, s'il n'y a que teamspeak (que je ne connais ni n'utilise) à lancer,
autant mettre directement la ligne de commandes qui lancera cette application dans son ~/.bashrc (ou autre suivant le shell utilisé)
suivit par la commande exit qui, en quittant le shell, fermera sa session ssh plutôt que de lui proposer un retour au prompt du shell.
Avatar de l’utilisateur
kitmale
Membre actif
Membre actif
Messages : 733
Inscription : 25 avr. 2016, 09:39
Status : Hors-ligne

http://player.lg1043.com/CHLGFM

"Do not fear to be eccentric in opinion, for every opinion now accepted was once eccentric. Bertrand Russell
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Par exemple, pour tester, j'ai ajouté les deux lignes de commande suivantes à la fin du ~/.bashrc du deuxième compte utilisateur de ma machine

Code : Tout sélectionner

less ~/.bashrc   # Ça va afficher, par le pager less, le contenu du fichier .bashrc de l'utilisateur connecté
exit             # Une fois que less a été quitté, la commande exit va permettre de quitter le script ~/.bashrc => la connexion ssh qui l'utilise sera fermée
Si, depuis une autre machine, je me connecte par ssh à ce compte utilisateur,
je ne pourrais que voir que le contenu du fichier ~/.bashrc ou quitter la commande less => fermeture de la connexion ssh

(mais la commande less n'est pas un bon exemple car elle permet quand même d'accéder à un sous-shell, alors, en espérant que ce n'est pas aussi le cas pour teamspeak)

======
Je propose cette solution, mais il en existe sans doute d'autres qui seront mieux adaptées à teamspeak…
Sydos
Messages : 8
Inscription : 06 avr. 2017, 19:21
Status : Hors-ligne

Enfaite la chose qui serais génial, c'est effectivement l'utilisateur ce connecte en ssh, et a un menu lui proposant plusieurs option qui lancerais des scripts.

Teamspeak a juste besoin d'être lancé, donc la commande c'est par exemple :
sh ts3.sh start/stop/status/restart

Et par la suite mettre un script qui listerais les logs du serveur qui son dans un fichier log spécifique :)

Merci pour vos réponses en tout cas
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Une ébauche rapide de script pour le menu :

Code : Tout sélectionner

#!/bin/bash

ROUGE='\033[1;31m'
RAZ='\033[0m'
REPLY=""

trap exit INT

clear

while true
do
  echo
  echo -e "\t${ROUGE}T${RAZ}eamSpeak"
  echo -e "\tVisualiser le fichier retourné par ${ROUGE}d${RAZ}mesg"
  echo -e "\tVisualiser le fichier ${ROUGE}X${RAZ}org.0.log"
  echo -e "\t${ROUGE}Q${RAZ}uitter"
  echo

  read -sn1

  case $REPLY in
    [tT])
        ts3.sh start
       ;;
    [dD])
        dmesg | less
       ;;
    [xX])
        less /var/log/Xorg.0.log
       ;;
       *)
        exit
       ;;
  esac
  clear
done
Sydos
Messages : 8
Inscription : 06 avr. 2017, 19:21
Status : Hors-ligne

Merci, comment je fais pour le lancé au démarrage et que quand il quitte le script, sa ferme son ssh ?

J'ai une erreur au niveau de "read -sn1" de type : read: Illegal option -s
Et je ne comprend pas comment l'utilisé :icon_e_biggrin:

Merci
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

…comment je fais pour le lancé au démarrage et que quand il quitte le script, sa ferme son ssh ?…
Si par exemple le script a été nommé menu.sh et qu'il a été placé dans le répertoire personnel du compte utilisateur (ce qui donnera : ~/menu.sh)
à la fin du script ~/.bashrc de ce même compte utilisateur, il suffira de rajouter la ligne de commande qui le fera s'exécuter :

Code : Tout sélectionner

source ~/menu.sh

=======
…J'ai une erreur au niveau de "read -sn1" de type : read: Illegal option -s…⋅
Comme l'indique le shebang de ce script (première ligne du script)
il s'agit d'un script pour l'interpréteur de commandes bash.

Mais j'ai lu dans ton premier message de ce fil :
…J'utilise le script lshell, …
L'interpréteur de commandes lshell ne semble pas être compatible avec la syntaxe des commandes internes de l'interpréteur de commandes bash.

=======
NOTE : Je viens d'ajouter une ligne dans le script pour éviter d'avoir accès au shell si on utilise Ctrl-c dans le menu.
Sydos
Messages : 8
Inscription : 06 avr. 2017, 19:21
Status : Hors-ligne

Quand tu m'as proposé la solution du menu, j'ai désinstaller lshell.

J'ai compris comment marche (c'est bien car tu m'apprends le shell en même temps :biggrin: ), et pour le ctrl+c, j'ai ajouté la commande :

Code : Tout sélectionner

trap '' 2
Qui désactive le ctrl+c
J'aimerais que l'utilisateur ne puisse pas ouvrir le sftp, comment je pourrais le bloqué seulement pour lui ?
J'ai déjà essayé pas mal de truc au niveau de sshd_config mais sans succès...
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

…,Oui, le ctrl +C c'est un problème…
Pendant que tu essayais le script, je devais être en train d'ajouter dans le script la ligne qui résout ce problème

=======
…quand j’appuie sur "t" pour la première option, cela ne fait rien,…
J'ai utilisé la commande que tu avais donné dans ton message :
…Teamspeak a juste besoin d'être lancé, donc la commande c'est par exemple :
sh ts3.sh start/stop/status/restart…
ce qui donne, dans le script :

Code : Tout sélectionner

ts3.sh start
Je n'ai pas installé teamspeak donc je ne peux pas tester cette ligne de commande
modifie la ligne du script en fonction de celle qui fonctionnera sur ta machine.
Sydos
Messages : 8
Inscription : 06 avr. 2017, 19:21
Status : Hors-ligne

Sydos a écrit : 07 avr. 2017, 22:57 Quand tu m'as proposé la solution du menu, j'ai désinstaller lshell.

J'ai compris comment marche (c'est bien car tu m'apprends le shell en même temps :biggrin: ), et pour le ctrl+c, j'ai ajouté la commande :

Code : Tout sélectionner

trap '' 2
Qui désactive le ctrl+c
J'aimerais que l'utilisateur ne puisse pas ouvrir le sftp, comment je pourrais le bloqué seulement pour lui ?
J'ai déjà essayé pas mal de truc au niveau de sshd_config mais sans succès...
J'ai modifié mon message, et oui je devine que ça ne marche pas du coup ^^
Je fais des testes au niveau de ton script, merci
Sydos
Messages : 8
Inscription : 06 avr. 2017, 19:21
Status : Hors-ligne

J'ai installé le serveur teamspeak et nouveau problèmes, quand j'allume le serveur sans passé par le menu, une fois la console éteinte il reste allumé. Mais si j'utilise le menu, je suis obligé de la tenir allumé sinon le serveur s'éteint :/
Répondre