suが実行中のシェルのユーザーIDを変更しないのはなぜですか?

suが実行中のシェルのユーザーIDを変更しないのはなぜですか?

代わりに、新しいユーザーIDで新しいシェルプロセスを開始します。元のシェルは、新しいシェルが完了してsuが終了するまでブロックされます。なぜですか?

ベストアンサー1

簡単です。なぜならできないからです。他のプロセスのuidを変更するためのシステムコールはありません。親シェルが終了するのを待たない場合は、組み込みコマンドをsu前に追加してください。execこれにより、最初に分岐せずにシェルが直接実行されます。もちろん、間違ったパスワードを入力すると、返すシェルがないため、セッションは終了します。

おすすめ記事