通过echo "password" |passwd --stdin user命令改密码引发的问题

出于安全考虑,公司要求对阿里云上的部分服务器修改root密码,其中服务器中有一台Centos和若干台ubuntu。在我很慎重地更改了密码之后,没想到还是出了问题,有一台服务器ssh登录不上去了。

当时考虑到有两个可能:

1.有可能是ssh配置文件没有打开,PermitRootLogin yes(刚刚升级过ssh,这个原因也是可能的)

2.密码错误

往回梳理,发现这台服务器是Centos的,并且是用复制粘贴echo "LN3T!854qq" |passwd --stdin root 这条命令来更改的密码,理应不可能出错的。所以怀疑是ssh的问题,通过阿里云终端登录服务器来验证,发现仍然不能登录服务器,所以应该不是ssh的问题。

回到密码本身,考虑会不会是这条命令出了问题。找到另一台Centos服务器来测试这条命令,问题就出现了,发现这条根本不能执行成功。

然而,这里无法执行成功,可是之前明明是执行成功了的,这是矛盾的。把"!"换成"#"再执行一遍命令,密码就更改成功了,所以,问题就是出在了密码中有"!"。继续测试echo命令和"!",知道了"!"在echo中是有不同意义的,如果要输出"!",就需要"\"来转译。

最后,实在没办法,只能通过阿里云终端重置密码,然后获得允许重启了服务器,最终才登录了服务器。通过history命令查看操作历史纪录,看到echo "LN3T!854qq" |passwd --stdin root这条命令确实执行成功了,并且把密码更改了,应该是出现了bug。

问题最终找到了,也解决了。通过这件事,也有一些收获:

1.设置密码最好不要使用echo "password" |passwd --stdin user 这条命令,一是不安全,通过history可以看到密码,二是不确定因素太多,设置密码容易出错,具体echo的用法可以上网搜索查看;

2.一台服务器至少应该设置两个用户,一个是root,另外一个是拥有root权限的普通用户(通过配置/etc/sudoers可以实现),这样就能够保证一个密码出错后还可以通过另外一个用户登录服务器重置密码,;

3.通过passwd user 命令更改密码,密码中出现的符号不包含其他意义,仅仅是作为符号本身来使用,这种方法设置密码更安全。

时间: 2024-11-08 12:40:34

通过echo "password" |passwd --stdin user命令改密码引发的问题的相关文章

RHEL7单用户改密码

前提是你可以看到引导界面.并且没有那一道忘了就醉了了的密码. 方法一: 1.重启操作系统的时候,在启动页面,输入e进行编辑 选择第一项,然后在内核部分,按最后的end键到最后加入: #rd.break console=tty0   #tty0这个可以不添加. 2.启动操作系统 按Ctrl+x保存启动 3.进入系统以后,重新挂载/sysroot/ #mount -o remount,rw /sysroot/ #chroot /sysroot/ 4.重置密码 #echo RedHat|passwd 

echo “新密码”|passwd --stdin 用户名

--stdin This option is used to indicate that passwd should read the new password from standard input, which can be a pipe. 这个选项用于从标准输入管道读入新的密码. 使用 echo 方式来重置Linux 系统用户密码: echo "新密码"|passwd --stdin 用户名 [[email protected] ~]# passwd --stdin rusky

usermod命令\用户密码管理\mkpasswd命令

3.4usermod [[email protected] ~]# tail -n5 /etc/passwd [更改用户uid] postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin GYB:x:1000:1000::/ho

passwd --stdin没有这个参数(debian)

passwd –stdin没有这个参数(debian) 在RHEL/CentOS中,我们批量创建用户时一般都会用到passwd –stdin参数,但是在debian/ubuntu下没有这个参数: man passwd  -a, --all  This option can be used only with -S and causes show status for all users. -d, --delete  Delete a user's password (make it empty)

Linux echo, sort, sed 等一些命令总结

linux echo, sort, sed是初学linux shell script 的一些常用的命令.基本上来说,如果能够掌握了这些命令,我们就能写出一些不错的linux脚本.以下是我遇到的以下常用的echo,sort, sed等命令的一些应用; 1.  echo -e: BW="f25\nf50\nf75\nf100\n"; 如果直接echo $BW, 结果是f25\nf50\nf75\nf100\n.所以我们必须加上-e选项才能实现换行的目的,即echo -e $BW Note:

Linux命令 改变文档权限及所有者

Linux命令 改变文档权限及所有者 chgrp :改变档案所属群组 chown :改变档案拥有者 chmod :改变档案的权限, SUID, SGID, SBIT等等的特性 chgrp说明及范例[[email protected] ~]# chgrp [-R] dirname/filename 选项与参数: -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有档案.目录 都更新成为这个群组之意.常常用在变更某一目录内所有的档案之情况. 范例: [[email protec

Win10小技巧:如何将在此处打开命令改为CMD或Powershell?

Win10小技巧:如何将在此处打开命令改为CMD或Powershell? 2016-12-23 15:28:16来源:IT之家作者:雪泉责编:雪泉评论:61 微软的CMD也就是命令提示符已经伴随了我们很多年了,这些年来CMD已经勤勤恳恳地默默工作着,虽然没有图形化的界面,但是其干净整洁的操作环境仍然受到了大家的欢迎. 随着微软Win10系统的流行,更加强大的PowerShell崭露头角,采用.net架构编写的Powershell性能更加强大,实现的功能也丰富.此时略显老迈的CMD心有力而力不足.

运维必懂脚本之闲来无事改密码

在生产中,我们经常遇到上一任运维走了,要改密码,和定期修改密码加固安全等需求.现在来分享一个小脚本. 首先我们先来了解下密码修改命令: #passwd root  Changing password for root. New password: Retype new password: # 可以看到passwd默认是带有交互,那并不是和我们在脚本里面用,那怎么办?通过help,在passwd里面我们看到一个参数"--stdin" # passwd --help Usage: pass

第四天重定向tr命令用户名密码修改

直接指针间接指针ext4格式 硬链接特点不能跨分区 [mage@centos7 data]$ln /root/f3 /data/f3.lnk ln: failed to create hard link '/data/f3.lnk' => '/root/f3': Invalid cross-device link 硬链接本质是一个文件多个名称,夸分区则文件不同 不能针对目录 [mage@centos7 data]$ln /data /data/link ln: '/data': hard lin