일반적으로 우리는 Linux에서 파일을 만들 때 파일의 소유자와 그룹이 작성자에 의해 설정된다는 것을 알고 있습니다. 예를 들어, usera
실행 후 사용자가 있습니다.
usera@srv1:$touch 1.txt
이 파일의 소유자는 다음과 같은 usera일 것입니다.
usera@srv1:$ll
-rw-r--r-- 1 usera usera 0 2012-07-25 14:29 1.txt
그러나 이제 결과는 다음과 같습니다.
-rw-r--r-- 1 root usera 0 2012-07-25 14:29 1.txt
터치 명령 뿐만 아니라 다른 사람들도 같은 문제를 겪고 있는 것 같습니다. 예를 들어, 다음을 vim
사용하여 usera의 집에 새 파일을 생성 한다면 :
usera@srv1:$ vim a.txt
편집 화면으로 이동할 수는 있지만 저장할 수는 없습니다. 오류 메시지는 파일에 대한 쓰기 권한이 없다는 것과 동일합니다.
그렇다면 우리 서버에서 무슨 일이 벌어지고 있는 걸까요? 서버는 Ubuntu 11.04 64비트입니다.
추가적이지만 잠재적으로 유용한 정보:
이제 새로 생성된 모든 사용자에게는 비슷한 문제가 있습니다. usera
예 sudoer
, 하지만 새로운 일반 사용자( )를 생성하고 sudo createuser xxx
비밀번호를 할당하고 이 새 계정으로 로그인하면 동일합니다.
답변1
이 증상이 나타나는 유일한 이유는 다음과 같습니다.설명하신 단계에서touch
는 (그리고 아마도 수많은 다른 도구들) setuid 루트 이지만 , 그래서는 안 됩니다.
ls -lH "$(which touch)"
터미널에서 명령을 실행해 보십시오. 첫 번째 실행 비트입니까, x
아니면 s
? s
(예를 들어 ) 인 경우 -rwsr-xr-x
루트 설치를 보고 있는 것 같습니다. 알아채다만약에시스템이 손상된 경우 ls
출력(또는 해당 문제에 대한 다른 도구)이 현실을 정확하게 표현한다고 반드시 신뢰할 수는 없습니다. $(which touch)
쉘이 바이너리의 전체 경로라고 생각하는 모든 경로로 확장 되므로 실제 경로 앞에 오는 touch
잘못된 위치에서 길을 잃은 사례를 포착 하고 심볼릭 링크(이 경우)의 심볼릭 링크를 역참조합니다 . , 심볼릭 링크의 이름이 표시되지만 파일 속성은 심볼릭 링크 대상에서 나옵니다.touch
$PATH
-H
ls
그렇지 않다면, 귀하의 시스템은 권한 측면에서 매우 심하게 손상된 것입니다.
vim
또한 저장 명령을 실행할 때까지는 파일이 실제로 생성되지 않는다는 점을 명심하십시오 .
시스템이 손상되면,유일한 진짜 해결책정리하고 다시 빌드한 다음 백업에서 데이터와 구성을 조심스럽게 복원하세요. (백업은 갖고 계시죠?)원칙적으로, 루팅된 시스템을 복구하는 것은 확실히 기술적으로 가능하지만 가치보다 문제가 더 많고, 뭔가를 놓치기 쉽고, 재설치보다 확실히 쉽지 않습니다. 여기에는 다음부터 시작하는 작업이 포함됩니다.신뢰할 수 있는, 읽기 전용 미디어, 기존 파티션을 일부 대체 루트 디렉토리(예: /mnt) 아래의 공통 위치에 마운트하고 각 디렉토리, 파일, 권한 비트 등을 주의 깊게 검사하여 예외 사항을 찾아 신뢰할 수 있는 복사본에서 복사합니다. 의심스러워 보이는 모든 콘텐츠. 이를 위해서는 실제로 동일한 설정이 필요합니다신뢰할 수 있는시스템 비교;넌 아무것도 믿을 수 없어감염된 호스트에서.
답변2
touch
바이너리가 setuid 루트인 것 같습니다 .
다음 명령을 사용하여 이를 확인하십시오.
$ ls -l `which touch`
-rwxr-xr-x 1 root root 64192 Jan 8 2012 /bin/touch
# ^
s
레이블이 지정된 열에 하나 가 아닌 하나가 있으면 x
파일은 실제로 setuid 루트입니다. chmod u-s `which touch`
루트로 실행하여(예: 를 통해) 이 문제를 해결할 수 있습니다 sudo
.
그러나 시스템에 백도어 등이 있는지 확인하는 것을 고려해야 합니다. 임의의 바이너리가 setuid인 경우 누군가 침입하여 무해한 바이너리를 일부 "추가" 기능이 포함된 setuid 변형으로 교체했을 가능성이 높습니다.
답변3
a.txt에 대한 읽기 액세스 권한이 있으므로 vim이 해당 파일을 열 수 있습니다. 파일이 읽기 전용임을 나타내고 변경을 시작할 때 경고합니다(하지만 여전히 메모리 버퍼 편집은 허용함).
저장하려고 하면 쓰기 권한이 없어서 저장에 실패합니다. 물론 vim에게 쓰기 권한이 있는 다른 파일 이름/디렉토리에 저장하도록 지시할 수 있습니다.
답변4
예, 문제는 약간의 터치와 기타 문제가 있는 명령입니다.
-rwsr-xr-x 1 루트 루트 64192 2012년 1월 8일/bin/touch
근본 원인을 찾았지만 얼마나 많은 바이너리가 영향을 받는지 모르기 때문에 전체 시스템을 다시 구축해야 합니다. 우리는 아직도 이 문제의 원인을 알아내기 위해 노력하고 있습니다. 내부 전용 서버이며 인터넷에 게시되지 않습니다.
도움을 주셔서 감사합니다.