系统中正常会建立很多账号,如何判断账号是否存在一定的问题呢?需要使用什么命令来检查会又快又好呢?本文就讲解几个命令可以提高效率。
【目录】
一 pwck检查用户的/etc/passwd文件内的配置信息
二 chpasswd读入未加密前的密码可以用来修改密码
三 pwconv/pwunconv命令详解
一 pwck检查用户的/etc/passwd文件内的配置信息
pwck检查/etc/passwd文件内信息的同时,还可以对比/etc/passwd与/etc/shadow的信息是否一致。使用pwck命令会检查/etc/passwd中的数据字段是否有误,会提示用户进行修改。
[root@achao ~]# pwck
user 'ftp': directory '/var/ftp' does not exist
user 'saslauth': directory '/run/saslauthd' does not exist
user 'gluster': directory '/var/run/gluster' does not exist
user 'pulse': directory '/var/run/pulse' does not exist
user 'gnome-initial-setup': directory '/run/gnome-initial-setup/' does not exist
user 'libai': directory '/home/libai' does not exist
user 'dufu': directory '/home/dufu' does not exist
user 'wangwei': directory '/home/wangwei' does not exist
user 'baijuyi': directory '/home/baijuyi' does not exist
user 'wangchanglin': directory '/home/wangchanglin' does not exist
pwck: no changes
复制
帮助记忆的方式:pwck可以理解成为pass word check的缩写,是不是瞬间就可以记忆下来了,你看我的账户信息有很多有错误提示。一些是本来就没有,一些是已经丢失的。很快捷方便吧!
[root@achao ~]# ls /home/
admin
复制
/home目录下确实没有libai、dufu等用户的信息。
相对应的用户组检查使用命令grpck
[root@achao ~]# grpck
[root@achao ~]#
复制
没有回显说明是正确的。
二 chpasswd读入未加密前的密码可以用来修改密码
[root@achao ~]# echo "admin:Huawei@@123" | chpasswd
复制
重启操作系统使用admin用户登录检验:
输入新修改的密码,登录进行测试,登录成功。修改密码的方式大家是否想起了--stdin的方式呢,这也是一种方式。
[root@centos ~]# echo "Huawei@123" | passwd --stdin admin
Changing password for user admin.
passwd: all authentication tokens updated successfully.
复制
以上两种都可以修改用户的密码,在非red hat衍生的操作系统中chpasswd命令还是可以使用的。
三 pwconv/pwunconv命令详解
pwconv
早期的UNIX系统中没有/etc/shadow,用户的登录密码在/etc/passwd的第二栏(此处知识是在书中查看到,并没有在现实的操作系统中遇到过),后期为了系统安全,将密码数据移动到/etc/shadow内,受用pwconv可以:
3.1 对比/etc/passwd与/etc/shadow,若/etc/shadow内的账号没有对应的/etc/shadow密码时,则pwconv会去/etc/login.defs读取相关的数据。并建立账号的/etc/shadow数据。
3.2 若/etc/passwd中存在密码栏,将密码栏移动到/etc/shadow中,并将/etc/passwd中的密码栏变为x(此处也是书本知识,现实中没有见过,如果有见过哪一款操作系统可以留言的)
pwunconv
从命令就可以看出和pwconv是相反的操作。将/etc/shadow内的密码栏写会/etc/passwd中,并且删除/etc/shadow文件。特别提醒,没有备份/etc/shadow文件的情况下,最好不要使用此命令,一旦有误,操作系统重启很明显就不能成功啦,这个时候就会很麻烦的啦!
因为我给操作系统打了快照,因此不用担心,下边用于演示
[root@centos ~]# ls -l /etc/shadow
----------. 1 root root 1220 Aug 13 01:06 /etc/shadow
[root@centos ~]# pwunconv
[root@centos ~]# ls -l /etc/shadow
ls: cannot access /etc/shadow: No such file or directory
[root@centos ~]# head -3 /etc/passwd
root:$6$5fbujjwkfuZybc.q$.aJYmPE9G7u4ie3iJtPvijeRbATUdCn1RjnJxDhI9BFfl09KGJVqFR4Y9PuLh5qUHvCNgMM/uJqA6HoAgeXQS1:0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:/sbin/nologin
daemon:*:2:2:daemon:/sbin:/sbin/nologin
复制
发现,明显/etc/shadow文件不存在了。密码被写入到/etc/passwd文件当中。
接下来我们进行还原。
[root@centos ~]# pwconv
[root@centos ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@centos ~]# ls -l /etc/shadow
-r--------. 1 root root 1414 Aug 13 01:20 /etc/shadow
[root@centos ~]#
复制
/etc/shadow文件有重新生成了,细心的宝子们可以发现/etc/shadow文件的权限发生了变化。切记,一定要改回来哦。
[root@centos ~]# ls -l /etc/shadow
----------. 1 root root 1414 Aug 13 01:20 /etc/shadow
[root@centos ~]# reboot
复制
重启系统登录验证
验证成功。