新しいグループメンバーシップを適用するには、newgrpまたはsuを使用(またはログアウトしてから再度ログイン)する必要があるのはなぜですか?

新しいグループメンバーシップを適用するには、newgrpまたはsuを使用(またはログアウトしてから再度ログイン)する必要があるのはなぜですか?

新しいグループメンバーシップを表示するには、新しいログイン(またはsuによって開始された新しいログインシェル)が必要なのはなぜですか?newgrp

bash(または他のシェル)の他のインスタンスを実行するだけでは--login機能しませんが、suやnewgrpなどのsuidルートエントリは機能します。

親シェルから継承されたエントリがあるか、新しいグループメンバーシップを隠すキャッシュがありますか?

ベストアンサー1

子プロセスが作成されると、プロセスユーザーIDとグループIDは親プロセスから継承されます。

したがって、ユーザーグループを変更すると(実際にディスクの構成ファイルを変更した場合)、プロセスは自動的にそれを認識せずにグループIDを変更します(ルート以外のプロセスには権限がありません)。

bashを起動すると…まあ、ちょうどbashを起動すると特別なことは起こりません。親グループID(グラフィックシェルまたは他のbash)を継承するだけです。

しかし、suを実行またはログインすると、すべての魔法が起こります。彼らはすべての子プロセスがこれらのIDを継承するようにログインし、ユーザーIDとグループIDを変更できることを確認します(有効なルートIDを必要とするシステムコールを使用してsuidビットを設定します)。

おすすめ記事