Web サーバーを実行するためのサービス レベル アカウントがあり、このユーザーは で設定されています/sbin/nologin
。
通常、ユーザーをグループに追加する場合、新しいグループ権限を使用するにはログアウトしてログインする必要があります。
このユーザーを別のグループに追加して権限の一部を拡張したいのですが、Web サーバーのユーザーがログインしないので、ユーザーはいつ、どのようにして新しいグループの権限にアクセスできるようになるのでしょうか?
答え1
プロセスのグループは、プロセスのプログラムを実行する前に、ルートからターゲットユーザーに変更するプログラムによって設定されます。ユーザーがログインすると、ユーザーを変更するプログラムはログインプログラム(login
、、、 …)であり、プロセスのプログラムはユーザーのシェルです。システムユーザーで実行されるデーモンの場合、ユーザーsu
を変更するプログラムは、またはDebianのなどの他のツールでsshd
ある可能性があります。su
start-stop-daemon
たとえば、start-stop-daemon
常にプロセスに補助グループを追加します。ユーザー変更プログラムには、ユーザー データベースからのプライマリ グループとグループ データベースからの補助グループの両方を設定するロジックが必要です。
答え2
CentOS 6 では がnscd
実行されている可能性があります。 上位レベルのコマンド ( などusermod
) でグループ所有権を変更していない場合は、 を実行して /etc/gshadow も更新されるようにする必要があります。が実行されているgrpconv
場合は、を追加してローカル グループ キャッシュを無効にします。プライマリ GID を変更した場合は を実行します。nscd
nscd -i group
nscd -i passwd
で結果を確認してくださいid -a $ACCOUNT
。
その後、サービスを再起動します。
答え3
su - ; /etc/init.d/NAME stop; /etc/init.d/NAME start; をお勧めします。
「/etc/init.d/NAME restart」だけでは不十分かもしれません。