我想更改 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
、递归、根目录和七五五非常有趣。(不要这样做,因为它可能会使您的系统变得无用!)