web-dev-qa-db-ja.com

busyboxをユーザーのログインシェルとして設定する方法は?

特定のアプレットを含めるようにBusyBoxをカスタマイズしました。ここで、BusyBoxへのシェルとしてのユーザーログインが必要です。ユーザーがユーザー名とパスワードを入力すると、希望するアプレットだけが使用できる環境にリダイレクトされます。次のコマンドを使用してユーザーのログインシェルを変更しても機能しません。

usermod -s /bin/busybox MYUSER

su MYUSERを使用するとBusyBoxヘルプのみが表示されますが、必要なアプレットのみを含む対話型のシェルが必要です。解決策はありますか?

2
Reza Ghodsi

busyboxコマンドは、対話型のシェルではありません。トーマスが言ったように、インタラクティブシェルではbusybox shを実行する必要があります。これらのコマンドを使用して、busybox Interactive Shellをユーザーのログインシェルとして設定しますMYUSER

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

また、ibusyboxを使用すると、busyboxインタラクティブシェルが実行されます。

2
SuB

パラメーターとしてbusyboxshを開始する必要があります。最善の方法は、小さなラッパーを作成することです。

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

次に、ログインをテストします。

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

成功した場合は、/usr/local/share/busybox/shをユーザーのシェルとして追加できます。

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

busybox/usr/local/share/busybox/shにシンボリックリンクしようとしましたが、うまくいきませんでした。したがって、ラッパースクリプトです。

3
Thomas