我安装的 CentOS 6.5 突然开始在处理新文件或重新创建的文件的文件权限时出现问题。当我使用 touch 创建文件时,我看到 -rs-----x 作为分配给新文件的权限,而不是通常的 644 或 -rw-r--r-- 。我以 root 身份登录,并尝试在我的个人 /home/myusername 目录中创建此文件。
当我对触摸运行 strace 时,使用命令 'strace touch filename 2>&1 | grep 文件名',我看到这个..
open("filename", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 04501) = 3 04501 通常是我们看到 666 的地方,这是应用 umask 设置之前文件的默认权限(我的 umask 是 0022)
我已经针对这个盒子运行了 AVG,运行了 rkhunter,在 Google 上搜索了好几天,但我没有想法。
谢谢您的帮助。
答案1
看起来是个非常坏的消息。 GNU coreutilstouch
包含以下代码:
int default_permissions =
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
fd = fd_reopen (STDIN_FILENO, file,
O_WRONLY | O_CREAT | O_NONBLOCK | O_NOCTTY,
default_permissions);
这表明它总是创建具有完全相同权限的文件,并且default_permissions
总是具有值0666
(在源代码中用符号常量表示)。
您的副本似乎touch
已被篡改。特别可疑的是,它现在使用的权限设置了 set-user-id 位。