groupmod コマンドは、既に作成されているグループの属性を変更するためのコマンドです。
グループ名(name)や GID(グループ ID)、グループパスワードなどを変更する際に利用します。
/etc/group や /etc/gshadow の内容を書き換えるため、基本的には root 権限で実行する必要があります。
GID を変更する場合は、既存ファイルの所有グループや他サーバとの整合性にも注意が必要です。
groupmod [オプション] グループ名
対象とする既存グループ名を指定し、-n で新しい名前、-g で新しい GID などを指定して変更します。
グループを新規作成するときは groupadd、削除するときは groupdel を使用します。
・グループ名を変更する。
sudo groupmod -n webteam www
-n 新しいグループ名 を指定することで、グループ名を変更できます。
この例では、既存のグループ www の名前を webteam に変更しています。
所有グループ名の表示なども新しい名前に切り替わるため、運用上の名称を揃えたいときに便利です。
・GID(グループ ID)を変更する。
sudo groupmod -g 1200 developers
-g で新しい GID を指定することで、developers グループの GID を 1200 に変更します。
複数サーバで GID を統一したい場合や、GID 範囲を整理したい場合に使います。
既に同じ GID が別グループで使われている場合はエラーになります(-o で重複を許容することもできますが、通常は非推奨です)。
・既に使われている GID に変更する(特殊ケース)。
sudo groupmod -g 1000 -o sharedgroup
-o(non-unique)を付けると、既に他グループで使われている GID への変更を許可します。
特殊な運用以外ではおすすめできませんが、意図的に GID を共有したい場合などに限定的に使われることがあります。
・グループのパスワード(gshadow)を変更する。
sudo groupmod -p '暗号化済み文字列' devgroup
-p は「暗号化済みのパスワード文字列」を渡すオプションです。
グループパスワード機能自体は実務ではほとんど使われないため、多くの環境では gpasswd を使ったメンバー管理が主流です。
このオプションを使う必要が出てくるケースはかなり稀です。
・chroot 環境内のグループ情報を変更する。
sudo groupmod --root /mnt/chroot -g 1200 appgroup
–root ディレクトリ を指定すると、そのディレクトリをルートとみなして、
/mnt/chroot/etc/group などを対象にグループ変更を行います。
chroot 環境やインストール用イメージのグループ設定を、本番環境に合わせて調整したいときに使われます。
・groupmod 実行前後にグループ情報を確認する。
getent group developers
groupmod を行う前後で getent group グループ名 を実行し、
グループ名や GID、メンバー構成が想定どおりになっているかを確認しておくと安心です。
※ GID を変更した場合、既存ファイルの所有グループに古い GID が残ったままになることがあります。
必要に応じて find / -group 旧GID -ls などで該当ファイルを洗い出し、chgrp や chown で修正してください。
・グループ名の整理・リネーム
プロジェクト名の変更や役割名の整理に合わせて、
www → webteam、dev → developers のようにグループ名を分かりやすく整える場合に groupmod を使います。
・複数サーバ間での GID 統一
NFS 共有などで UID/GID の整合性が重要な環境では、
既存サーバの GID を groupmod -g で揃えていくことで、権限周りのトラブルを減らせます。
・インストールイメージや chroot 環境の調整
新しい OS イメージや chroot 環境の構築時に、
--root を使って本番と同じグループ名・GID に揃えておくと、デプロイ後の差異が少なくなります。
・設定ミスの修正
誤った GID や不適切なグループ名で作成してしまった場合、
groupmod で修正しつつ、ファイル所有権や sudoers 設定などをあわせて見直すのが定番の流れです。
groupmod 自体は「グループ情報を変えるだけ」のコマンドなので、
ユーザ所属の変更やファイル所有権の修正は、gpasswd コマンド や usermod・chgrp などと組み合わせて行う必要があります。
| short option | long option | description |
|---|---|---|
| -g | --gid | グループの GID(グループ ID)を変更する |
| -n | --new-name | グループ名を新しい名前に変更する |
| -o | --non-unique | 既に使用されている GID であっても重複を許可して変更する(特殊用途向け) |
| -p | --password | 暗号化済みのグループパスワードを設定する(実務ではほとんど使用されない) |
| -R | --root | 指定したディレクトリをルートとみなしその配下の /etc/group などを操作する(chroot 環境などで使用) |
| -P | --prefix | 指定したディレクトリを /etc などのベースパスとして扱う(一部ディストリビューションでのみ利用可能) |
| -h | --help | groupmod コマンドの使い方(ヘルプ)を表示して終了する |
| -V | --version | groupmod コマンドのバージョン情報を表示して終了する |
ここでは、shadow-utils ベースの Linux 環境で一般的に利用される groupmod の主なオプションを TablePress の表にまとめている想定です。
実際に利用可能なオプションや挙動は、ディストリビューションやバージョンによって異なる場合があるため、
本番環境で使用する前に man groupmod で最新の仕様を確認することをおすすめします。
グループの新規作成・変更・削除の一連の流れを理解するには、groupadd コマンド、groupdel コマンド もあわせてチェックしておくとよいでしょう。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
