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
Restreindre utilisateur
- Mimoza
- 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.
-
- Modérateur
- Messages : 896
- Inscription : 16 avr. 2016, 22:14
- Status : Hors-ligne
Bonjour
=======
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.
Pourrais-tu donner plus de précisions concernant ces scripts ?…qu'il puisse uniquement lancé des 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.
-
- 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.
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.
- kitmale
- 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
"Do not fear to be eccentric in opinion, for every opinion now accepted was once eccentric. Bertrand Russell
-
- 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
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…
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
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…
-
- 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
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
-
- 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
-
- 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
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
-
- Modérateur
- Messages : 896
- Inscription : 16 avr. 2016, 22:14
- Status : Hors-ligne
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)…comment je fais pour le lancé au démarrage et que quand il quitte le script, sa ferme son ssh ?…
à 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
=======
Comme l'indique le shebang de ce script (première ligne du script)…J'ai une erreur au niveau de "read -sn1" de type : read: Illegal option -s…⋅
il s'agit d'un script pour l'interpréteur de commandes bash.
Mais j'ai lu dans ton premier message de ce fil :
L'interpréteur de commandes lshell ne semble pas être compatible avec la syntaxe des commandes internes de l'interpréteur de commandes bash.…J'utilise le script lshell, …
=======
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.
-
- 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 :
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 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
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...
-
- Modérateur
- Messages : 896
- Inscription : 16 avr. 2016, 22:14
- Status : Hors-ligne
Pendant que tu essayais le script, je devais être en train d'ajouter dans le script la ligne qui résout ce problème…,Oui, le ctrl +C c'est un problème…
=======
J'ai utilisé la commande que tu avais donné dans ton message :…quand j’appuie sur "t" pour la première option, cela ne fait rien,…
ce qui donne, dans le script :…Teamspeak a juste besoin d'être lancé, donc la commande c'est par exemple :
sh ts3.sh start/stop/status/restart…
Code : Tout sélectionner
ts3.sh start
modifie la ligne du script en fonction de celle qui fonctionnera sur ta machine.
-
- Messages : 8
- Inscription : 06 avr. 2017, 19:21
- Status : Hors-ligne
J'ai modifié mon message, et oui je devine que ça ne marche pas du coup ^^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 :
Qui désactive le ctrl+cCode : Tout sélectionner
trap '' 2
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...
Je fais des testes au niveau de ton script, merci
-
- 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 :/