“chown -R root /”나는 어떻게 망쳤습니까?


9

rails 앱의 공용 폴더에 대한 권한을 변경하려고 할 때 실수로 chown -R root / 명령을 수행했습니다. 이로 인해 / 디렉토리의 모든 폴더에 대한 권한이 변경되었다고 생각했습니다. 그래서 제 질문은, 이것이 더 위험 할 것입니다. 실제로 더 좋은 질문은 이것을 취소 할 수있는 방법이 있습니까?


3
이것은 자동으로 취소 할 수 없으며, 예를 들어 시스템에 다양한 영향을 미칩니다 (다양한 홈 디렉토리 포함). 최근의 백업이 도움이 되길 바랍니다. 행운을 빕니다.
프레데릭 하 미디

시스템에 적절한 권한과 파일 소유권이 있는지 확인하는 프로그램이 있습니다. 트립 와이어는 초기라고 생각합니다. 여러 명의 사용자가없는 경우 해당 도구에서 보고서를 가져 오거나 수정하여 상황을 복구 할 수 있습니다.
minopret

또한 "더 나쁘게 만들 수있는 어떤 방식으로도 반응하지 마십시오"와 "최악의 것으로 생각하지 말 것"에 대한 훌륭한 조언을 읽으십시오. 또는 농담 버전을 사용하여 다음과 같은 중요한 일반적인 문제 해결 단계를 기억하십시오. 긴급 운영자 : "공황하지 마십시오. 친구가 죽었습니까?" 발신자 : BANG "예, 슬프게도 죽었습니다."
minopret

대부분의 경우 일반 시스템에서는 파일 그룹에서 소유자가 누구인지 알 수 있어야합니다. 따라서 find그룹이 적합하지 않은 루트가 소유 한 모든 파일을 그룹과 일치하는 사용자에게 모두 부여합니다. 실패를 기록하고 개별적으로 처리하십시오.
agf

해당 명령을 루트로 실행 했습니까? (나는 희망하지 않는다 ...)
Axel

답변:


7

여기서 문제를 해결하는 한 가지 방법 (해결할 수는 없지만 허공에서 벗어날 수 있음)은 유사한 시스템에서 프로세스를 실행 하여 파일에 대한 적절한 소유권을 수집하는 것입니다. 정확히 일치 할 가능성은 다소 적지 만, 두 패키지 모두 비슷한 패키지가 설치된 동일한 레벨에 있으면 운이 좋을 수도 있습니다.

파일 권한을 파일로 수집 한 후에는 자신의 시스템에서 프로세스를 실행하여 좋은 파일에서 파일 및 권한 / 소유권을 읽고이를 대신 할 수 있습니다. Linux 에서이 작업을 수행하는 몇 가지 작은 자체 제작 앱이 있습니다.

예 :

777*0*0*S*16*1334559119*1334532895*1361208513*/usr/lib32/*libgomp.so.1
644*0*0*F*67370*1359536382*1359374461*1359717843*/usr/lib32/*librt.a
644*0*0*F*59044*1334559119*1334532931*1355405098*/usr/lib32/*libgomp.so.1.0.0
644*0*0*F*1238*1359536382*1359374461*1359717843*/usr/lib32/*libBrokenLocale.a
777*0*0*S*17*1359536382*1359374460*1361208513*/usr/lib32/*libdl.so
644*0*0*F*905712*1334559116*1334533011*1355405098*/usr/lib32/*libstdc++.so.6.0.16
777*0*0*S*15*1333306601*1323929512*1361208513*/usr/lib32/*libbz2.so.1.0
777*0*0*S*24*1359536382*1359374460*1361208513*/usr/lib32/*libnss_files.so
644*0*0*F*1128*1359536382*1359374462*1359717843*/usr/lib32/*crt1.o

RWX * UID * GID * 기타 사항 * 디렉토리 * 파일 이름


5

우선, 명령이 여전히 실행 중이면 중지하십시오!

이제 모든 것이 루트에 속할 것이고 그것은 상당히 문제가됩니다.

최신 백업에서 정보를 복원해야합니다.

또한 실행중인 모든 응용 프로그램과 부팅시 사용자를 시작하기 전에 시스템을 다시 시작하지 않는 것이 중요합니다. 그렇게하면 권한 문제로 인해 일부가 제대로 시작되지 않을 수 있습니다.

행운을 빕니다.


3

아주 그리고 꽤.

"매우"는 명령이 실제로 통과되면 보안이 망가진다는 의미입니다. 이제 어떤 경로에 어떤 소유자가 있고 누가 어떤 작업을 수행해야하는지 알 수 없습니다.

"정확하지 않다"는 의미에서-당신이 그것을했을 때 뿌리가되었고 명령이 끝까지 갔습니까? 당신이 그것을 보자 마자 취소하면, 당신은 운이 좋을 것이고 수리가 낮을 수 있습니다. 만약 당신이 루트가 아니었다면, 당신이 같은 것을하지 않았다면이 명령은 그렇게 할 수 없었을 것 sudo ...입니다.

이것에 대한 단일 치료법은 없습니다. 백업이 있으면 복원 할 수 있습니다. 백업에서 소유권을 확인하고 적용해야 할 수도 있습니다. 루트킷 (예 : rkhunter) 검사기를 사용하고 있다면 가장 기본적인 소유권 목록이있을 수 있으며 문제를 해결할 수 있습니다. (아마도).


2

Fedora에서는 최소한 RPM 명령에 옵션이 --setperms있으며이를 --setugids사용하여 시스템 소유 파일의 대부분을 다음과 같이 수정할 수 있습니다 rpm --setugids -a. 각 사용자의 파일을 (어떤) 수정하려면 각 사용자마다 할 수 있습니다 chown -R user /home/user. 위의 내용으로 해결되지 않은 남은 부분이있을 수 있습니다. 특히 서버 (웹, ftp 등)가있는 경우 하나씩 처리해야합니다.

다른 분포도 비슷한 메커니즘을 가지고있을 것입니다. 또는 완전 새로 고침을 (그것이 어떻게 든 손상과 같은 즉, 새롭게 모든 것을 설치합니다. OK, 그것은 되었다 어떻게 든 손상.)

[그렇습니다. 이것은 의심의 여지없이 사용자가 ENTER를 누르기 전에 각 명령을 신중하게 고려하고 루트를 조금만 사용하도록 가르치는 잔인한 방법입니다 . 스스로 배운 것을 고려하십시오.]


setuidsetgid권한은 수동으로 설정해야합니다. rpm복원하지 않습니다.
jnas

1

사용중인 OSX 애플이이 문제를 해결하기 위해 디스크 유틸리티 내에 복원 기능을 제공하는 경우. Linux 배포판을 사용하는 경우 모든 권한을 수동으로 다시 실행해야합니다. 두 경우 모두 손을 대고 다시는하지 마십시오


Linux에서는이 기능을 완전히 복구 할 수 없을 것입니다. 시스템을 작동시킬 수 있다고해도 나중에 불안정성이나 보안 취약점으로 물릴 수있는 것을 놓쳤을 수 있습니다. 백업 또는 재 구축 접근법에서 복원이 필요할 수 있습니다.
Chris Kuehl 2013

0

불행히도 나는 그것을 "취소"하는 방법을 모른다. 그러나 당신은 아마도 루트에 의해 소유 된 시스템 파일을 남겨두고 당신이 소유 한 $ HOME에있는 모든 파일을 복원 할 수있다 (그리고 체계). 이때 $ HOME 디렉토리에없는 각 파일에서 권한 및 / 또는 소유자를 수정할 수 있습니다. 예, 이것은 고통 스럽지만 쉬운 해결책이 없다고 생각합니다. 그것이 내가 어쨌든 할 것입니다.


0

나는 당신이 말하는 것처럼 당신이 꽤 "나사"라고 말하고 싶습니다. 가장 효과적인 방법은 효율적인 백업에서 중요한 항목을 다시 설치하고 복원하는 것입니다. 죄송합니다. 일반적으로 행복한 결말로 빠른 수정이 필요한 상황이 아닙니다. 행운을 빕니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.