ユーザー管理
ユーザー管理:記事リスト
ユーザー管理のカテゴリーには以下の記事がリストされています。
所属しているグループをプライマリグループに戻す
所属しているグループ内で一時的にプライマリグループを変更するで
一時、プライマリグループの変更を行いましたが、それを元に戻すには、
newgrpコマンドを実行します。
[pakira@Tiger ~]$ newgrp ←newgrpコマンドを実行します。
所属しているグループ内で一時的にプライマリグループを変更する
ユーザーが複数のグループに所属している場合、通常はプライマリグループの
メンバーとしてコマンドを実行します。しかし、プライマリグループ以外の権限を
必要とする処理を実行する場合は、ユーザーが所属しているグループ内で
一時的にプライマリグループを変更できます。
一時的にプライマリグループを変更するには、
newgrpコマンドにグループ名を付けて実行します。
[miyazaki@Tiger ~]$ whoami ←ユーザー名を確認します。
miyazaki
[miyazaki@Tiger ~]$ cat /etc/group | grep miyazaki
↑ユーザー「miyazaki」の所属グループを確認します。
nobody:x:99:miyazaki
miyazaki:x:601:
[miyazaki@Tiger ~]$ newgrp nobody ←グループ「nobody」に変更します。
ユーザーにプライマリグループ以外のグループを追加する
ユーザーにプライマリグループ以外のグループを追加する場合には、
usermodコマンドにオプション「-G」を付け、追加するグループのグループ名、
またはGIDを指定します。
(カンマ「,」で区切ることで複数のグループを同時に設定することも可能です。)
そして、追加を行いたいユーザ名を付けて実行します。
このコマンドを実行するには、root権限が必要になります。
[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:
[root@Tiger ~]# cat /etc/group | grep miyazaki
↑ユーザー「miyzaki」のステータスを確認します。
miyazaki:x:601: ←プライマリグループのみ設定されています。
[root@Tiger ~]# usermod -G nobody miyazaki
↑ユーザー「miyzaki」にグループ「nobody」を追加します。
[root@Tiger ~]# cat /etc/group | grep miyazaki
nobody:x:99:miyazaki ←グループ「nobody」が追加されます。
miyazaki:x:601:
ユーザーのプライマリグループを変更する
ユーザーが複数のグループに所属している場合、プライマリグループを変更する場合は、
usermodコマンドにオプション「-g」を付けて、プライマリグループのグループ名、または
GID、そして変更するユーザー名を付けて実行します。
これらのパラメータは、既にシステムに登録済みである必要があるとともに、
実行するには、root権限が必要になります。
[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:
[root@Tiger ~]# cat /etc/passwd | grep miyazaki
↑ユーザー「miyazaki」のプライマリグループを確認します。
miyazaki:x:502:601:Miyazaki,,03-333-3333:/home/miyazaki:/bin/bash
[root@Tiger ~]# usermod -g nobody miyazaki
↑ユーザー「miyazaki」のプライマリグループを「nobody」に変更します。
[root@Tiger ~]# cat /etc/group | grep nobody
↑ユーザー「miyazaki」のプライマリグループを確認します。
nobody:x:99:
[root@Tiger ~]# cat /etc/passwd | grep miyazaki
↑ユーザー「miyazaki」のプライマリグループを確認します。
miyazaki:x:502:99:Miyazaki,,03-333-3333:/home/miyazaki:/bin/bash
グループパスワードを削除する
グループに設定したパスワードを削除するには、gpasswdコマンドに
オプション「-r」か、「-R」を付けて実行します。
引数にはパスワードを削除したいグループ名を指定します。
グループにパスワードを設定する
この処理は、root、またはグループ管理者に登録されているユーザーが実行できます。
グループに管理者を設定する
[pakira@Tiger ~]$ whoami ←グループ管理者であることを確認します。
pakira
[pakira@Tiger ~]$ gpasswd -r unyo ←グループ「unyo」のパスワードを削除します。
[pakira@Tiger ~]$ gpasswd -R unyo ←グループ「unyo」のパスワードを削除します。
グループからメンバーを外す
既存グループからメンバーを外すには、gpasswdコマンドに
オプション「-d」を付けて実行します。
引数には、追加するユーザー名、グループ名を指定して実行します。
この処理は、root、またはグループ管理者に登録されているユーザーが実行できます。
■グループ管理者に登録されているユーザーがメンバーを外す
[pakira@Tiger ~]$ whoami ←グループ管理者であることを確認します。
pakira
[pakira@Tiger ~]$ cat /etc/group | grep miyazaki ←グループに追加されていることを確認します。
unyo:x:600:miyazaki
miyazaki:x:601:
[pakira@Tiger ~]$ gpasswd -d miyazaki unyo ←miyazakiをグループから外します。
Removing user miyazaki from group unyo
[pakira@Tiger ~]$ cat /etc/group | grep miyazaki ←グループから外れていることを確認します。
miyazaki:x:601:
グループにメンバーを追加する
既存グループにメンバーを追加するには、gpasswdコマンドに
オプション「-a」を付けて実行します。
引数には、追加するユーザー名、グループ名を指定して実行します。
この処理は、root、またはグループ管理者に登録されているユーザーが実行できます。
■グループ管理者に登録されているユーザーがメンバー追加する
[pakira@Tiger ~]$ whoami ←グループ管理者であることを確認します。
pakira
[pakira@Tiger ~]$ gpasswd -a miyazaki unyo ←miyazakiをunyoグループに追加します。
Adding user miyazaki to group unyo
[pakira@Tiger ~]$ cat /etc/group | grep miyazaki ←グループに追加されていることを確認します。
unyo:x:600:miyazaki
miyazaki:x:601:
グループに管理者を設定する
既存のグループに、root(特権ユーザー)とは別に管理者を設定することができます。
ここで設定された管理者は、グループに対して、メンバーの追加、削除、
グループパスワードの設定、削除などが行えます。
グループごとに管理者を設定するメリットは、特定のディレクトリ以下の
管理をその管理者に任せることができるので、root(特権ユーザー)である
システム管理者の負担を軽減することができます。
管理者を設定するには、gpasswdコマンドにオプション「-A」を付け、
引数にユーザー名、管理させるグループ名を指定します。
ユーザーはカンマ「,」で区切ることで複数指定することが可能です。
[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:
[root@Tiger ~]# cat /etc/group | grep unyo ←unyoグループが存在することを確認します。
unyo:x:600:
[root@Tiger ~]# gpasswd -A pakira unyo ←unyoグループの管理者としてpakiraを設定します。
グループにパスワードを設定する
グループにパスワードを設定する場合には、gpasswdコマンドを使用します。
グループにユーザーを追加する場合や、グループに登録されていない
ユーザーの場合にパスワード入力が求められるようになります。
グループにパスワードを設定することで、
グループに勝手にメンバーを登録されることを防ぐことができます。
[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:
[root@Tiger ~]# gpasswd unyo ←unyoグループにパスワードを設定します。
Changing the password for group unyo
New Password: ←unyoグループのパスワードを入力します。
Re-enter new password: ←もう一度、unyoグループのパスワードを入力します。
グループIDを指定してグループを追加する
グループを追加すると、Linuxシステムは自動的にGID(グループID)を割り当てます。
このため、システム管理上、GIDの規則性を持たせて運用・管理したい場合には不都合に
なってしまいます。このような場合には、「-g」オプションを付けてGIDを指定して
groupaddコマンドを実行します。
このコマンドを実行するには、root権限が必要になります。
[pakira@Tiger ~]$ su - ←rootになります。
パスワード:
[root@Tiger ~]# groupadd -g 600 unyo ←GIDを指定してグループを作成します。
[root@Tiger ~]# cat /etc/group | grep unyo ←追加したグループを確認します。
unyo:x:600:
グループを削除する
グループを削除するには、groupdelコマンドを使用します。
引数には、削除したいグループ名をして実行します。
しかし、削除するグループをプライマリーグループとするユーザーがいる場合、
そのユーザを先に削除してからでないと、グループの削除ができないので注意が必要です。
たとえば、グループpakiraを削除するためには、ユーザーpakiraを削除してからでないと
グループ削除ができません。
このコマンドを実行するには、root権限が必要になります。
[pakira@Tiger ~]$ su - ←rootになります。
パスワード:
[root@Tiger ~]# cat /etc/group | grep unyo ←unyoフループの確認をします。
unyo:x:503:
[root@Tiger ~]# groupdel unyo ←unyoグループを削除します。
[root@Tiger ~]# cat /etc/group | grep unyo ←unyoグループが削除されていることを確認します。
[pakira@Tiger pakira]$ su - ←rootユーザになります。
Password:
[root@Tiger root]# grep linuxuser /etc/group ←グループ「linuxuser」が存在することを確認します。
linuxuser:x:503:
[root@Tiger root]# groupdel linuxuser ←グループ「linuxuser」を削除します。
[root@Tiger root]# grep linuxuser /etc/group ←再度グループ「linuxuser」を確認します。
[root@Tiger root]# ←削除されたのでなにも表示されません。
グループを追加する
グループを作成するメリットは、複数人のプロジェクトなどで、メンバーをグループに
登録することでパーミッション管理が容易になる点です。
グループを作成するには、groupaddコマンドを使用します。
実行する際は、引数に追加するグループ名を指定します。
このコマンドを実行する際は、root権限が必要になります。
[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:
[root@Tiger ~]# groupadd unyo ←新規グループを作成します。
[root@Tiger ~]# cat /etc/group | grep unyo ←作成したグループを確認します。
unyo:x:503:
所属グループを表示する
特定のユーザーがどのグループに所属しているかを確認するには、groupsコマンドを使用します。
引数なしで実行した場合は、コマンドを実行したユーザーの所属グループが表示されます。
引数に所属グループを表示したいユーザー名を指定すると、そのユーザーの所属グループが表示されます。
■コマンドを実行したユーザーの所属グループを表示する
[pakira@Tiger ~]$ whoami ←ユーザー名を表示します。
pakira
[pakira@Tiger ~]$ groups ←所属グループを表示します。
pakira
■特定ユーザーの所属グループを表示する
[pakira@Tiger ~]$ groups nobody ←「nobody」ユーザーの所属グループを表示します。
nobody : nobody
[pakira@Tiger ~]$
Linuxユーザーのパスワードロックを解除する
Linuxユーザーのパスワードロックを解除するには、usermodコマンドにオプション「-U」を
付けてユーザー名を指定するか、passwdコマンドにオプション「-u」を付けて、
ユーザ名を指定して実行します。
■usermodコマンドでパスワードロックを解除する
[pakira@Tiger ~]$ su - ←rootになります。
パスワード:
[root@Tiger ~]# usermod -U miyazaki ←miyazakiユーザーのパスワードロックを解除します。
[root@Tiger ~]# exit ←rootから抜けます。
logout
[pakira@Tiger ~]$ su miyazaki ←miyazakiユーザーにスイッチします。
パスワード: ←miyazakiユーザーのパスワードを入力します。
[miyazaki@Tiger pakira]$ ←ロックが解除されているため、スイッチできます。
■passwdコマンドでパスワードロックを解除する
[miyazaki@Tiger pakira]$ su - ←rootになります。
パスワード:
[root@Tiger ~]# passwd -u miyazaki ←miyazakiユーザーのパスワードロックを解除します。
ユーザー miyazaki 用のパスワードをロック解除。
passwd: 成功
[root@Tiger ~]# exit ←rootから抜けます。
logout
[miyazaki@Tiger pakira]$ su miyazaki ←miyazakiユーザーにスイッチします。
パスワード: ←miyazakiユーザーのパスワードを入力します。
[miyazaki@Tiger pakira]$ ←ロックが解除されているため、スイッチできます。
Linuxユーザーのパスワードをロックする
あるユーザーがしばらくLinuxシステムを利用しない場合、システムを利用できないよう
ユーザーパスワードをロックするが理想的です。
パスワードをロックするには、usermodコマンドにオプション「-L」を付けてユーザー名を指定するか、
passwdコマンドに「-l」オプションを付けて、ユーザー名を指定して実行します。
■usermodコマンドでパスワードをロックする
[pakira@Tiger ~]$ su - ←rootになります。
パスワード:
[root@Tiger ~]# usermod -L miyazaki ←miyazakiユーザーのパスワードをロックします。
[root@Tiger ~]# exit ←rootから抜けます。
logout
[pakira@Tiger ~]$ su miyazaki ←miyazakiユーザーにスイッチします。
パスワード: ←miyazakiユーザーのパスワードを入力します。
su: パスワードが違います ←ロックされているため、スイッチできません。
■passwdコマンドでパスワードをロックする
[miyazaki@Tiger pakira]$ su - ←rootになります。
パスワード:
[root@Tiger ~]# passwd -l miyazaki ←miyazakiユーザーのパスワードをロックします。
ユーザー miyazaki 用のパスワードをロック。
passwd: 成功
[root@Tiger ~]# exit ←rootから抜けます。
logout
[miyazaki@Tiger pakira]$ su miyazaki ←miyazakiユーザーにスイッチします。
パスワード: ←miyazakiユーザーのパスワードを入力します。
su: パスワードが違います ←ロックされているため、スイッチできません。
ログインシェルを変更するには
ログイン時に起動するログインシェルは、ユーザーごとに変更できます。
変更を行うには、chshコマンドを使用します。
システムで指定できるシェルは/etc/shellsファイルに記述されています。
もし、新しいシェルをシステムに追加した場合には、
このファイルにシェルへのパスを記述しておく必要があります。
管理者は、他のユーザーのシェルを変更することができますが、
一般ユーザーは、自分が使用するシェルのみ変更できます。
変更の反映は、次回ログイン時にから有効になります。
■ログインシェルを変更する
----------------------------------------------------------
$ cat /etc/shells ←使用できるシェルを確認する
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
$ chsh ←chshコマンドでログインシェルを変更する
pakira のシェルを変更します。
パスワード: ←ユーザーのパスワードを入力する
新しいシェル [/bin/bash]: /bin/ksh ←新しく使用したいシェルを入力
シェルを変更しました。
■管理者(root)がユーザー(pakira)のログインシェルを変更する
--------------------------------------------------------------
$ su - ←「su -」でrootになる
パスワード: ←rootパスワードを入力する
# chsh pakira ←chshの後ろにユーザー名を指定する
pakira のシェルを変更します。
新しいシェル [/bin/bash]: /bin/csh ←新しく使用したいシェルを入力
シェルを変更しました。
----------------------------------------------------------
ユーザーのログイン履歴を確認する
ユーザーのログイン履歴は、/var/run/utmp、/var/log/wtmpファイルに出力されます。
このファイルは、/var/log/lastlog、/var/log/btmpファイルと同様に
バイナリファイルな為、lessコマンドやcatコマンド、tailコマンドで表示できません。
表示するには、専用の/usr/bin/lastコマンドを使用します。
[root@Tiger ~]# last
pakira pts/0 192.168.0.162 Wed Oct 10 12:21 still logged in
reboot system boot 2.6.32-279.el6.i Wed Oct 10 12:20 - 12:37 (00:17)
root tty1 Fri Aug 24 13:45 - down (00:00)
pakira ftpd1456 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01)
pakira ftpd1455 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01)
pakira ftpd1446 192.168.0.162 Fri Aug 24 13:42 - down (00:03)
■ユーザー名を指定してログイン履歴を表示する
引数にユーザー名を指定して実行すると、特定ユーザーのログイン履歴が表示できます。
[root@Tiger ~]# last pakira
pakira pts/0 192.168.0.162 Wed Oct 10 12:21 still logged in
pakira ftpd1456 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01)
pakira ftpd1455 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01)
pakira ftpd1446 192.168.0.162 Fri Aug 24 13:42 - down (00:03)
pakira pts/0 192.168.0.162 Fri Aug 24 13:20 - down (00:15)
pakira pts/0 192.168.0.162 Fri Aug 24 12:35 - 13:03 (00:28)
pakira ftpd1586 192.168.0.162 Fri Aug 24 11:54 - 11:55 (00:01)
他のユーザにファイルを見せないようにする
Linuxでは、他のユーザにファイルを見せないようにすることができます。それを行うにはchmodコマンドを使用してファイルの権限を変更します。ここでいう他のユーザとは、ファイルの所有者グループに所属してるユーザと、それ以外のユーザになります。
他のユーザーの作業状況を確認するには
同じLinuxシステム上にログインしているほかのユーザーがどのような作業をしているのか確認するには、wコマンドを使用すると便利です。
※ LinuxはマルチユーザーOSなので、複数のユーザーが同時にログインして作業することができます。
一般ユーザーでroot権限のコマンドを実行するには
あるコマンドを実行するときにのみ、root権限のコマンドを使用したいという場合があります。そのようなときには、sudoコマンドを使うと便利です。
sudoコマンドの引数に実行したいコマンドを指定して実行することで、rootコマンドを実行することができます。しかし、sudoコマンドを実行する際には、あらかじめ/etc/sudoersファイルに実行を許可したいユーザを設定しておく必要があります。
この/etc/sudoersファイルに記述するユーザーは信頼のあるユーザーを設定する必要があります。
また、sudoコマンドを実行したログはsyslogデーモンを経由して、ログファイルに記述されるので、セキュリティ管理上のメリットがあります。誰がいつどんなコマンドをsudoコマンドを使用したのかを詳しく知ることができます。
sudo -u <ユーザー名> <実行するコマンド>
特定のユーザーのみrootになれるようにする
一般ユーザーからrootコマンドになるには、suコマンドを実行すればなることができますが、suコマンドを実行できるユーザーを制限すれば、サーバーのセキュリティの向上になります。
誰でもrootになれるシステムは決して好ましくありません。
一般的には、wheelという特別なグループに所属するユーザーのみsuコマンドが実行できるようにすることが多く、suコマンドの使用を制限するには、/etc/pam.d/suファイルを編集します。
/etc/pam.d/suファイルの下記の行をコメントを外すことで、wheelグループのユーザーのみsuコマンドを実施できるようになります。
#auth required /lib/security/pam_wheel.so use_uid
一時的にrootになる
Linuxシステムを操作するには、Linuxにログインする必要があります。作業を行っていると一時的にroot権限になる必要がある場合があります。
その場合、いちいちログオフしてコンソールでroot権限でログインしなおすのは、実用的ではありません。
そんな時は、suコマンドを使用すれば簡単に一時的にroot権限意なることができます。
また、suコマンドの引数として、ユーザ名を指定すれば、その指定したユーザになることができます。
su <ユーザー名>
しかし、この時変更先ユーザーの環境変数を引き継ぐことが出来ません。環境変数などは元のユーザーのものをそのまま使用することになります。それでは大変不便なので、suコマンドのオプションとして「-」(ハイフン)を付けてコマンドを実行することで、変更先ユーザーの環境変数を引き継ぐことができるようになります。
ログインした時にユーザーにメッセージを表示する
Linuxはユーザーがログインした時に、任意のメッセージを表示させることができます。ログイン時にメッセージを表示するには、/etc/motdファイルに表示させるメッセージを記述します。
ちなみに、motdは「Message of the day」の略で、その日のお知らせという意味になります。
このログイン時のメッセージは、サーバーメンテナンスのお知らせや、システムに関する重要なお知らせを通知する場合に便利です。
メッセージの変更や削除を行う場合にも、/etc/motdファイルを編集します。
ユーザを複数のグループに所属させる
Linuxのグループ情報は、「/etc/group」ファイルに格納されており、下記のような表記がされている
pakira:x:500:
左からpakiraはグループ名、Xはパスワード(Xと書かれているときは、/etc/gshadowファイルに書かれています。)500はGIDになります。
ユーザを複数のグループに所属させるには、「/etc/group」ファイルを編集しますが、「/etc/group」ファイルを編集するにはvigrコマンドを使用すると便利です。
ユーザーを削除する
ユーザーを作成するuseraddコマンドがあれば、
削除するコマンドもあります。
ユーザーを削除するコマンドはuserdelになります。
このコマンドを実行すると、ユーザー情報は削除されますが、
ユーザーのホームディレクトリは残されたままになります。
ホームディレクトリも一緒に削除する場合は、
オプションに「-r」を指定して実行します。
ユーザーの設定を変更する
ユーザーには予め、UIDやGID、ホームディレクトリなどが指定されています。しかし、これらの情報を後から変更したい場合には、usermodコマンドを使用します。
usermodコマンドはrootのみ実行することができ、ユーザー情報を様々変更することが出来ます。ユーザー名を変更することも可能です。
Linuxでユーザーの所属グループを確認するコマンド|id・groups・getentの使い分け
「プライマリグループとセカンダリグループって何が違うの?」
Linuxでファイルのアクセス権やサービスの実行権限を正しく管理するには、ユーザーがどのグループに所属しているかを正確に把握する必要があります。
この記事では、id・groups・getentコマンドを使ってグループを確認する方法から、/etc/passwd・/etc/groupファイルの読み方、プライマリグループとセカンダリグループの違い、さらにはグループの追加・変更手順まで、現場で必要な知識を網羅的に解説します。
プライマリグループとセカンダリグループの違い
Linuxのユーザーは、必ず1つの「プライマリグループ(主グループ)」に所属しています。ユーザーがファイルやディレクトリを作成すると、そのファイルのグループ所有者はプライマリグループになります。一方、「セカンダリグループ(補助グループ)」は、追加で所属できるグループです。1人のユーザーが複数のセカンダリグループに所属できます。
・プライマリグループ:ユーザーに必ず1つ割り当てられるグループ。ファイル作成時のグループ所有者になる
・セカンダリグループ:追加で所属できるグループ。共有ディレクトリへのアクセス制御などに使う
たとえば、開発チーム用の共有ディレクトリに複数のユーザーがアクセスできるようにしたい場合、セカンダリグループとして「developers」を作り、そこに各ユーザーを追加する、という使い方をします。
グループを作成する
グループを新規作成追加するには、「groupadd」コマンドを使用します。グループに関する情報は/etc/groupに記述されており、編集することも可能です。
しかし、「/etc/group」ファイルを直接編集するのではなく、vigrコマンドでグループ情報を編集することができますので、こちらで編集したほうが望ましいでしょう。
ユーザーを作成する
ユーザーを新規作成追加するには「useradd」コマンドを使用します。コマンドの引数としてユーザー名を指定することで、ユーザーが作成されます。その際、/homeディレクトリ配下にユーザーディレクトリが作成され、ユーザー名と同じグループ名も作成されます。
