読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】useradd したのにホームディレクトリがない。useradd・usermod・userdel と groupadd・groupmod・groupdel、/etc/skel【LPICレベル1】

30レスカテゴリ:Linux
1: 名無しさん

useradd user2 でユーザーを作ってログインしたら、ホームディレクトリがないって言われた
作り方を間違えたんかな

2: 名無しさん

前提のおさらい。ユーザーは /etc/passwd(7欄)、パスワードは /etc/shadow、グループは /etc/group に1行ずつ書かれてる。useradd などのコマンドは、この3つ(と /etc/gshadow)を書き換える道具

3: 名無しさん

>>1
Debian の useradd は、-m を付けへんとホームディレクトリを作らない。/etc/login.defs に CREATE_HOME の設定がないから
Red Hat 系の login.defs は CREATE_HOME yes になってて、-m なしでも作られる

4: 名無しさん

>>3
ほな useradd -m user2 で作り直せばええんか

5: 名無しさん

>>4
そう。ついでにシェルも指定しとくとええ。Debian の /etc/default/useradd は SHELL=/bin/sh やから、bash を使うなら useradd -m -s /bin/bash user2
既定値は useradd -D で表示できる。試したマシンでは GROUP=100、HOME=/home、INACTIVE=-1、EXPIRE=(空)、SHELL=/bin/sh、SKEL=/etc/skel、CREATE_MAIL_SPOOL=no

6: 名無しさん

>>5
useradd -D に -s などを付けたら、表示やなくて既定値の書き換えになるから気を付けて

7: 名無しさん

>>3
-m で作ったホームには最初から何か入ってるん?

8: 名無しさん

>>7
/etc/skel の中身がコピーされる。試したマシンの /etc/skel は .bash_logout、.bashrc、.profile の3つ
/etc/skel を変えても、すでにいるユーザーのホームは変わらない。これから作るユーザーだけ
別のひな形を使うなら -k ディレクトリ(-m と一緒に使う)

9: 名無しさん

>>8
Debian の login.defs は HOME_MODE 0700 やから、作られるホームは drwx------ になる

10: 名無しさん

useradd のほかのよく使うオプションは?

11: 名無しさん

>>10
-u UID、-g 最初のグループ(プライマリグループ)、-G 追加のグループ(カンマ区切り)、-c コメント、-d ホームの場所、-e アカウントの期限(YYYY-MM-DD)、-r システムアカウント
USERGROUPS_ENAB yes のシステムでは、-g を指定しないとユーザーと同じ名前のグループも作られる

12: 名無しさん

>>11
-r のシステムアカウントは、UID が UID_MIN より小さい範囲(SYS_UID_MIN〜SYS_UID_MAX)から選ばれて、パスワードの期限の情報も入らない。デーモン用やな

13: 名無しさん

>>2
作ったらパスワードも要るやんな

14: 名無しさん

>>13
root が passwd user2 で設定する。-p は暗号化した値をそのまま書く指定やから、平文を渡したらあかん
最初のログインで変えさせたいなら passwd -e user2 か chage -d 0 user2(最後に変えた日を0にする)

15: 名無しさん

>>14
passwd -l でロック、-u で解除、-S で状態。-S の2欄目は L(ロック)・NP(パスワードなし)・P(使える)

16: 名無しさん

>>15
passwd -l はパスワードの先頭に ! を付けるだけで、SSH の鍵などではまだ入れることがある。ログインそのものを止めるなら、シェルを /usr/sbin/nologin にするかアカウントの期限を切る

17: 名無しさん

既存のユーザーを docker とか devs のグループに追加したい

18: 名無しさん

>>17
usermod -aG devs user2
-a を忘れて usermod -G devs user2 にすると、追加のグループが devs だけに置き換わって、ほかのグループから外れる。-a は必ず -G と一緒

19: 名無しさん

>>18
追加したのに id で出てこない

20: 名無しさん

>>19
グループの変更は、次にログインしたときから効く。今のシェルは古いままやから、ログインし直すか newgrp devs
id user2 や groups user2 で /etc/group の内容は確かめられる

21: 名無しさん

>>11
usermod でほかに変えられるのは?

22: 名無しさん

>>21
-l で名前、-u で UID、-s でシェル、-c でコメント、-d と -m でホームの移動、-L・-U でロックと解除、-e で期限
名前を変えてもホームの場所やグループの名前は自動では変わらんから、-d -m と groupmod -n を別に使う

23: 名無しさん

>>2
消すときは?

24: 名無しさん

>>23
userdel user2 は /etc/passwd などから消すだけでホームは残る。userdel -r user2 でホームとメールスプールも消える
ほかの場所にあるそのユーザーのファイルは残るから、find / -uid 1001 みたいに UID で探す

25: 名無しさん

グループの操作は?

26: 名無しさん

>>25
groupadd で作る(-g で GID、-r でシステム用)、groupmod で変える(-n で名前、-g で GID)、groupdel で消す
誰かのプライマリグループになってるグループは groupdel できない。先にユーザーのほうを片付ける

27: 名無しさん

>>26
UID は UID_MIN 1000 から UID_MAX 60000 までやから、普通のユーザーは

人分の番号が使える

28: 名無しさん

>>1
Debian で adduser ってのもあったけど

29: 名無しさん

>>28
adduser は Debian の対話式のラッパーで、ホームも作るしパスワードも聞いてくる。LPIC で問われるのは、どのディストリビューションにもある useradd のほう

30: 名無しさん

>>3
-m でホーム、-s でシェル、-G は usermod なら必ず -a と一緒、消すときは -r。/etc/skel はこれから作る人だけ。覚えた

管理人のひとこと