为什么创建新用户时没有创建主目录?

为什么创建新用户时没有创建主目录?

useradd我在 Ubuntu 服务器虚拟机上使用命令创建了一个新用户(testuser) 。我想为用户创建一个主目录,并赋予他们 root 权限。

但是,当我以新用户身份登录时,它抱怨没有主目录。我究竟做错了什么?

答案1

最后我自己找到了如何做到这一点:

   useradd -m -d /home/testuser/ -s /bin/bash -G sudo testuser

-m如果主目录不存在,则创建该目录。
-d覆盖默认的主目录位置。 -s设置用户的登录 shell。
-G需要用户应属于的以逗号分隔的组列表。

man useradd了解详情。

答案2

编者注:这个答案在技术上对于所提出的问题是正确的,但评论中的讨论澄清了OP试图useradd在脚本中使用而不是直接作为shell命令使用,并且adduser不太适合该上下文。

以交互方式创建用户时,通常建议使用adduser而不是useradd.

useradd 是一个用于添加用户的低级实用程序。在 Debian 上,
管理员通常应该使用 adduser(8)

adduser是一个更友好的前端useradd,默认情况下会执行诸如创建用户目录之类的操作。当您仅使用用户名作为参数运行它时,系统将提示您提供其他信息,例如密码:

$ sudo adduser testuser
Adding user `testuser' ...
Adding new group `testuser' (1002) ...
Adding new user `testuser' (1002) with group `testuser' ...
Creating home directory `/home/testuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for testuser
Enter the new value, or press ENTER for the default
    Full Name []: 
    Room Number []: 
    Work Phone []: 
    Home Phone []: 
    Other []: 
Is the information correct? [Y/n] 

一般来说,建议使用 useadduser而不是,useradd因为这也会自动设置所需的组。正如中所解释的man adduser

adduser 和 addgroup 根据命令行选项和 /etc/adduser.conf 中的配置信息将用户和组添加到系统中。它们是 useradd、groupadd 和 usermod 程序等低级工具的更友好的前端,默认情况下选择符合 Debian 策略的 UID 和 GID 值、创建具有骨架配置的主目录、运行自定义脚本和其他功能。

答案3

useradd -m LOGIN

创建用户的主目录

答案4

当我使用命令时,它发生在我身上:

sudo useradd -d /home/ssd2/yuwen yuwen

在我输入该命令后,没有这样的文件(我使用cd&检查ls),当我使用 时su yuwen,它成功更改为新用户,但主目录仍然不变(不像ssd2/yuwen它应该的那样)。

我还使用命令cat /etc/passwd来检查是否创建了新用户。它已创建,但主目录无效。

如果您遇到与我描述的情况相同的情况,解决方法如下:

  1. 使用超级用户帐户登录Linux服务器,可以使用sudo
  2. 使用cd到要放置新用户目录的目录。在我的情况下,目录是/home/ssd2
  3. 用于mkdir为新用户创建目录,就我而言,它是mkdir yuwen
  4. 用于sudo chown yuwen:yuwen /home/ssd2/yuwen让您的新用户拥有所有权。
  5. 使用sudo chmod -R yuwen /home/ssd2/yuwen、授权

然后您可以使用su yuwen, 之后使用cd ~,pwd来查看您是否位于正确的目录中。

相关内容