web-dev-qa-db-fra.com

Comment définir busybox en tant que shell de connexion d'un utilisateur?

J'ai personnalisé mon BusyBox pour inclure des applets spécifiques. Maintenant, je veux que l'utilisateur se connecte à BusyBox en tant que shell. Je veux dire que lorsque l'utilisateur entre son nom d'utilisateur et ses mots de passe, il sera redirigé vers un environnement dans lequel seules les applets souhaitées sont utilisables. Modifier le login Shell de l'utilisateur à l'aide de la commande suivante ne fonctionne pas:

usermod -s /bin/busybox MYUSER

utiliser su MYUSER affiche uniquement BusyBox help mais j'ai besoin d'un shell interactif qui n'inclut que mes applets souhaités. Toute solution?

2
Reza Ghodsi

La commande busybox n'est pas un shell interactif. Comme Thomas l'a dit, vous devriez lancer busybox sh pour son shell interactif. Utilisez ces commandes pour définir le shell interactif busybox en tant que shell de connexion de l'utilisateur MYUSER:

echo "/bin/busybox sh" > /bin/ibusybox
chmod +x /bin/ibusybox
usermod -s /bin/ibusybox MYUSER

Si vous utilisez également ibusybox, vous exécuterez Shell interactif busybox.

2
SuB

Vous devez démarrer busybox avec sh comme paramètre. Le mieux serait d'écrire un petit wrapper:

mkdir -p /usr/local/share/busybox
echo "/bin/busybox sh" > /usr/local/share/busybox/sh
chmod +x /usr/local/share/busybox/sh

Puis testez le login:

su - -s /usr/local/share/busybox/sh wood

En cas de succès, vous pouvez ajouter /usr/local/share/busybox/sh en tant que shell de l'utilisateur.

usermod -s /usr/local/share/busybox/sh MYUSER

J'ai rapidement essayé de faire un lien symbolique busybox vers /usr/local/share/busybox/sh mais cela n'a pas fonctionné. Donc, donc le script wrapper.

3
Thomas