あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

Linux のユーザにあとからホームディレクトリを設定する方法

調べてみると書いてなくて、皆「追加時に設定するやで!」しか言ってない。もしくは「あとから別ディレクトリ指定するやで!」。そうじゃない、そうじゃないんだ、俺はただ「usetadd -m USERNAME」した時のディレクトリ追加動作をしてほしいだけなんだ……。

結論

そんな動作はねえ。

んじゃどうする

僕は結局こうして逃げました。

[root@localhost ~]# userdel USERNAME
[root@localhost ~]# groupadd -g XX USERGROUP
[root@localhost ~]# useradd -u YY -g USERGROUP -m USERNAME
[root@localhost ~]# passwd USERNAME

一度ログインネーム(と一緒にグループ)だけ削除して、その後再度 useradd して復旧させる、なおかつ追加時に -m で /home/USERNAME/ ホームディレクトリを作成する。
事前に UID と GID を控えておく必要がありますが、これで一度行方不明になった ID たちも自動的に補完されるので、ID 変えて回る必要もないです。念のため作業前には、該当のユーザで実行してるサービスは止めておきましょう。

えっけどさ

/etc/skel 以下をコピーしたディレクトリ作って、「usermod -d /home/USERNAME USERNAMEの」すればよくない?みたいな疑問もあるでしょうし、多分それでも解決すると思います。けど useradd -m の時の動作って skel コピーだけなんすかね?みたいな疑惑があるので、このような仕儀と致しとうござりまする。

全て「おうこのサーバに FTPSSH でログインしたいけどできねえぞなんとかしろ」とか管理してないのに無茶苦茶言い出すクライアントが悪いんや。作業費くれないならこんな対応で十分なんだよ。

この手法が欲しくなると想定されるパターン

yum install httpd とかしちゃって「やべえー!/sbin/nologin でシェル固定してユーザ追加されたうわああああ!」みたいな時。