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

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

我正在尝试从 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 定义默认 shell:

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

有什么线索可以解释是什么原因导致这些问题吗?

这里需要注意的是,当我使用 Unity 控制中心创建用户时,不会出现这些问题。但我希望能够使用命令行,因为我有几十个用户要创建。

答案1

首先注意最好使用 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命令的教程:

答案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 个答案)

来自 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.

如何将所有用户的默认 shell 更改为 bash?问题 335961

相关内容