本文方法也适用于其它的linux 。
我使用的是manjaro ,属于Arch linux 家族。为了配置samba,增加一个用户user1。
[me@manjaro ~]$ sudo useradd user1
但是之后发现/home下面并没有建立对应的主目录,例如 /home/user1 。
查找原因,原来是没有加上参数 -m :
[me@manjaro ~]$ sudo useradd -m user1
解决办法:
网上的方法,要么是手工建立目录,指定属性;再从 /etc/skel/下复制文件 。 要么是重新建立一个用户。但是我找到一个简单的官方解决方法:
[me@manjaro ~]$ sudo mkhomedir_helper user1
就是利用了mkhomedir_helper 命令。它为已经存在的用户建立相应的主目录,并且自动复制一些文件如.bashrc、.profiles ...
-rwxr-xr-x 1 root root 22704 2月 2 17:21 /usr/sbin/mkhomedir_helper
参考:
https://linuxhandbook.com/create-home-directory-existing-user/
2023-04-13补充:
上述 mkhomedir_helper 命令执行之后,ctrl-alt-F2 (键盘第一排F1....F8,都可以试。Manjaro F7 是切换到桌面)打开一个 终端界面:
以 user1 用户登录时,可以登录;但出现错误提示;
--user1:user1:Change directory failed:No such file or directory.Logining in
with home="/"
[user1@manjaro /]$
这里,查看,/etc/passwd文件:
[user1@manjaro /]$ sudo cat /etc/passwd
...
user1:x:1001:1001::user1:/bin/bash
...
对应user1一行应该是:
user1:x:1001:1001::/home/user1:/bin/bash
mkhomedir_helpe 命令,仅仅是创建了用户目录,却没有修改/etc/passwd 文件。
解决方法就是,更改用户user1的家目录位置信息:
sudo usermod user1 --home /home/user1
再检查passwd 文件内容:
user1:x:1001:1001::/home/user1:/bin/bash
用户user1 也能正常登录了。