Shell编程中关于用户操作报错`用户无法登录`

1 背景

通过命令useradd进行了用户的创建,并且同时赋值了密码:

arduino 复制代码
 [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

尝试登录:

自己检查了登录名,以及主机ip,又检查了密码输入是否错误,发现上述三者均没有问题,那么问题出在哪儿了呢?我们来回顾一下useradd的常用命令参数的基础知识。

2 useradd 常用命令参数

基本语法:

css 复制代码
 useradd [选项] 用户名

常用选项

  • -c:为新用户添加注释信息,通常用户填写用户的全名或其他描述
  • -d:指定用户的家目录。如果不指定,系统会使用默认的家目录路径,通过是/home/user
  • -m:自动创建用户的家目录,如果家目录不存在的话
  • -s:指定用户登录后使用的shell
  • -g:只用用户的主组。如果组不存在,useradd会尝试创建这个组
  • -G:指定用户所属的一个或多个附加组
  • -u:指定用户的UID(用户id),如果不指定系统会自动分配一个未被使用的UID
  • -o:允许为新用户指定一个已经存在的UID,及时它与另一个用户的UID相同。
  • -r:创建一个系统用户

上述参数中提请大家注意的有如下几点:

  1. -u-g参数如果不指定,默认从1000开始,系统用户和系统组的UID均为1-999范围区间
  2. -r参数在创建系统用户时是必须指定的参数,即第1点中提到的uid在1-999范围区间的用户;若创建普通用户,则可不加该参数
  3. -p参数指定用户登录的密码,但是该密码如果是明文设置,则会失效。这也是我在文首遇到的无法登录的情况。
3 解决办法

通过在命令参数-p处,我们知道了,密码是需要密文设置,如果明文设置,密码设置会生效,如下:

csharp 复制代码
 [root@instance-jgzzg4xl ~]# cat /etc/shadow
 ...
 linc:123456:20031:0:99999:7:::

但是这种情况下,在客户端(比如说xshell等)登录时,客户端是需要密文登录的,因此出现了我们上文中无法登录的情况。解决办法不止一种,这里用一种相对较简单的方式来处理:

css 复制代码
 passwd [用户名]

结果:

sql 复制代码
[root@instance-jgzzg4xl home]# passwd linc
Changing password for user linc.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

这样一来,我们就保证了用户的密文密码的问题,就解决了明文的用户无法登录的问题了,看来一切症结还是在基础知识上。

相关推荐
至乐活着5 天前
Shell脚本编写最佳实践:打造健壮、可维护的自动化利器
自动化·bash·shell·脚本·最佳实践
阿宇的技术日志7 天前
Shell、Terminal、CLI 三者清晰区分
shell·cli·terminal
zoipuus12 天前
上传repo仓库到自己的gitlab
linux·gitlab·shell·全志·tina
jieyucx13 天前
Shell实战:无限循环监控Nginx服务,异常自动重启+双份日志留存
linux·运维·nginx·自动化·shell
jieyucx14 天前
零基础通关:Shell 编程核心语法全景详解
linux·运维·编程·shell
Catherinemin18 天前
【Shell脚本】Shell echo 命令
shell
wok15718 天前
Claude Code 的 Shell 工具因中文参数导致 Exit Code 127,求解决方案
shell·claude
vortex518 天前
Shell 命令执行知识体系全景解析
linux·运维·bash·shell·命令行
vortex518 天前
Shell 位置参数传递:从入门到“怀疑人生“
linux·bash·shell
zzzzzz3101 个月前
NVIDIA 开源 SkillSpector:AI Agent 技能安全扫描器,你的 Agent 装了个定时炸弹?
机器学习·shell·cto