Proposer une liste réduite de commandes

devin plompier

Membre actif
5 Août 2008
277
7
57
Bonjour,

Je dispose d'un serveur Debian. Je souhaite créer un utilisateur guest qui ne dispose que de très peu de commandes. Si possible, j'aimerai que quand cet utilisateur se connecte par ssh à ce serveur, au lieu du bash habituel, il ait uniquement un menu lui présentant les commandes qu'il peut invoquer.

J'avais pensé à l'origine à rbash, mais il est trop facile d'outrepasser ses restrictions.

Je suis relativement nouveau en UNIX.

Merci de votre attention.
 
Ext-ce que cet utilisateur doit avoir accès aux données en général ou à un seul dossier (sa Maison) et son contenu ?
Parce que dans le second cas, il faut s'orienter vers le chroot-age de ssh.

Voir ici.
 
On peut éventuellement faire ça, à défaut d'autre chose, ça pourrait convenir. Mais l'idée est que l'utilisateur n'aie quasiment aucun degré de liberté, et qu'il ait au grand maximum une dizaine de commandes disponibles.
 
Bin oui. Et avec le chroot tu peux constituer la liste des commandes auxquelles il a droit (genre : cat, more, ls, grep et basta!)
 
Ah bon. Alors ça me convient. Reste plus qu'à savoir le mettre en œuvre...
 
Un petit tuto (en anglais) ici.
Un autre en français. Encore un. Dans ce dernier, il y a le mot 'facile' ;)

Internet regorge de tutos, en fait.

PS : j'en ai testé aucun : tu nous diras lequel tu as utilisé.
 
Merci pour les liens.
J'ai testé le premier lien français (celui-ci). Ça marche bien. Cependant, maintenant, le problème vient d'ailleurs. j'ai essayé d'ajouter un autre paquet, mais celui ci a trop de dépendances et ne fonctionne pas dans ce monde chrooté.

En fait, pour tout vous dire, ce compte guest (sur mon Raspberry Pi qui sert de veilleur) devait uniquement servir à des amis pour réveiller mon serveur, s'il n'était pas en service, via la commande wakeonlan. Mais cette commande a besoin de perl. Qu'à cela ne tienne, me suis-je dit, je vais aussi ajouter perl dans le chroot. Mais ça ne marche pas non plus, car maintenant, quand je lance wakeonlan dans le chroot, j'ai ceci :
Bloc de code:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "fr_FR.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Can't locate strict.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /usr/bin/wakeonlan line 7.
BEGIN failed--compilation aborted at /usr/bin/wakeonlan line 7.
Je pense que ça demande beaucoup trop de boulot, et ce ne m'est donc pas encore accessible.
 
Disons simplement que tu as besoin de mettre quelques modules Perl dans l'environnement chrooté.
C'est évidemment faisable. Mais ça veut aussi dire que tu fais une entorse à ton cahier des charges initial ;)

Ou alors, tu crées un exécutable autonome dans l'environnement général puis tu l'installes comme commande dans l'environnement chrooté. Regarde par exemple pp, ça a l'air pas mal (je n'ai pas encore testé). Il doit aussi y avoir d'autres méthodes : un bon sujet à explorer :)
 
Ok je fais ça. J'ai exécuté la commande pp /usr/bin/wakeonlan.
La commande s'est achevée sans erreur, mais l'exécutable produit (a.out) n'a pas l'air de fonctionner. Quand j'essaye ./a.out, ça tourne dans le vide.

Je vais essayer de mieux me renseigner là-dessus.

Sinon, tu n'aurais mas le même genre pour des fichiers .jar par hazard ?
 
À mon avis, cela existe en Java. Une simple recherche avec "Java Wake on LAN" ramène des fils en masse. Le premier a l'air prometteur... ;)
 
Non, je voulais dire un paqueteur en java, un programme qui rend des exécutable indépendants, comme en perl, mais en java ;)
 
OK. Tu peux peut-être regarder du côté du compilateur GCJ, mais je ne suis pas certain que le développement en soit très actif. Il y a aussi JET de Excelsior, payant mais apparemment maintenu.

Il y a aussi Launch4J, qui pourrait, dans un autre genre, être utile.
 
Dernière édition:
Ben dis donc, t'en connais, des choses...

Bon, puisque la commande pp a échoué, ou du moins j'ai pas été fichu de m'en servir convenablement, j'avais entendu parler d'une autre solution.
On oublierait le chroot, et il s'agirait d'un script conçu par l'administrateur qui se lance à la place du bash. Comme dans l'idée, le guest n'a qu'une seule commande à exécuter, on pourrait faire un script qui effectue le WakeOnLan, affiche à la limite un petit message de succès, et qui déconnecte ensuite le guest.

Est-ce que c'est bien possible ce truc ?
 
Oui : dans la définition du compte utilisateur on donne la commande qui se lance au login. En général on indique une commande de type shell (bash, csh, zsh, ksh etc.) pour que l'utilisateur puisse exécuter des commandes.
Mais on peut mettre une commande simple. Si le système n'a pas d'annuaire, ça se passe dans le fichier /etc/passwd. Mais je pense que l'on peut le modifier à l'aide de commandes d'administration (donc sans craindre de fiche en l'air le fichier susnommé). [edit. : j'ai retrouvé : c'est la commande chsh]

PS : je connais des choses mais en l'occurrence pas grand-chose concernant les outils que je mentionne ci-dessus ; simplement qu'ils existent pour certains et d'autres que je trouve par corrélation ou une simple utilisation de Gougueul suivie de lecture (rapide) des sites. :zen: