Help us understand the problem. What is going on with this article?

Linuxコマンド入門(3) ~ユーザー・グループの管理~

More than 3 years have passed since last update.

 ユーザーの追加,パスワードの変更,グループの管理,Linuxのシステムを管理するものならば避けては通れない作業です.GUIで簡単にできるものもありますが,CUIしか使えないマシンを使うこともまだまだあると思います.
 うっかり忘れちゃったときのためにも,ユーザー管理のコマンドをここでまとめておこうと思います.

 今回扱うコマンドは以下の通りです.

  • ユーザーの追加・削除・変更
    • useradd
    • userdel
    • usermod
  • グループの追加・削除・変更
    • groupadd
    • groupdel
    • groupmod
  • パスワードの設定
    • passwd
    • gpasswd
  • ユーザーをグループに追加・削除
    • usermod -aG
    • gpasswd -a/-d/-M
  • 設定・データベースの確認
    • getent
    • id
    • groups

環境

  • CentOS 6.8

ユーザの追加・削除

useradd

 「useradd」コマンドはまさに"user add"の意味でユーザーを追加する基本のコマンドです.Linux OSの種類によっては,adduserというコマンドも使えます.Fedoraでは必要な設定を対話的に行えるらしいので,adduserが推奨されます.一方UbuntuなどのDebian系ではグループへの追加を意味するので要注意です.CentOSではuseraddとadduserはほぼ同じものです.

 基本的にはデフォルト設定で作成すればよいので,指定しなければならないのは「ユーザー名」です.また,GUIで設定するときに必ず聞かれた「フルネーム」もデフォルトでは設定されないので指定してみましょう.使い方は次の通りです.

# adduser USERNAME -c FULLNAME
例:
# adduser taro -c "Momo Taro"

 CUIでユーザが追加できたか確認するには,/etc/passwdの最後の方を見ます./etc/passwdは一般ユーザからも見れるアカウント情報のファイルです.
 ファイルの末尾を表示するtailコマンドを使って確認してみましょう.nオプションは表示する行数です.

# tail -n 3 /etc/passwd

AddUser_3.PNG

 ホームディレクトリやスケルトンディレクトリを作成しない場合は,MNオプションが使えます.

 また,useraddにはpオプションが存在します.pは"password"の意味でデフォルトパスワードを設定します.ただし,ここに入力したパスワードは平文で処理され保存されてしまうので,もし設定した場合は直ちに後述する方法で変更してください.

userdel

 「userdel」は"user delete"の意味でユーザーの削除に用いる.使うときは次のようにします.

userdel -r USERNAME

 rオプションをつけないと,削除したユーザーのホームディレクトリなどが削除されないまま残ってしまうので注意する必要があります.

パスワードが空のアカウント

 useraddでpオプションを空欄にすると,ユーザーが作成されてもログインすることはできません.root権限でsuコマンドを使えばパスワードの入力をスキップできるためにログインできてしまいますが,通常は何を入力してもパスワード認証を突破できないのです.逆に,useraddでパスワードを指定しないのは,あとで安全にパスワードを設定するためでもあり,その間ログインが禁止されていることで空パスワードでログインされるのを防いでいるのです.

 /etc/shadowを見てみましょう.これはroot権限でしか開けないアカウント情報ファイルで,パスワードの情報なども載っています.先ほどのようにtailで見ることもできますが,データベースの情報を閲覧するコマンドgetentを使ってみます.

 getentはデータベースとキーを指定することで特定のデータベースの特定の項目だけを抜き出して表示することができます.データベースに「shadow」,キーに「hanako taro」を指定してみましょう.

getent shadow hanako taro

AddUser_5.PNG

 hanakoとtaroの情報が表示されました./etc/passwdでhanakoの後に表示されていた「x」が何やら長い文字列になりました.これが暗号化パスワードです.安全のためにハッシュ関数というもので暗号化されているのです.

 一方,taroの方はパスワードの欄に「!!」と表示されています.これはアカウントがロックされていることを表すマークです.

パスワードの設定

passwd

 パスワードは,「passwd」コマンドで設定できます.引数にユーザー名を入れるとそのユーザーのパスワードを,何も入れなければ自分のパスワードを変更します.一般ユーザーは自分のパスワードしか変更できません.

# passwd taro

 また,passwdコマンドを使ってパスワード認証をロックしたり解除したりすることもできます.

ロック(lock)
# passwd -l USERNAME

解除(unlock)
# passwd -u USERNAME

 パスワードが空の場合は,そのままではロックを解除することはできません.どうしても空パスワードのアカウントを作りたいときは,強制"forced"のfコマンドを使います.

# passwd -uf USERNAME

passwdUnlock_1.PNG

グループの追加・削除

groupadd

 グループの追加はgroupaddを用います.

# groupadd onitaiji

 グループの確認はgroupデータベースで確認できます.先ほどと同様にgetentコマンドで確認します.

# getent group onitaiji
onitaiji:x:503

groupdel

 グループの削除はgroupdelでできます.グループを削除するときには,そのグループIDをもつファイルがないこと,そのグループを主グループとしているユーザーがいないことを確認する必要があります.例えばユーザー「taro」が残っているのにグループ「taro」を消去してはいけません.

# groupdel GROUPNAME

groupmod

 groupmodは,"group modify"の意味で,グループの設定を変更することができます.例えばグループIDを変えたいときには次のようにします.

# groupmod -g 600 onitaiji
# getent group onitaiji
onitaiji:x:600

グループのパスワード

 グループにユーザーを追加するときなどにパスワードを入力させることができます.

gpasswd

 gpasswdは”group password”の意味で,グループのパスワードを設定,変更します.

# gpasswd GROUPNAME

ユーザーをグループに追加

 ユーザーをグループに追加する方法は二つあります.ひとつはusermod, もうひとつはgpasswdを利用する方法です.

usermodでユーザーをグループに追加

 usermodは"user modify"の意味で,ユーザーの設定を変更するコマンドです.aとGのオプションを両方指定することでグループに追加できます."append groups"としてセットで覚えておきましょう.なお,Gだけでは所属するグループのリストを引数に変更することになり,現在入っているグループから抜けてしまいます.

# usermod -aG GROUP1, GROUP2, ...

gpasswdでユーザーをグループに追加・削除

 gpasswdはグループのパスワードを変更するコマンドでしたが,オプションでメンバーを追加したり削除したりすることができます.使い方は次の通りです.

# gpasswd -a USER GROUP    # USERをひとりGROUPに追加
# gpasswd -d USER GROUP    # USERをひとりGROUPから削除
# gpasswd -M USER1,USER2,USER3,… GROUP
        # USERのリストを設定(appendはできない)
        # USERのリストはカンマでつなぎスペースは入れない

gpasswd_1.PNG

ユーザー情報の確認

 ユーザーの情報を取得するには,getent, id, groupsコマンドが使えます.

id

 idコマンドはユーザーのid情報をすべて表示します.オプションがたくさんあります.次のように使います.

$ id        # 自分のid情報をすべて表示します
$ id USERNAME        # 指定したユーザーのid情報をすべて表示します
$ id -u/-g USERNAME        # 指定したユーザーのid情報のうちuid/gidのみを表示します
$ id -Gn USERNAME        # 指定したユーザーの所属するグループの一覧を表示します
                         # nオプションはuid/gidを名前に変換します

groups

 groupsコマンドはユーザーの所属するグループをすべて表示します.引数に複数のユーザーを指定することもできます.

$ groups enryu hanako taro
enryu : enryu wheel users labo onitaiji
hanako : hanako users labo onitaiji
taro : taro onitaiji

getent

 getentは"get entries"の略です.使い方についてもう一度まとめます.

$ getent passwd        # 登録ユーザーの情報の一覧を表示
$ getent passwd USER        # 指定したユーザーの情報のみを表示

$ getent group        # 登録グループの情報の一覧を表示
$ getent group GROUP        # 指定したグループの情報のみを表示

# getent shadow        # 登録ユーザーのパスワード情報を含めて表示
# getent gshadow        # 登録グループのパスワード情報を含めて表示
        # shadow, gshadowの表示にはroot権限が必要

---- 以上

こちらもよろしくお願いいたします.

エンリュの迷い森|トップページ

LostEnryu
情報システム,プログラミング,情報セキュリティなど,情報分野のありとあらゆることを勉強している学生です.研究は生物系です(←???).自分の投稿にはそれなりの責任を感じてはいますが,私の記事を参考に実行したことで生じたどんな損害・不利益に対しても責任は取りかねます.ただの迷子ですから.
http://lost-in-forest.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away