useradd user2 でユーザーを作ってログインしたら、ホームディレクトリがないって言われた
作り方を間違えたんかな
【疑問】useradd したのにホームディレクトリがない。useradd・usermod・userdel と groupadd・groupmod・groupdel、/etc/skel【LPICレベル1】
前提のおさらい。ユーザーは /etc/passwd(7欄)、パスワードは /etc/shadow、グループは /etc/group に1行ずつ書かれてる。useradd などのコマンドは、この3つ(と /etc/gshadow)を書き換える道具
>>1
Debian の useradd は、-m を付けへんとホームディレクトリを作らない。/etc/login.defs に CREATE_HOME の設定がないから
Red Hat 系の login.defs は CREATE_HOME yes になってて、-m なしでも作られる
>>3
ほな useradd -m user2 で作り直せばええんか
>>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
>>5useradd -D に -s などを付けたら、表示やなくて既定値の書き換えになるから気を付けて
>>3
-m で作ったホームには最初から何か入ってるん?
>>7
/etc/skel の中身がコピーされる。試したマシンの /etc/skel は .bash_logout、.bashrc、.profile の3つ
/etc/skel を変えても、すでにいるユーザーのホームは変わらない。これから作るユーザーだけ
別のひな形を使うなら -k ディレクトリ(-m と一緒に使う)
>>8
Debian の login.defs は HOME_MODE 0700 やから、作られるホームは drwx------ になる
useradd のほかのよく使うオプションは?
>>10
-u UID、-g 最初のグループ(プライマリグループ)、-G 追加のグループ(カンマ区切り)、-c コメント、-d ホームの場所、-e アカウントの期限(YYYY-MM-DD)、-r システムアカウント
USERGROUPS_ENAB yes のシステムでは、-g を指定しないとユーザーと同じ名前のグループも作られる
>>11
-r のシステムアカウントは、UID が UID_MIN より小さい範囲(SYS_UID_MIN〜SYS_UID_MAX)から選ばれて、パスワードの期限の情報も入らない。デーモン用やな
>>2
作ったらパスワードも要るやんな
>>13
root が passwd user2 で設定する。-p は暗号化した値をそのまま書く指定やから、平文を渡したらあかん
最初のログインで変えさせたいなら passwd -e user2 か chage -d 0 user2(最後に変えた日を0にする)
>>14
passwd -l でロック、-u で解除、-S で状態。-S の2欄目は L(ロック)・NP(パスワードなし)・P(使える)
>>15
passwd -l はパスワードの先頭に ! を付けるだけで、SSH の鍵などではまだ入れることがある。ログインそのものを止めるなら、シェルを /usr/sbin/nologin にするかアカウントの期限を切る
既存のユーザーを docker とか devs のグループに追加したい
>>17usermod -aG devs user2
-a を忘れて usermod -G devs user2 にすると、追加のグループが devs だけに置き換わって、ほかのグループから外れる。-a は必ず -G と一緒
>>18
追加したのに id で出てこない
>>19
グループの変更は、次にログインしたときから効く。今のシェルは古いままやから、ログインし直すか newgrp devsid user2 や groups user2 で /etc/group の内容は確かめられる
>>11
usermod でほかに変えられるのは?
>>21
-l で名前、-u で UID、-s でシェル、-c でコメント、-d と -m でホームの移動、-L・-U でロックと解除、-e で期限
名前を変えてもホームの場所やグループの名前は自動では変わらんから、-d -m と groupmod -n を別に使う
>>2
消すときは?
>>23userdel user2 は /etc/passwd などから消すだけでホームは残る。userdel -r user2 でホームとメールスプールも消える
ほかの場所にあるそのユーザーのファイルは残るから、find / -uid 1001 みたいに UID で探す
グループの操作は?
>>25
groupadd で作る(-g で GID、-r でシステム用)、groupmod で変える(-n で名前、-g で GID)、groupdel で消す
誰かのプライマリグループになってるグループは groupdel できない。先にユーザーのほうを片付ける
>>26
UID は UID_MIN 1000 から UID_MAX 60000 までやから、普通のユーザーは
人分の番号が使える
>>1
Debian で adduser ってのもあったけど
>>28
adduser は Debian の対話式のラッパーで、ホームも作るしパスワードも聞いてくる。LPIC で問われるのは、どのディストリビューションにもある useradd のほう
>>3
-m でホーム、-s でシェル、-G は usermod なら必ず -a と一緒、消すときは -r。/etc/skel はこれから作る人だけ。覚えた
管理人のひとこと
- useradd:-m でホーム作成(Debian は CREATE_HOME がないので -m が要る。Red Hat 系は既定で作る)、-s シェル(Debian の既定は /bin/sh)、-u UID、-g プライマリグループ、-G 追加グループ、-c コメント、-d ホーム、-e 期限、-r システムアカウント、-k ひな形。既定値は
useradd -D(/etc/default/useradd)。 - -m で作ると /etc/skel の中身がホームにコピーされる。/etc/skel を変えても既存ユーザーには影響しない。
- パスワードは
passwd ユーザー名。-l・-u でロックと解除、-S で状態(L・NP・P)、-e やchage -d 0で次のログインで変更させる。 - usermod:-aG で追加グループに加える(-a なしの -G は置き換え)、-l 名前、-s シェル、-d -m ホームの移動、-L・-U ロック。グループの変更は次のログインから効く。
- userdel -r でホームとメールスプールも削除。groupadd・groupmod(-n 名前、-g GID)・groupdel。プライマリグループになっているグループは消せない。