9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Linuxのユーザ作成(useradd)、削除(userdel)と、削除されたユーザが所有していたファイルについて

Last updated at Posted at 2017-07-02

あまり機会がないので、たまにユーザ作成したくなるとコマンドを忘れている。

ユーザ作成

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にしておく。そして、実行に必要なファイルの所有者は、作成した専用ユーザにする。

こうすることで、重要なファイルの所有者が、意図しない一般ユーザに変わってしまうトラブルをある程度防ぐことができる。

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?