root 可以更改用户的密码,但用户自己不能

root 可以更改用户的密码,但用户自己不能

我想更改 Ubuntu 中某个用户的密码。

  • 我可以以 root (管理员) 身份执行此操作。

    root@xxx:~# passwd testuser
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    
  • 但如果在用户自己的帐户中执行此操作则会出现以下错误。

    testuser@xxx:~$ passwd
    Changing password for testuser.
    (current) UNIX password:
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: Authentication token manipulation error
    passwd: password unchanged
    

其他系统信息:

  • 我的/被​​安装为读/写。
  • 以下是我的权限设置:

    root@xxx:~# ls -al /etc/shadow /etc/passwd
    -rw-r--r-- 1 root root   3083 Jul 23 15:17 /etc/passwd
    -rw-r----- 1 root shadow 3176 Jul 23 16:26 /etc/shadow
    
    root@xxx:~# ls -al $(which passwd)
    -rwxr-xr-x 1 root root 54256 May 17 2017 /usr/bin/passwd
    

任何建议都非常感谢!

答案1

该命令/usr/bin/passwd需要设置用户标识位权限,以便非 root 用户能够正常运行。

从评论中我们了解到,您的命令的权限目前是

ls -al $(which passwd)
-rwxr-xr-x 1 root root 54256 May 17 2017 /usr/bin/passwd

要添加s位,请执行以下操作:

sudo chmod u+s /usr/bin/passwd
# or sudo chmod 4755 /usr/bin/passwd

因此它变成:

ls -al $(which passwd)
-rwsr-xr-x 1 root root 54256 May 17 2017 /usr/bin/passwd

请注意,s而不是第一个x

还要注意的是,默认情况下该s位是设置的,所以一定有人删除了它。可能是故意的,以防止用户更改密码。也可能是无意的,因为chmod、递归、根目录和七五五非常有趣。(不要这样做,因为它可能会使您的系统变得无用!)

相关内容