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.

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

相关推荐
童话ing18 小时前
【Shell】自动替换指定项目tag并提merge request
shell
岚天start2 天前
[K8S监控]-K8S容器pod异常状态监控脚本并推送钉钉告警
容器·kubernetes·钉钉·shell·告警
AlbertS5 天前
Shell脚本中set -e和set -o pipefail的作用
shell·pipefail·trap·脚本错误·控制流程
阿海5746 天前
安装php7.4.33的shell脚本
php·shell
阿海5746 天前
卸载redis7.2.4的shell脚本
linux·redis·shell
小嘟嘟137 天前
从基础到进阶:掌握 userdel,玩转 Linux 用户管理的 “减法” 艺术
linux·运维·网络·shell
gis分享者7 天前
如何在 Shell 脚本中实现文件的读写操作?(容易)
shell·文件·awk·echo·cat··
eight *7 天前
源码部署docker自动化脚本
docker·shell
gis分享者9 天前
如何在 Shell 脚本中使用管道(pipeline)实现数据传递?(容易)
linux·pipeline·shell·脚本·管道·数据传递
シ風箏11 天前
Shell【脚本 06】监测文件数据量并压缩及查看远程服务器状态并删除文件脚本分享
linux·运维·服务器·github·shell