useradd
コマンドにより新規ユーザを追加、usermod
コマンドにより既存ユーザの情報を編集することができる。またuseradd -D
コマンドにより各ユーザ設定の既定値を参照、編集することができる。
【書式1】新規ユーザ作成 useradd オプション ユーザ名 【書式2】既存ユーザ情報編集 usermod オプション ユーザ名
特に断りのないものはuseradd, usermod両者で使用可能なオプション。
-c
コメント-d
ホームディレクトリ~
の場所)を指定する。指定がなければ、既定のホームディレクトリ(/home/
)に指定したユーザ名を付け加えたものがログインディレクトリとなる。例えばユーザ名にhoge
を指定すれば、既定では/home/hoge/
がログインディレクトリとなる。なお、/bin/false
を指定するとsshログインはできなくなる。/sbin/nologin
も似ているがFTPログインは可能になるとのこと[5] [6]。【usermodのみ】-m
オプションも指定すると、現在のホームディレクトリの中身が新しいホームディレクトリに移動される。移動先ディレクトリがない場合は新たに作成される。
-e
有効期限-f
永久停止までの日数-g
メイングループ/etc/default/useradd
に指定があればそれに従い、
なければ 1 となる。
-G
サブグループ,...-l 新ログイン名
-m
-k テンプレートディレクトリ-k
オプションを同時に指定すると テンプレートディレクトリ 以下のファイルが、指定しないと /etc/skel
以下のファイルが、ホームディレクトリにコピーされる。ホームディレクトリには、テンプレートディレクトリ または /etc/skel
に含まれるすべてのサブディレクトリも作成される。-k
オプションは、-m
オプションとともに使われる場合のみ有効である。デフォルトでは、ホームディレクトリを作らず、ファイルのコピーもしない。
-o
-p
パスワードpasswd
コマンドにてパスワードを設定する必要がある。
-s
シェル/sbin/nologin
を指定すれば、sshでのログインはできなくなる(sftp専用ユーザなど特定用途用ユーザ作成時に使用)。/bin/false
も似ているが、FTPやログイン拒否のメッセージ表示もできなくなる[5]。
-u
UID-o
オプションを指定する場合を除き、他のユーザと重複する値は指定できない。指定がない場合の既定値は999および他のあらゆる既存ユーザの ID よりも大きい、最小の非負整数。通常、0から999までの値はシステムアカウント用に予約されている。
【usermodのみ】ホームディレクトリ以下の、そのユーザ所有のすべてのファイルのユーザ ID は、自動的に新しい値に変更される。ホームディレクトリ以下にないファイルは手作業で変更しなければならない。
-L
-U
【書式3】既定値表示、変更 useradd -D -g メイングループ -b ユーザホームディレクトリ -e 有効期限 -f 永久停止までの日数 -s シェル
ユーザ削除のためのコマンドuserdel
の書式は以下の通り。
このコマンドを実行するとシステムアカウントファイルを修正し、
指定したユーザ名に対応するすべてのエントリを削除する。
削除されるユーザは存在していなければならない。
また削除しようとするユーザがログインしている場合や、ユーザのプロセスが動作している場合は削除できない。プロセスはkill
コマンドを使うなどして終了しなければならない。
【書式】 userdel -r ユーザ名
-r
【書式】
passwd ユーザ名
ログイン中ユーザのパスワードを変更する。正しい旧パスワード、そして新パスワードとして同じ値を2回入力するとパスワードが変更できる。ユーザ名を指定しない場合は現在ログイン中のユーザ自身のパスワードを変更する。ユーザ名を指定すれば他のユーザのパスワードも変更可能だが、この操作には管理者権限が必要。また管理者権限で操作する際、旧パスワードは要求されない。
NIS(Network Infomation Server)を用いてユーザを一括管理している場合はyppasswd
を用いる。
mkpasswd
を使うと、ランダムなパスワードを設定することができる。
-l オプションでアカウントをロックできる。
【書式】
passwd -l ユーザ名
mkpasswd
コマンドは、ランダムなパスワード文字列の生成や、そのパスワードの設定を行う。このコマンドはexpectというパッケージで提供される。インストールされていない場合はyumコマンドなどでインストールする。
【書式】 mkpasswd オプション ユーザ名
オプション
/etc/yppasswd
がある場合はこれが、なければ/bin/passwd
が用いられる。【例】ランダムな文字列を出力 $ mkpasswd Je94uMwa#
chsh
コマンドはユーザのログインシェルを変更する。これによって、ユーザがログインして最初に実行されるコマンドが決まる。
-s オプションを指定しなかった場合は、 chsh は対話的に動作する。ユーザの現在のログインシェルを表示し、新しい値の入力を促す。設定値を変更するなら新しい値を入力し、現在の値を使うなら空行のままリターンキーを押せばよい。現在のシェルは [ ] 記号の間に表示される[7]。各ユーザの現在のログインシェル設定値は/etc/passwd
ファイルに記載されている。
NISを設定している場合、NISクライアントではchsh
の代わりにypchsh
(→NISユーザ情報閲覧・編集コマンド参照)を使う。これが使えない場合はNISサーバでchsh
を用いてログインシェルを変更し、NISクライアントへ情報反映する(/var/yp/make
)。
【書式】 chsh -s ログインシェル ユーザ名 【例】 [user@server ~]$ chsh user のシェルを変更します。 新しいシェル [/bin/bash]: NISを用いていてrootが一般ユーザのシェルを変更しようとした場合 [root@server ~]$ chsh user chsh: ローカルの項目しか変更できません -- かわりに ypchsh を使いましょう
-s ログインシェル
変更後のログインシェル名を指定する。一般ユーザは自身のログインシェルのみ変更可能で、選べるコマンドは/etc/shells
に記載があるもののみ。スーパーユーザーならユーザ名を指定して任意ユーザのログインシェルを変更できる。また指定値も/etc/shells
に記載があるかどうかに関わらず任意。
機能を制限されたログインシェルを用いているアカウントからは、ログインシェルを変更できないかもしれない。この理由から、/bin/rsh は /etc/shells には書かないほうが良い。誤って機能が制限されたシェルに変更してしまうと、ログインシェルを元のものに戻せなくなってしまうからである。
chsh
コマンドはユーザのフルネーム・オフィスの部屋番号・内線番号・自宅の電話番号といったアカウント情報を変更する。この情報は finger(1) のようなプログラムによって表示される。一般ユーザは自分自身のアカウント情報のみを変更できる。スーパーユーザは全てのアカウントに対して情報を変更できる。また -o オプションを用いて GECOS 欄の未定義部分を変更できるのもスーパーユーザだけである。
各フィールドに書く内容に関する制限は、コントロール文字・コンマ・コロン・等号を含んでいてはならない、ということのみである。 other 欄に対してはこの制限はないので、他のアプリケーションが用いるアカウンティング情報の記録に利用される。
いずれのオプションも指定されないと chfn は対話的に動作する。全ての欄に対して各々現在の設定値を表示し、新しい値の入力を促す。新しい値を設定する場合はそれを入力し、 現在の値を使うなら空行のままリターンキーを押せばよい。現在の値は [ ] 記号の間に表示される。オプションを指定しなかった場合、 chfn は現在のユーザアカウントに対して動作する[8]。
ユーザ情報は/etc/passwd
中に記載される?(RHEL5.8では反映されず空のままだった)。
NISを使用している場合、chsh
の代わりにypchfn
(→NISユーザ情報閲覧・編集コマンド参照)を使用する。
【書式】 chfn オプション ユーザ名 【例】 [user@server ~]$ chfn
-f フルネーム
-r 部屋番号
-w 職場の電話番号
-h 自宅の電話番号
-o その他
現在登録中のユーザは/etc/passwd
ファイルに記載されている。このファイルの編集は/usr/sbin/vipw
コマンドで行う。
ユーザの有効期限などは/etc/shadow
ファイルに記載されている。このファイルの編集は/usr/sbin/vipw -s
コマンドで行う。一般的な記載項目は以下の通り。
【書式】 ユーザ名:符号化されたパスワード:最終更新日:パスワード変更の最小間隔:パスワード有効日数: 変更メッセージ表示日数:アカウント無効化までの日数:アカウント有効期限:無効化されているかどうか? 【例】 user:$1$cHw$vNafahRJuXbfxNyVr6t.VA./U50:14797:0:99999:7::14798:
chage
はパスワードを最後に更新してから、次に変更しなければならない期日までの日数を変更する。chage コマンドを使えるのは root ユーザのみに限られている。ただし一般ユーザも -l オプションを指定すればこのコマンドを利用でき、自分のパスワードまたはアカウントがいつ切れるかを知ることができる。
【書式】設定変更 chage [-m mindays] [-M maxdays] [-d lastday] [-I inactive] [-E expiredate] [-W warndays] user 【書式】情報確認 chage -l user
【例】
$ chage -l user
最終パスワード変更日 : 3月 23, 2018
パスワード期限: : なし
パスワード無効化中 : なし
アカウント期限切れ : 3月 31, 2022
パスワードが変更できるまでの最短日数 : 0
パスワードを変更しなくてよい最長日数 : 99999
パスワード期限が切れる前に警告される日数 : 7
コマンド | 内容 | 書式と例 |
---|---|---|
groupadd | グループ作成 |
【書式】 groupadd オプション グループ名
【例】newgroupグループを作成 shell> groupadd newgroup ※パスが通っていない場合、フルパスで /usr/sbin/groupadd とコマンド指定を行う。 |
groupmod | グループ情報編集 | 【書式】 groupmod グループ名 【例】newgroupグループを編集 shell> groupmod newgroup ※パスが通っていない場合、フルパスで /usr/sbin/groupmod とコマンド指定を行う。 |
groupdel | グループ削除 | 【書式】 groupdel グループ名 【例】newgroupグループを削除 shell> groupdel newgroup |
groups | ユーザの所属グループ取得 | 【書式】 groups ユーザ名 【例】ユーザ「root」が所属するグループ一覧 shell> groups root root : root bin daemon sys adm disk wheel ※グループ情報は /etc/group ファイルに記載されている。 |
gpasswd | 所属ユーザの編集 | 【書式】ユーザ追加 gpasswd -a ユーザ名 グループ名 【例】rootグループにユーザwashiを追加 shell> gpasswd -a washi root 【書式】ユーザ削除 gpasswd -d ユーザ名 グループ名 【例】rootグループからユーザwashiを削除 shell> gpasswd -d washi root |
なお、複数のグループに所属するユーザがコマンドを実行する場合、特別な変更を行わない限りプライマリグループのメンバーとしてコマンドを実行することになる。
プライマリグループ以外の権限を必要とする処理を実行する場合、パーミッションの設定によりアクセスできない可能性がある。その場合、newgrp
コマンドで一時的に所属グループを変更する必要がある。このコマンドは現在ログイン中ユーザのプライマリグループを一時的に変更する。恒久的に変更するにはusermod -g グループ名 ユーザ名
コマンドを用いる。
【書式】
newgrp グループ名
w
コマンドはどのユーザがログインしていて、その各ユーザが何をしているのかを表示する。また現在時刻、システム稼働時間、ログインしているユーザの数、ロードアベレージ(直近1、5、15分の平均)も表示される。
【書式】 w オプション ユーザ名1 ユーザ名2...
【例】 $ w 11:15 up 2:20, 2 users, load averages: 2.19 2.22 2.23 ↑ ↑ ↑ ↑ ↑ ↑ (1) (2) (3) (4) (5) (6) (1)現在時刻 (2)稼働時間 (3)ログインユーザ数 (4)過去1分のload average (5)過去5分のload average (6)過去15分のload average USER TTY FROM LOGIN@ IDLE WHAT user console - 8:56 2:19 - user p1 - 8:56 - w ↑ ↑ ↑ ↑ ↑ ↑ (1) (2) (3) (4) (5) (6) (1)ユーザ名 (2)端末 (3)ログイン元 (4)ログイン時刻 (5)? (6)実行しているコマンド
なお、接続が強制切断されログイン状態が残ってしまった場合の対処方法は強制ログアウト - リモートマシンへのセキュアな接続(ssh)を参照のこと。
su
コマンドで、一時的に別のユーザになって操作を行うことができる。管理者権限の必要な操作を行う際などに用いる。
su ユーザ名 オプション
-, -l, --login
/usr/sbin
や/sbin
配下にあるコマンドはパスが通っていないのでフルパスで指定する必要が生じる(CentOS、RHELのifconfig
、chkconfig
など)。
ユーザ名を指定しない(rootになる)場合は現在ログインしているユーザのパスワード、その他のユーザになる場合はなろうとしているユーザのパスワードが要求される。
/etc/login.defs
で規定されているとのこと[21]。
# # Min/max values for automatic uid selection in useradd # useraddで自動的に選択されるuidの最大値・最小値 # UID_MIN 500 # uidの最小値 UID_MAX 60000 # uidの最大値 # # Min/max values for automatic gid selection in groupadd # groupaddで自動的に選択されるuidの最大値・最小値 # GID_MIN 500 # gidの最小値 GID_MAX 60000 # gidの最大値
RHEL/CentOSでユーザ情報をまるごと他のサーバに移すには、以下のファイル群を新サーバにコピーする[22]。
/etc/passwd
(ユーザ名、ホームディレクトリなどの情報)/etc/shadow
(ユーザ名、暗号化されたパスワードなど)/etc/group
(グループ名、所属ユーザなどの情報)/etc/gshadow
(グループ名、暗号化されたグループパスワードなど)ユーザ・グループ単位で移動するには該当ユーザ・グループ行のみを新サーバの該当ファイルに追記。
/etc/pam.d/sshd
の編集account required pam_access.so
/etc/ssh/sshd_config
の編集UsePAM yes
/etc/security/access.conf
の編集コロン(:)で区切られた3つの項目を記述する。
【書式】 許可禁止 : 対象 : 接続元
+
」を記せば許可、「-
」を記せば禁止。
ALL
」を指定すると全てのユーザが対象になる。値を括弧で囲むとグループ名での指定となる。
.
)を記す。IPアドレスの前方一部を記すと前方一致で判定される。IPアドレス/ネットマスク の形式で指定することもできる。ホスト名、ドメイン名での指定も可能。LOCAL
はlocalhost、ALLは全てを意味する。「EXCEPT
」を続けて記し、例外(除外対象)を指定することもできる。
表示言語が日本語の設定でユーザを作成すると、ユーザホームディレクトリ配下に「デスクトップ」「ドキュメント」「ダウンロード」など日本語でフォルダが作成される。GUI(Nautilus)で操作する場合はいいが、端末で操作する場合はフォルダ名が英数字であった方が操作しやすい(日本語入力のON/OFFを切り替える必要がないので)。一旦作成された日本語フォルダ名を「Desktop」「Documents」「Download」など英数字に変更するには以下のコマンドを実行し、表示されたウインドウ右下「Update names」ボタンをクリックすればいい[27]。
$LANG=C xdg-user-dirs-gtk-update
ただこのままだと、日本語に戻そうとするダイアログが出るので、[システム]メニュー [設定]-[ユーザ向け]-[セッション]を選択して、[セッション]ダイアログボックスで[User folders update]の「有効」列チェックボックスオフにしておけばいい[27]。
man useradd, man userdel
)man rpc.yppasswdd