# Proposer une liste réduite de commandes



## devin plompier (30 Juillet 2013)

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.


----------



## bompi (30 Juillet 2013)

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.


----------



## devin plompier (30 Juillet 2013)

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.


----------



## bompi (30 Juillet 2013)

Bin oui. Et avec le _chroot_ tu peux constituer la liste des commandes auxquelles il a droit (genre : _cat_, _more_, _ls_, _grep_ et basta!)


----------



## devin plompier (30 Juillet 2013)

Ah bon. Alors ça me convient. Reste plus qu'à savoir le mettre en &#339;uvre...


----------



## bompi (30 Juillet 2013)

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é.


----------



## devin plompier (31 Juillet 2013)

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 :

```
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.


----------



## bompi (31 Juillet 2013)

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


----------



## devin plompier (31 Juillet 2013)

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 ?


----------



## bompi (31 Juillet 2013)

À 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...


----------



## devin plompier (31 Juillet 2013)

Non, je voulais dire un paqueteur en java, un programme qui rend des exécutable indépendants, comme en perl, mais en java


----------



## bompi (31 Juillet 2013)

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.


----------



## devin plompier (1 Août 2013)

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 ?


----------



## bompi (1 Août 2013)

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.


----------

