あまり機会がないので、たまにユーザ作成したくなるとコマンドを忘れている。
ユーザ作成
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にしておく。そして、実行に必要なファイルの所有者は、作成した専用ユーザにする。
こうすることで、重要なファイルの所有者が、意図しない一般ユーザに変わってしまうトラブルをある程度防ぐことができる。