【WSL】wsl中ubuntu无法通过useradd添加用户

本文首发于 ❄️慕雪的寒舍

wsl中ubuntu无法通过useradd添加用户,应该使用adduser命令。

情况说明

在wsl2中的ubuntu22.04无法使用useradd添加用户,表现为执行命令后,只出现该用户和用户组,但/home目录下没有出现该用户的家目录文件夹,且无法使用su - 用户名成功切换到该用户上。

如下所示,我先从wsl子用户切换到root用户,然后执行useradd命令,发现用户创建没有完全成功。

bash 复制代码
wsl:~$ sudo su - 

root:~# useradd git
root:~# ls /home
wsl
root:~# sudo adduser git
adduser: The user `git' already exists.
root:~# userdel -r git
userdel: git mail spool (/var/mail/git) not found
userdel: git home directory (/home/git) not found
root:~# userdel -r git
userdel: user 'git' does not exist

原因

这是因为wsl2和传统的VMware类型虚拟机有一定区别,其不支持使用useradd直接添加用户,而是提供了adduser命令来处理。

准确来说是Ubuntu22.04不支持useradd,而是需要使用adduser。

bash 复制代码
sudo adduser <新的用户名>

使用这个命令则可以正常创建用户,如下所示我创建了一个用户名为git的用户。需要填写用户信息的部分直接回车跳过即可。

bash 复制代码
root:~# sudo adduser git
Adding user `git' ...
Adding new group `git' (1001) ...
Adding new user `git' (1001) with group `git' ...
Creating home directory `/home/git' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for git
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] y
root:~# ls /home
git  wsl

使用id命令可以查看新用户的用户组以及uid等相关信息。

bash 复制代码
root:~# id git
uid=1001(git) gid=1001(git) groups=1001(git)

注意,该新用户不在/etc/sudoers文件中,无法使用sudo命令。需要修改该文件,在如下位置之后添加一行

bash 复制代码
root ALL=(ALL:ALL) ALL
# 新增此行
用户名 ALL=(ALL:ALL) ALL

修改了之后,子用户才能执行sudo命令。

相关推荐
心灵宝贝16 分钟前
libopenssl-1_0_0-devel-1.0.2p RPM 包安装教程(openSUSE/SLES x86_64)
linux·服务器·数据库
BullSmall1 小时前
linux zgrep命令介绍
linux·运维
emma羊羊2 小时前
【文件读写】图片木马
linux·运维·服务器·网络安全·靶场
wdfk_prog2 小时前
闹钟定时器(Alarm Timer)初始化:构建可挂起的定时器基础框架
java·linux·数据库
你疯了抱抱我3 小时前
【SSH】同一局域网下windows使用Xshell SSH连接另一台 ubuntu 22.04 电脑
运维·ubuntu·ssh
2301_818411553 小时前
Ubuntu之apt更新源
linux·运维·ubuntu
Damon小智4 小时前
玩转CodeX:CodeX安装教程(Windows+Linux+MacOS)
linux·windows·macos·ai·ai编程·codex·gpt-5
CS Beginner4 小时前
【Linux】Mysql的基本文件组成和配置
linux·运维·mysql
爱奥尼欧4 小时前
【Linux】网络部分——Socket编程 UDP实现网络云服务器与本地虚拟机的基本通信
linux·服务器·网络
Ching·4 小时前
RK3568入门之VScode远程连接开发板,直接开发板上面编程和实验
linux·ide·vscode·编辑器·rk3568