ユーザーの追加,パスワードの変更,グループの管理,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
ホームディレクトリやスケルトンディレクトリを作成しない場合は,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
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
グループの追加・削除
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のリストはカンマでつなぎスペースは入れない
ユーザー情報の確認
ユーザーの情報を取得するには,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権限が必要
---- 以上