Ubuntu 14.04:从命令行创建的新用户缺​​少功能


17

我正在尝试从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个问题:

  1. 我无法使用sam用户登录Ubuntu。每当我登录时,我都会被发送回登录屏幕。

  2. 当我查看/etc/passwd文件时,可以看到没有为用户sam定义默认外壳程序:

    cat /etc/passwd | grep sam    
    sam:x:1003:1003:Samwise the Brave:/home/sam:
    
  3. Sam的主文件夹未创建,即/home/sam不存在。

关于什么可能导致所有这些问题的任何线索?

我应该在这里注意,当我使用Unity Control Center创建用户时,不会发生这些问题。但是我希望能够使用命令行,因为我要创建许多用户。

Answers:


29

首先请注意,最好使用adduser而不是useradd。

现在回到您的命令:

您应该以以下方式运行命令:

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命令的教程:


为什么会出现“未知选项m”?我在运行14.04的AWS Ubuntu实例上。
Donato

2

创建用户

创建用户的主目录

定义登录外壳

useradd -m -d /home/username username -s /bin/bash

删除用户

删除用户的主目录

userdel -r username

1

当您丢失标志并且其他答案不一定是错误的时,如果您希望将来更全面地运行adduser,请考虑运行它。这是useradd的漂亮版本。也就是说,默认情况下,它将与useradd一起创建主目录。还要注意,当它要求大量东西时,它将内联存储在/ etc / passwd文件中,而您不必填写其中的任何内容。


1

感谢大家。通过您的回答,我已经可以使用以下命令行解决问题。

sudo useradd -c "Samwise the Brave" -m -s /bin/bash sam
echo -e "hello-1234\nhello-1234" | passwd sam

设置了密码,passwd因此它已经被加密(否则,“ / hello-1234”在/ etc / passwd中将显示为未加密)。


0

您在useradd命令中缺少标志。“ -m”创建用户目录,“-s / bin / bash”添加bash shell。默认设置是不创建用户目录并分配默认外壳程序。我的系统在测试时做了相同的事情,因此ubuntu 14.04看起来使用blank作为默认外壳。您没有外壳,因此无法登录。

在终端中为现有用户创建默认主目录(问题335961,第三个答案)

从Ubuntu手册页获取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.

您如何将所有用户的默认外壳更改为bash?第335961节

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.