问题
linux系统中(ubuntu20),root用户下执行passwd命令,提示 passwd: Permission denied ,如下图:
排查
1.执行 ll /usr/bin/passwd ,查看文件权限是否正确,正常情况是 -rwsr-xr-x. root root,如果不是,请修改至正确权限
2.查看/etc/pam.d/passwd,常见正常内容如下图(centos系统中)
在另一台ubuntu20机器上查看内容如下:
#
# The PAM configuration file for the Shadow `passwd' service
#
@include common-password
发现此文件内容为 @include common-password
引用了一个common-password文件,此文件在 /etc/pam.d/目录下,然后查看 /etc/pam.d/common-password 文件内容,如下图:
#
# /etc/pam.d/common-password - password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
# used to change user passwords. The default is pam_unix.
# Explanation of pam_unix options:
#
# The "sha512" option enables salted SHA512 passwords. Without this option,
# the default is Unix crypt. Prior releases used the option "md5".
#
# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
# login.defs.
#
# See the pam_unix manpage for other options.
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
# here are the per-package modules (the "Primary" block)
password [success=1 default=ignore] pam_unix.so obscure sha512
# here's the fallback if no module succeeds
password requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
password required pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config
password * pam_unix.so sha512
password required remember=5
通过对 password 这几行测试,发现将最后两行注释后,即可使用passwd命令