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
来检查是否创建了新用户。它已创建,但主目录无效。
如果您遇到与我描述的情况相同的情况,解决方法如下:
- 使用超级用户帐户登录Linux服务器,可以使用
sudo
- 使用
cd
到要放置新用户目录的目录。在我的情况下,目录是/home/ssd2
- 用于
mkdir
为新用户创建目录,就我而言,它是mkdir yuwen
- 用于
sudo chown yuwen:yuwen /home/ssd2/yuwen
让您的新用户拥有所有权。 - 使用
sudo chmod -R yuwen /home/ssd2/yuwen
、授权
然后您可以使用su yuwen
, 之后使用cd ~
,pwd
来查看您是否位于正确的目录中。