我正在尝试从 bash 命令行在 Ubuntu 14.04 LTS 中创建一个新用户。我使用以下命令:
sudo useradd -c "Samwise the Brave" sam
sudo passwd sam
Enter new UNIX password: hello-1234
Retype new UNIX password: hello-1234
passwd: password updated successfully
创建这个新用户后,我遇到了 3 个问题:
我无法使用用户 sam 登录 Ubuntu。每当我登录时,我都会被送回登录屏幕。
当我查看该
/etc/passwd
文件时,我可以看到没有为用户 sam 定义的默认 shell:cat /etc/passwd | grep sam sam:x:1003:1003:Samwise the Brave:/home/sam:
Sam 的主文件夹未创建,即
/home/sam
不存在。
关于什么可能导致所有这些问题的任何线索?
这里需要注意的是,当我使用 Unity Control Center 创建用户时,不会出现这些问题。但我希望能够使用命令行,因为我要创建许多用户。
首先注意最好使用 adduser 而不是 useradd。
现在回到你的命令:
您应该按以下方式运行命令:
man useradd
所以你想念用来
-s
添加你的登录外壳和-m
创建你的家。如果要同时添加多个用户,最好使用命令
newusers
。它会简化你的任务。man newusers
这里有一些关于
newusers
命令的教程:创建用户
创建用户的主目录
定义登录shell
删除用户
删除器用户的主目录
虽然您缺少标志并且其他答案不一定是错误的,但如果您希望将来更全面,请考虑运行adduser 。它是 useradd 的一个更漂亮的版本。也就是说,它会默认创建一个主目录,这与 useradd 不同。另请注意,当它要求大量内容时,它会将内联存储在 /etc/passwd 文件中,您不必填写任何内容。
感谢大家。根据您的回答,我已经能够使用以下命令行解决问题。
密码已设置
passwd
为已加密(否则“hello-1234”在 /etc/passwd 中将显示为未加密)。您在 useradd 命令中缺少标志。'-m' 创建用户目录,'-s /bin/bash' 添加 bash shell。默认是不创建用户目录并分配默认 shell。当我测试它时,我的系统做了同样的事情所以它看起来像 ubuntu 14.04 使用空白作为默认 shell。您无法登录,因为您没有 shell。
在终端中为现有用户创建默认主目录(问题 335961,第 3 个答案)
从 useradd 的 Ubuntu 联机帮助页
如何将所有用户的默认 shell 更改为 bash?问题 335961