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.

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

相关推荐
Dangks1 天前
[运维] 服务器本地网络可用性检查脚本
linux·运维·服务器·shell·network·系统工具
江上清风山间明月5 天前
shell脚本编写注意细节 ==、=等的区别
bash·shell·注意·相等·细节·==·=
188_djh10 天前
# linux从入门到精通-从基础学起,逐步提升,探索linux奥秘(十六)--shell
linux·运维·bash·shell·shell入门·shell变量·linux入门到精通
RamboPan10 天前
Mac 使用脚本批量导入 Apple 歌曲
macos·自动化·shell·apple·script
I'm Jie11 天前
一站式学习 Shell 脚本语法与编程技巧,踏出自动化的第一步
linux·ssh·shell·shell脚本·shell编程
rainsc14 天前
当多核变单核:破解CPU核心神秘失踪的终极指南!
服务器·shell
一丝晨光14 天前
编程语言支持中文变量吗?三字符组是什么来源?为什么结构体要考虑对齐?如何确定语言使用的地址是不是物理地址?用户态应用程序如何获取变量的物理地址?
java·linux·c++·c·shell·结构体·虚拟地址
188_djh14 天前
# linux从入门到精通-从基础学起,逐步提升,探索linux奥秘(十七)--shell运算符
linux·运维·bash·shell·shell脚本附带参数·shell运算符·shell文件测试运算符
咖啡调调。15 天前
⑤sed流编辑器与awk文本处理工具——项目实训任务
编辑器·shell·脚本