기본 파일 권한을 666(umask가 설정되기 전)에서 04501로 변경하려면 어떻게 해야 합니까?

기본 파일 권한을 666(umask가 설정되기 전)에서 04501로 변경하려면 어떻게 해야 합니까?

CentOS 6.5 설치에서 갑자기 새 파일이나 재생성된 파일에 대한 파일 권한을 처리하는 데 문제가 발생하기 시작했습니다. 터치를 사용하여 파일을 만들 때 일반적인 644 또는 -rw-r--r-- 대신 -rs------x가 새 파일에 할당된 권한으로 표시됩니다. 저는 루트로 로그인하여 개인 /home/myusername 디렉토리에 이 파일을 생성하려고 합니다.

'strace touch filename 2>&1 | grep filename' 명령을 사용하여 strace on touch를 실행하면 다음이 표시됩니다.

open("filename", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 04501) = 3 04501은 일반적으로 umask 설정을 적용하기 전 파일에 대한 기본 권한인 666을 표시하는 곳입니다(내 것은 0022).

이 상자에 대해 AVG를 실행하고 rkhunter를 실행하고 며칠 동안 검색했지만 아이디어가 없습니다.

도와주셔서 감사합니다.

답변1

매우 나쁜 소식인 것 같습니다. GNU coreutils에는 touch다음 코드가 포함되어 있습니다.

      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 비트가 설정된 권한을 사용한다는 점입니다.

관련 정보