我正在尝试从 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 控制中心创建用户时,不会出现这些问题。但我希望能够使用命令行,因为我有几十个用户要创建。
答案1
首先注意最好使用 adduser 而不是 useradd。
- adduser 和 useradd 有什么区别?
- https://unix.stackexchange.com/questions/121071/what-does-adduser-do-that-useradd-doesnt
现在回到你的命令:
您应该按照以下方式运行该命令:
sudo useradd -m -c "Samwise the Brave" sam -s /bin/bash
man useradd
-s, --shell SHELL
The name of the user's login shell. The default is to leave this
field blank, which causes the system to select the default login
shell specified by the SHELL variable in /etc/default/useradd, or
an empty string by default.
-m, --create-home
Create the user's home directory if it does not exist. The files
and directories contained in the skeleton directory (which can be
defined with the -k option) will be copied to the home directory.
By default, if this option is not specified and CREATE_HOME is not
enabled, no home directories are created.
因此,您错过了使用-s
添加您的登录 shell 和-m
创建您的主页的机会。
如果您想同时添加多个用户,最好使用命令newusers
。它将简化您的任务。
man newusers
DESCRIPTION
The newusers command reads a file of user name and clear-text password
pairs and uses this information to update a group of existing users or
to create new users. Each line is in the same format as the standard
password file (see passwd(5)) with the exceptions explained below:
pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell
这里有一些关于newusers
命令的教程:
答案2
创建用户
创建用户主目录
定义登录 shell
useradd -m -d /home/username username -s /bin/bash
删除用户
删除用户主目录
userdel -r username
答案3
虽然你缺少标志,而其他答案不一定是错的,但考虑运行添加用户如果您希望将来它更加全面。它是 useradd 的更漂亮版本。也就是说,与 useradd 不同,它会默认创建一个主目录。还请注意,当它要求输入大量内容时,它会将这些信息内联存储在 /etc/passwd 文件中,您无需填写任何内容。
答案4
您在 useradd 命令中缺少标志。'-m' 用于创建用户目录,'-s /bin/bash' 用于添加 bash shell。默认是不创建用户目录并分配默认 shell。我测试时系统也做了同样的事情,所以看起来 ubuntu 14.04 使用空白作为默认 shell。您无法登录,因为您没有 shell。
在终端中为现有用户创建默认主目录(问题 335961,第 3 个答案)
-s, --shell SHELL
The name of the user´s login shell. The default is to leave this
field blank, which causes the system to select the default login
shell.