あまり機会がないので、たまにユーザ作成したくなるとコマンドを忘れている。
ユーザ作成
useradd
コマンドを使う。同じ目的で使えるadduser
コマンドもあり、こちらは対話的に実行できる点が便利だ。(オプションをおぼえていなくても使いやすい)
今回は手元の環境がArch Linuxでadduser
コマンドが入っていなかったので、useradd
を使う。
# useradd -m username
-m
オプションによって、ユーザのホームディレクトリが作られる。ホームディレクトリのパスは、デフォルト設定で/home/username
になるはずだ。
それ以外に下記の設定が行われる。
- ユーザ名と同じ名前のグループを作成し、所属させる
-
/etc/skel
以下に設定されたデフォルトの設定のコピー- 例えば、
~/.bash_profile
ファイルのコピー
- 例えば、
だいたいのユースケースでは上記のコマンドとオプションで足りると思うが、オプションを追加することで下記の制御も可能。
- ホームディレクトリの変更
- 所属させるグループの変更、追加
- デフォルトで使われるシェルの変更
- パスワードの変更
おまけ
デフォルトの設定を確認する。
useradd -D
ユーザ削除
userdel
コマンドを使う。
# userdel -r username
-r
オプションによって、そのユーザのホームディレクトリとホームディレクトリ内のファイル、メールスプールを削除する。
メールスプールの場所は、/etc/login.defs
のMAIL_DIR変数に設定されている。
-r
オプションを設定しても、このユーザが保持するすべてのファイルを削除するわけではない。あくまで、ホームディレクトリとメールスプールだけだ。
余談:削除されたユーザが所有する(していた)ファイルについて
Linuxのファイルのオーナーやグループはuid, gidで管理されているので、削除されたfooユーザがかつて所有していたファイルが、あとから作成したbarユーザの所有になってしまうことも起こりうる。
たとえば、uidが1000のfooユーザがいたとする。このfooユーザを削除した後で、同じuid(1000)をもつbarユーザを作成したとする。
こうすると、fooユーザがかつて所有していたファイルはbarユーザの所有とシステムによってみなされ、barユーザによって修正や削除などが可能になる。(そのファイルのパーミッション次第だが、通常所有者はなんでもできる)
このことから、uidの変更や使いまわし(削除したユーザのuidの再利用)は、なるべくすべきではない。
(手元のArch Linuxでは、useradd
コマンドによって割り振られるuidの範囲は1000~60000となっており、これだけあればたいていのケースで十分だろう。この情報は、/etc/login.defs
から得られる。)
また、ミドルウェアやアプリケーションは専用の実行ユーザを作成し(自動的に作成されるケースが多いが)、uidはuseradd
によって自動的には使われない500~999にしておく。そして、実行に必要なファイルの所有者は、作成した専用ユーザにする。
こうすることで、重要なファイルの所有者が、意図しない一般ユーザに変わってしまうトラブルをある程度防ぐことができる。