侧边栏壁纸
博主头像
孔子说JAVA博主等级

成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!

  • 累计撰写 285 篇文章
  • 累计创建 125 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Linux环境下修改密码报错问题排查解决步骤

孔子说JAVA
2022-05-22 / 0 评论 / 0 点赞 / 129 阅读 / 2,779 字 / 正在检测是否收录...

1、修改密码报错现象

在Linux系统中,不管是root用户还是普通用户登录后,如果需要修改密码时,执行命令 passwd,输入密码和确认密码后,有时候会出现 uthentication token manipulation error 的提示,表示密码修改失败。出现这种现象的情况有2种,第一种情况是当你输入密码和确认密码不一致的时候,除此之外还有额外的提示信息 Sorry, passwords do not match.,根据这个可以很明确的判断出原因。如下图:

image-1653032382471

第二种情况只出现了uthentication token manipulation error 的提示,没有额外的提示信息,如下图所示:

image-1653035581027

接下来我们主要分析和解决这一种情况。

2、问题解决方案

2.1 查看文件属性

用lsattr命令查看 /etc/passwd、、/etc/shadow 的属性

# lsattr /etc/passwd
----i---------e----- /etc/passwd
# lsattr /etc/shadow
--------------e----- /etc/shadow

从上述代码中可以看到/etc/passwd 的文件属性有个 i 标识,这表明这个文件是禁止修改的。

使用 chattr 命令对该文件解锁:

# 解锁passwd文件
chattr -i /etc/passwd

# 如果shadow有锁,使用如下命令解锁
chattr -i /etc/shadow

然后再次修改密码,执行成功,如下图:

image-1653036062516

/etc/passwd 文件重新加锁,防止误修改操作。

# 给passwd文件加锁
chattr +i /etc/passwd
# 给shadow文件加锁
chattr +i /etc/shadow

查看2个文件的属性

# lsattr /etc/passwd
----i---------e----- /etc/passwd
# lsattr /etc/shadow
----i---------e----- /etc/shadow

image-1653036212050


拓展:chattr 命令介绍

用chattr命令防止系统中某个关键文件被修改:

# chattr +i /etc/resolv.conf

然后用mv /etc/resolv.conf等命令操作于该文件,都是得到 Operation not permitted 的结果。vim编辑该文件时会提示 W10: Warning: Changing a readonly file错误。使用 lsattr 命令来显示该文件属性:

# lsattr /etc/resolv.conf

输出结果为:

----i-------- /etc/resolv.conf

要想修改此文件就要把 i 属性去掉:

chattr -i /etc/resolv.conf

如果想让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:

# chattr +a /var/log/messages

2.2 查看根目录空间是否满了

显示文件系统的磁盘使用情况统计:

# df 
Filesystem     1K-blocks    Used     Available Use% Mounted on 
/dev/sda6       29640780 4320704     23814388  16%     / 
udev             1536756       4     1536752    1%     /dev 
tmpfs             617620     888     616732     1%     /run 
none                5120       0     5120       0%     /run/lock 
none             1544044     156     1543888    1%     /run/shm 

第一列指定文件系统的名称,第二列指定一个特定的文件系统1K-块1K是1024字节为单位的总内存。用和可用列正在使用中,分别指定的内存量。使用列指定使用的内存的百分比,而最后一栏"安装在"指定的文件系统的挂载点。

用一个 -i 选项的df命令的输出显示inode信息而非块使用量。

df -i 
Filesystem      Inodes    IUsed    IFree     IUse% Mounted on 
/dev/sda6      1884160    261964   1622196   14%        / 
udev           212748     560      212188    1%         /dev 
tmpfs          216392     477      215915    1%         /run 
none           216392     3        216389    1%         /run/lock 
none           216392     8        216384    1%         /run/shm 

显示所有的信息:

# df --total 
Filesystem     1K-blocks    Used    Available Use% Mounted on 
/dev/sda6       29640780 4320720    23814372  16%     / 
udev             1536756       4    1536752   1%      /dev 
tmpfs             617620     892    616728    1%      /run 
none                5120       0    5120      0%      /run/lock 
none             1544044     156    1543888   1%      /run/shm 
total           33344320 4321772    27516860  14% 

我们看到输出的末尾,包含一个额外的行,显示总的每一列。

-h选项,通过它可以产生可读的格式df命令的输出:

# df -h 
Filesystem      Size  Used   Avail Use% Mounted on 
/dev/sda6       29G   4.2G   23G   16%     / 
udev            1.5G  4.0K   1.5G   1%     /dev 
tmpfs           604M  892K   603M   1%     /run 
none            5.0M     0   5.0M   0%     /run/lock 
none            1.5G  156K   1.5G   1%     /run/shm 

我们可以看到输出显示的数字形式的’G’(千兆字节),“M”(兆字节)和"K"(千字节)。这使输出容易阅读和理解,从而使显示可读的。请注意,第二列的名称也发生了变化,为了使显示可读的"大小"。

df命令具体使用的参数可结合实际情况使用,如果是根目录空间满了,则根据需要清除磁盘文件。

2.3 查看是否有执行权限

权限相关命令可参考:Linux操作命令分类详解 - 用户权限(三)

  1. 查看/etc/passwd/etc/shadow 查看文件是否有读写权限
# ll /etc/passwd
-rw-r--r-- 1 root root 1818 Oct  9  2021 /etc/passwd
# ll /etc/shadow
-rw-r----- 1 root shadow 1157 May 20 15:27 /etc/shadow

从上述代码中可以看到这两个文件对于root用户是有读写权限的。如果没有执行权限,通过 chmod 命令赋予执行权限:

chmod 755 /etc/passwd /etc/shadow

注意:

如果执行chmod命令报错 chmod: changing permissions of ‘/etc/passwd’: Read-only file system

报错原因:文件系统处于只读模式下

解决方式:

mount -rw -o remount /

注:

  • mount 是挂载命令
  • -rw 是说指定的挂载文件是可读/写的
  • -o remount / 是说重新挂载根

然后重新执行chmod命令,便可以进行passwd密码修改了。

0

评论区