groupaddコマンドはLinuxのグループを追加するコマンドになります。groupaddコマンドは管理者権限が必要なコマンドになります。
Linuxのグループを利用することで、グループ内でファイルを読み込めるようなアクセス権限を利用できます。また、管理者権限を持つグループにユーザを追加することで、管理者権限を持つユーザとして、sudoコマンドで管理者権限が必要なコマンドを利用できるように設定できます。
グループを追加
groupaddコマンドはグループ名を指定することで、グループを追加することができます。
コマンド例と実行結果
1 2 3 |
$ sudo groupadd testgroup $ cat /etc/group | grep testgroup testgroup:x:1009: |
また、グループを一覧表示するコマンドとして以下のコマンドがあります。
getent group
グループにログイン
グループに対して、gpasswdコマンドを利用するとグループに対してパスワードを設定することができます。パスワードを設定したグループは、グループのメンバー以外のユーザがnewgrpコマンドでログインできるようになります。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
$ sudo gpasswd testgroup Changing the password for group testgroup New Password: Re-enter new password: $ $ id -a uid=1001(testuser) gid=1008(testuser) groups=1008(testuser),27(sudo) $ $ newgrp testgroup Password: $ id -a uid=1001(testuser) gid=1009(testgroup) groups=1009(testgroup),27(sudo),1008(testuser) |
また、sgコマンドを利用すると指定したグループとしてコマンドを実行することができます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 |
$ id -a uid=1001(testuser) gid=1008(testuser) groups=1008(testuser),27(sudo) $ ls -l file.txt -rw-r----- 1 ubuntu testgroup 15 6月 26 14:04 file.txt $ $ cat file.txt cat: file.txt: Permission denied $ sg testgroup -c 'cat file.txt' Password: testgroup file |
ユーザをグループのメンバーに
ユーザをグループのメンバーにする方法はいくつかあります。gpasswdコマンドを利用する場合は、-aオプションとユーザ名で指定したグループにそのユーザを追加できます。また、-dオプションとユーザ名で指定したグループからそのユーザを削除できます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
$ groups testuser testuser : testuser sudo $ $ sudo gpasswd -a testuser testgroup Adding user testuser to group testgroup $ groups testuser testuser : testuser sudo testgroup $ $ sudo gpasswd -d testuser testgroup Removing user testuser from group testgroup $ groups testuser testuser : testuser sudo |
gpasswdコマンドのほかに、usermodコマンドの-Gオプションを用いてグループを設定する方法もあります。usermodコマンドについて、-Gオプションと一緒に-aオプションを用いるとそのユーザの所属しているグループに指定したグループを追加できます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 |
$ groups testuser testuser : testuser sudo $ $ sudo usermod -aG 'testgroup' testuser $ groups testuser testuser : testuser sudo testgroup $ $ sudo usermod -G 'sudo' testuser $ groups testuser testuser : testuser sudo |
グループでのファイルのアクセス権限について
ファイルのアクセス権限はchmodコマンドを利用することで設定できます。また、ファイルのグループの所有権はchownコマンドまたはchgrpコマンドを利用することで変更できます。
以下の例は所有者に読み込みと書き込み権限、グループには読み込み権限を与え、グループをtestgroupというグループに設定する例になります。
コマンド例と実行結果
1 2 3 4 5 6 7 8 |
$ ls -l file.txt -rw-rw-r-- 1 ubuntu ubuntu 0 6月 26 16:31 file.txt $ $ chmod u=rw,g=r,o= file.txt $ sudo chown :testgroup file.txt [sudo] password for ubuntu: $ ls -l file.txt -rw-r----- 1 ubuntu testgroup 0 6月 26 16:31 file.txt |
グループでの管理者権限について
管理者権限を持つグループとしてsudoやwheelがあります。このような管理者権限を持つグループの設定については、/etc/sudoersのファイルに記述されています。このファイルを編集するためのコマンドとして、visudoコマンドがあります。
この/etc/sudoersの設定ファイルによって、ユーザやグループに管理者権限や、他にももっと詳細な権限などの設定できます。
例えば、私のUbuntu環境では/etc/sudoersの内容には
1 |
%sudo ALL=(ALL:ALL) ALL |
のような行があります。また、CentOS環境での/etc/sudoersの内容には
1 |
%wheel ALL=(ALL) ALL |
のような行があります。上のような行によって、管理者権限を持つグループの設定を行うことができます。上の行について、1列目の最初の%の文字はグループであることを示し、そのあとの文字にグループ名が続いています。また、上の行の意味合いとして、sudoやwheelのグループは任意のホスト上で任意のユーザとして任意のコマンドを実行できることを表しています。
man 5 sudoers