帮助文档 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
帮助文档 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 云服务器 ECS
  4. 操作指南
  5. 实例
  6. 连接实例
  7. 连接常见问题
  8. SSH远程连接问题
  9. 修改Linux ECS实例root密码时,提示passwdPermission denied

修改Linux ECS实例root密码时,提示passwdPermission denied

  • SSH远程连接问题
  • 发布于 2025-04-01
  • 0 次阅读
文档编辑
文档编辑

问题描述

在Linux实例中修改root密码时,遇到“passwd: Permission denied”的错误。

原因分析

在Linux系统中,/etc/passwd和/etc/shadow是直接存储用户信息和密码的核心文件,其权限或属性异常会直接影响密码修改操作。而/etc/pam.d/*目录下的配置文件则与PAM(Pluggable Authentication Modules)模块相关,主要定义了认证规则,通常不会直接导致“Permission denied”错误,除非存在严重的配置错误(如模块缺失或格式异常)。所以,此问题通常由以下原因导致:

  • /etc/passwd、/etc/shadow、/etc/pam.d/* 等关键文件的权限设置不正确。

  • PAM(可插拔认证模块)配置文件格式错误,例如文件为DOS格式。

  • 系统日志中记录的相关文件不存在或模块错误等问题。

解决方案

重要

在对系统文件进行修改前,建议创建快照或备份重要数据,以防误操作导致数据丢失。

步骤一:检查关键文件的权限

  1. 运行以下命令,检查文件权限是否正常。

    ls -l /etc/passwd /etc/shadow /etc/pam.d/*

    正常情况下:

    • /etc/passwd权限为644(即rw-r--r--),所有者为root。

    • /etc/shadow权限为600(即rw-------),所有者为root。

    • /etc/pam.d/*权限为644(即rw-r--r--),所有者为root。

  2. 如果发现权限异常,可以使用以下命令修复文件权限。

    sudo chmod 644 /etc/passwd
    sudo chmod 600 /etc/shadow
    sudo chmod -R 644 /etc/pam.d/*
  3. 运行以下命令,检查文件不可变属性。

    lsattr /etc/passwd /etc/shadow
  4. 若输出中包含i(如----i--------),表示文件不可修改,可执行以下命令移除i属性。

    sudo chattr -i /etc/passwd
    sudo chattr -i /etc/shadow

    修改密码后,可重新设置i属性以增强安全性。

    sudo chattr +i /etc/passwd
    sudo chattr +i /etc/shadow

步骤二:检查SELinux状态

如果系统启用了SELinux服务,可能会限制密码修改操作。可以通过以下命令临时关闭SELinux。

# 查看SELinux状态
sestatus

# 临时关闭SELinux(若启用)
sudo setenforce 0

如果问题解决,可根据需求永久关闭SELinux,具体请参见永久关闭SELinux服务。

步骤三:使用strace追踪修改密码过程

  1. 通过strace命令,追踪修改密码的过程,并将日志输出到/tmp/changepasswd文件。

    strace -o /tmp/changepasswd passwd root
  2. 执行以下命令分析日志,若输出类似open("/etc/pam.d/system-auth-ac\r", O_RDONLY),则确认/etc/pam.d/system-auth-ac文件格式异常(DOS格式导致)。

    grep "open" /tmp/changepasswd | grep "\/r"

步骤四:检查并修复PAM配置文件格式

  1. 执行以下命令检查文件格式。如果问题与PAM模块相关,可能是/etc/pam.d/system-auth-ac文件格式异常(例如DOS格式)。

    # CentOS/RHEL
    file -i /etc/pam.d/system-auth-ac
    
    # Ubuntu/Debian
    file -i /etc/pam.d/passwd

    如果输出中包含us-ascii和with CRLF line terminators,则表示文件为DOS格式。

  2. 如果文件为DOS格式,使用以下命令将文件从DOS格式转换为Unix格式。

    # CentOS/RHEL
    sudo dos2unix /etc/pam.d/system-auth-ac
    
    # Ubuntu/Debian
    sudo dos2unix /etc/pam.d/passwd

步骤五:验证修改结果

  1. 完成上述步骤后,再次尝试修改root密码。

    passwd root

    输入新密码并确认,查看是否能够成功修改密码且不再出现“Permission denied”错误。

  2. 使用新密码登录系统,验证密码修改是否生效。

通过上述步骤,您可以逐步排查并解决“passwd: Permission denied”问题。如果问题仍未解决,请进一步检查系统日志或提交工单联系技术支持获取帮助。

相关文章

Linux内核参数net.core.optmem_max设置过小导致无法远程连接实例 2025-04-01 11:59

net.core.optmem_max 是 Linux 内核中的一个网络参数,用于设定每个套接字所允许的最大缓冲区的大小。该参数直接影响网络应用程序在处理大量并发连接和高带宽流量时的性能。如果设置过小,可能导致网络性能下降、丢包增多和时延过高,从而影响远程连接实例的稳定性。本文将介绍如何调整该参数。

Linux实例中由于SELinux服务开启导致SSH远程连接异常 2025-04-01 11:59

本文介绍Linux实例中由于SELinux服务开启导致SSH远程连接异常时的解决方案。 问题描述 在SSH远程连接Linux实例时,即便密码正确输入后,在命令行或secure日志中也会出现如下错误信息。

Linux实例中,SSH登录或数据传输速度都很慢怎么办? 2025-04-01 11:59

本文介绍Linux系统的ECS实例中,SSH登录或数据传输速度都很慢的问题原因和解决方案。 问题现象 在Linux系统的ECS实例中,通过外网或内网使用SSH服务登录或数据传输时,速度很慢。 问题原因 该问题可能是ECS实例中,SS

Linux实例如何设置SSH客户端的会话连接保持时间 2025-04-01 11:59

概述 使用SSH客户端远程连接Linux系统的阿里云ECS实例,连接会话闲置一段时间后,基于安全考虑,SSH客户端会在超过特定时间后自动终止远程连接。若希望延长SSH客户端的会话连接保持时间,请参考本文进行操作。 详细信息 阿里云提醒您: 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾

Linux系统下如何保持进程在SSH客户端断开后仍继续运行? 2025-04-01 11:59

本文介绍在Linux系统的ECS实例内,当断开SSH客户端后,如何保持进程继续运行的解决方案。 使用场景 在Linux系统中,在执行一些运行时间比较长的任务时,必须等待执行完毕才能断开SSH连接或关闭客户端软件,否则可能会导致执行中断。本文介绍两种保障程序在您退出登录后持续运行的方法。

Linux系统的ECS实例中,启动SSH服务提示“Failed to start OpenSSh server daemon”错误怎么办? 2025-04-01 11:59

本文介绍在Linux系统的ECS实例中,启动SSH服务提示“Failed to start OpenSSh server daemon”错误的原因和解决方案。 问题现象 在Linux系统的ECS实例中,SSH服务(sshd.service)无法启动,运行systemctl status sshd.s

目录
Copyright © 2025 your company All Rights Reserved. Powered by 博智数字服务平台.
闽ICP备08105208号-1