我正在测试如果passwd
setuid 位被禁用,该命令是否可以运行。我通过运行以下命令禁用了 setuid:
chmod 0554 /bin/passwd
这样做之后,我测试了该passwd
命令是否仍然能够运行。但正如预期的那样,它没有。相反,它给了我以下错误:
passwd: Authentication token manipulation error
passwd: password unchanged
我试图在源代码中查找这些错误消息,但在此文件中找不到它们。谁能指导我找到包含上面显示的错误消息的源文件?
第一条错误消息来自 PAM 库,参见例如https://github.com/linux-pam/linux-pam/blob/master/libpam/pam_strerror.c
在链接的 Git 存储库中进行搜索,在https://github.com/shadow-maint/shadow/blob/master/libmisc/pam_pass.c中找到第二条错误消息
这是打印两条错误消息的函数:
首先,我希望您这样做是为了获得教育经验,而不是因为您认为它会提高安全性或其他什么(它会使情况变得更糟!)
话虽这么说,但在未来一般处理这种情况和类似情况的指针很少:
strace -ff -efile passwd
将向您显示passwd(1)
正在尝试访问的文件,包括正在使用哪些库和额外的可执行文件等。dpkg -S /path/to/file
Debianapt-get source packagename
衍生产品,如 Ubuntu)grep(1)
获取命令喷出的那些消息的来源。