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.

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

相关推荐
Sheep Shaun11 小时前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制
dingdingfish2 天前
Bash 学习 - 第1章:Introduction
bash·shell·programming·introduction
pr_note3 天前
legality检查
shell·tcl
啥都不懂的小小白4 天前
Shell脚本编程入门:从零基础到实战掌握
前端·shell
dingdingfish8 天前
GNU Parallel 学习 - 第1章:How to read this book
bash·shell·gnu·parallel
似霰11 天前
Linux Shell 脚本编程——核心基础语法
linux·shell
似霰12 天前
Linux Shell 脚本编程——脚本自动化基础
linux·自动化·shell
偷学技术的梁胖胖yo13 天前
Shell脚本中连接数据库查询数据报错 “No such file or directory“以及函数传参数组
linux·mysql·shell
纵有疾風起22 天前
【Linux 系统开发】基础开发工具详解:软件包管理器、编辑器。编译器开发实战
linux·服务器·开发语言·经验分享·bash·shell
gis分享者24 天前
Shell 脚本中如何使用 here document 实现多行文本输入? (中等)
shell·脚本·document·多行·文本输入·here