bashソースコードをまったく見ずに自分だけのシェルを作成しようとしていますが、できないことが1つあります。カスタムシェル(私のシェルを含む)で「su」を実行するたびに、私のパスワードを取得し、root権限を示すハッシュ付きのbashプロンプトに移動します。 root権限があるときにシェルがハッシュプロンプトを提供することを確認するためにコードを入れましたが、これはrootとして実行したときにのみ当てはまります。これは、シェルでrootになるためにsuを試みるたびにbashを実行するように強制するためです。私が直接suを提供する方法はありますか? rootパスワードを要求して権限を付与してbashに移動せずに使用中のシェルに再送信するカスタムsu実行可能ファイルも提供できますか?ありがとうございます。
ベストアンサー1
マニュアルページはsu
この点について非常に明確です。
/etc/passwd
コマンドは、ターゲット・ユーザーに指定されたシェルによって実行されます。
そして
-s, --shell シェル呼び出されるシェルです。
-m, -p, --preserve 環境現在の環境を保護してください[… ]
bash
呼び出し後にシェルに入る理由は、su -
これがルートのデフォルトシェルであるためです。この基本シェルをオーバーライドする 3 つの方法があります。
su -s /path/to/your/shell
ただ電話する代わりに電話してくださいsu
export SHELL=/path/to/yourshell
設定されていることを確認してから電話してください。su -m
- ルートのデフォルトシェルの変更
/etc/passwd
(推奨されていません)