Linux の 'id' コマンドは、プロセスが属する groups= について報告します。これはいつ、どのように記入されますか?
私は suid/sgid プログラムを書いていますが、私のプロセスではグループが埋められないようで、おそらく偶然かもしれませんが、nfs マウントされたファイル システムに関する権限も正しく機能しません (ちなみに、 no_root_squash で遊んだことがありますが、役に立ちませんでした)
Linux の 'id' コマンドは、プロセスが属する groups= について報告します。これはいつ、どのように記入されますか?
私は suid/sgid プログラムを書いていますが、私のプロセスではグループが埋められないようで、おそらく偶然かもしれませんが、nfs マウントされたファイル システムに関する権限も正しく機能しません (ちなみに、 no_root_squash で遊んだことがありますが、役に立ちませんでした)
ほとんどの場合、補助グループは によって設定されlogin
ます。
自分で設定したい場合は、関数getgrouplist()
とsetgroups()
fromが必要です。正常<grp.h>
に呼び出すには root になる必要があることに注意してください。setgroups()
ありがとう、 setgroups() はほとんど答えでした。しかし、本当にうまく機能する initgroups() を使用することになりました。呼び出しは、ルートから setuid を実行する前に行われました。
man ページでこれを見つけました 名前 initgroups - 補助グループ アクセス リストを初期化します
SYNOPSIS #include #include
int initgroups(const char *user, gid_t group);
どうやら、グループが LDAP からのものである場合、それらを適切に入力するには、これを行う必要があります。
通常、複数のグループ メンバーシップはログイン時に設定されますが、あまり使用されません。SOP では、多くの場合、各ユーザーに独自のグループを付与します。
通常、ネットワーク ファイル システムは、ローカル クライアントのルート権限を尊重しません。