再ログインせずにログイン中ユーザの所属グループの変更を反映する方法
はじめに
UNIX 系の OS では、ログイン中のユーザの所属グループを変更した場合、一度ログアウトしなければ変更が反映されません。
しかし、あるコマンドを使えば再ログインせずにログイン中のユーザの所属グループを変更し、その変更を反映させる方法があります。
この記事では、その方法を紹介します。
検証環境
ログイン中のユーザの所属グループを変更しても直ちに設定が反映されない
実際に Linux 環境を使って検証してみます。
準備 : sudo
実行可能なテストユーザーを作成
最終的に以下のようなユーザーgenzouw
を作成します。
- ユーザー :
genzouw
- グループ :
genzouw
- セカンダリグループ :
sudo
以下のコマンドを順番に実行していきます。
上記のコマンドを実行すると、genzouw
ユーザーが作成されました。
sudo
実行可能なユーザーでセカンダリグループを変更
今度は genzouw
ユーザーでセカンダリグループを追加してみます。
何でもいいで www-data
グループをセカンダリグループに追加してみます。
上記のコマンドを実行すると、genzouw
ユーザーのセカンダリグループに www-data
グループが追加されました。
この状態で id
コマンドを実行すると、以下のようになります。
先程セカンダリグループに追加したはずの www-data
が見つかりません。
これを解消するための方法としてよく知られているのは、genzouw
ユーザーをログアウトして再度ログインすることです。
再度ログインした後、id
コマンドを実行すると、以下のようになります。
今度は www-data
グループが表示されました。
このように、セカンダリグループを追加した後は、ログインしなおす必要があります。
ログインせずにセカンダリグループへのグループ追加を反映する方法
Linux では、newgrp
コマンドを使用することで、ログインせずにセカンダリグループへのグループ追加を反映できます。
先ほどログインした操作の手前の状態まで戻ってみます。
次に、newgrp
コマンドを使用して、www-data
グループを追加します。
id
コマンドを実行すると、以下のようになります。
今度は www-data
グループが表示されました。
newgrp
を使ったときの問題点
一見便利そうな newgrp
コマンドですが、注意しなければならないことがあります。
今回 newgrp
コマンドを使用して www-data
グループへの追加が直ちに行えたのは、 genzouw
ユーザーが既に www-data
に所属していたためです。
もし所属していないグループを指定した場合には、パスワードの入力を求められます。
また、仮にパスワードを知っていたとしても newgrp
コマンドを使用してグループを追加した場合、次回ログインしたときには追加したグループが解除されてしまいます。
更に、 newgrp
コマンドの実行が成功すると、サブプロセスで新たにログインし直されるため、 exit
しても同じようなシェルが表示されます。
まとめ
newgrp
コマンドを使用してセカンダリグループの追加を永続的に反映できません。
また、 exit
コマンドを実行しても、同じようなシェルが表示されます。
そのため、結局は exit
した後、再度ログインし直すのが確かな手順となります。
ひとこと
紹介しておきながら、ネタエントリとなってしまいました。
こういう方法もあるよ、ということを知っておくと便利かもしれません。
ディスカッション
コメント一覧
まだ、コメントがありません