通过命令useradd
进行了用户的创建,并且同时赋值了密码:
[root@instance-jgzzg4xl home]# useradd -g developer -u 1020 -p 985211_rev songj
[root@instance-jgzzg4xl home]# ll
total 8
drwx------ 4 jiangms jiangms 4096 Aug 19 14:45 jiangms
drwx------ 2 songj developer 4096 Oct 31 11:26 songj
尝试登录:
明显这并不是密码输入错误的问题,而且在很多书中或者科普文章中并不会跟大家讲的问题,接下来我们来仔细了解下关于用户新增useradd
的命令参数。
useradd
常用命令参数基本语法:
useradd [选项] 用户名
常用选项
-c
:为新用户添加注释信息,通常用户填写用户的全名或其他描述-d
:指定用户的家目录。如果不指定,系统会使用默认的家目录路径,通过是/home/user
。-m
:自动创建用户的家目录,如果家目录不存在的话-s
:指定用户登录后使用的shell-g
:只用用户的主组。如果组不存在,useradd
会尝试创建这个组-G
:指定用户所属的一个或多个附加组-u
:指定用户的UID(用户id),如果不指定系统会自动分配一个未被使用的UID-o
:允许为新用户指定一个已经存在的UID,及时它与另一个用户的UID相同。-r
:创建一个系统用户上述参数中提请大家注意的有如下几点:
-u
参数如果不指定,默认从1000开始,系统用户的UID为1-999范围区间-r
参数在创建系统用户时是必须指定的参数,即第1点中提到的uid在1-499范围区间的用户;若创建普通用户,则可不加该参数-p
参数指定用户登录的密码,但是该密码如果是明文设置,则会失效。这也是我在文首遇到的无法登录的情况。解决办法不止一种,这里用一种相对较简单的方式来处理:
passwd songj
结果:
Last failed login: Thu Oct 31 11:28:25 CST 2024 from 222.**.**.** on ssh:notty
There was 1 failed login attempt since the last successful login.
[songj@instance-jgzzg4xl ~]$
这样一来,就解决了新建用户无法报错的问题了。
Creating mailbox file: File exists
当我们新建了一个用户发现有问题,想要删除该用户并再次新增相同的用户时:
[root@instance-jgzzg4xl home]# userdel luzs
[root@instance-jgzzg4xl home]# ll
total 16
drwx------ 2 huar huar 4096 Oct 31 13:25 huar
drwx------ 4 jiangms jiangms 4096 Aug 19 14:45 jiangms
drwx------ 2 488 1003 4096 Oct 31 13:25 luzs
drwx------ 4 songj developer 4096 Oct 31 13:24 songj
[root@instance-jgzzg4xl home]# useradd luzs
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
我们可以看到,在我们删除后,在/home/
文件夹下依然存在/luzs/
主目录,猜测的原因是因为在删除的时候未把相关信息删除干净。那么我们把主目录给删除掉看看效果:
[root@instance-jgzzg4xl home]# rm -rf /home/luzs/
[root@instance-jgzzg4xl home]# ll
total 12
drwx------ 2 huar huar 4096 Oct 31 13:25 huar
drwx------ 4 jiangms jiangms 4096 Aug 19 14:45 jiangms
drwx------ 4 songj developer 4096 Oct 31 13:24 songj
[root@instance-jgzzg4xl home]# useradd luzs
useradd: user 'luzs' already exists
我们发现同样出现报错,遇事不决,还是得从基础知识点入手。
userdel
常用命令参数基础语法:
userdel [选项] 用户名
常用选项
-r
:删除用户账号及其家目录和邮件槽-f
:强制删除用户(当用户已登录Linux系统时,此选项仍旧生效)-R
:后跟一个目录名(CHROOT_DIR),表示在指定目录中执行userdel操作,并且使用指定目录下的配置文件-P
:后跟一个目录名(PREFIX_DIR),表示在指定目录中执行userdel操作,并且使用指定目录下的配置文件,但该选项不会进行chroot操作,旨在为交叉编译目标准备环境-Z
:删除与用户相关的SELinux用户映射-k
:保留家目录,家目录留作进行手工处理而新建用户后,其主要的信息会保留在以下文件中:
/etc/group
:用户组信息。/etc/login.defs
:为 shadow 密码套件提供的配置信息。/etc/passwd
:用户账户信息。/etc/shadow
:用户账户的安全信息,包含密码的散列值及账户有效期等,只能由 root 账户读取。/etc/subgid
:存储每个用户辅助组ID信息。/etc/subuid
:存储每个用户的辅助用户ID信息。当我们在删除用户没有删除干净的情况下,我们可以使用
userdel -r luzs
强制删除,这种情况在出现错误:useradd: user 'luzs' already exists
时比较好用,如果报错:Creating mailbox file: File exists
,我们就将/var/spool/mail/luzs
文件给删掉,这样的两套组合拳下来,就可以将问题解决。当然了,最好的解决方式,如果确定用户不用了,要使用userdel -r luzs -k
保留用户的主目录,并删除用户的其他相关信息为最佳选择。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。