我的默认文件权限如何从 666(umask 设置之前)更改为 04501

我的默认文件权限如何从 666(umask 设置之前)更改为 04501

我安装的 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 位。

相关内容