chmod / 777을 잘못 설정했습니다. 문제?


33

나는 실행을 시도 chmod -R 777 ./했지만 전체 컴퓨터에서 입력 chmod -R 777 /하고 설정 777했습니다. 무엇이 잘못 될 수 있습니까? 어떻게 고칠 수 있습니까?



시스템에서 무엇이 잘못 될 수 있습니까? 작동이 중지됩니까?
Vinnycx

6
물론 문제가 있습니다. 예를 들어 SSH는 실패합니다.
ceving

2
홈 디렉토리를 읽을 수있는 경우 SSH가 종료됩니다. 모든 것을 777로 설정하는 것은 모든 것을 루트로하는 것과 같습니다.
ceving

3
무엇이 잘못 될지에 대한 자세한 내용은 serverfault.com/questions/364677/why-is-chmod-r-777-destructive 도 참조하십시오 .
Gilles 'SO- 악마 그만해'

답변:


46

문제? 예, 많이 요 고칠 수 있습니까? 확실한. 다시 설치하는 것보다 빠릅니까? 아마 아닙니다.

내 권장 사항은 다시 설치하는 것입니다. 기존 시스템의 백업을 유지하고, 패키지 목록에있는 파일의 내용을 복원 /etc하고 /var. 의 경우 /usr/local권한을 수동으로 복원 할 수 있습니다. 의 경우 /home/srv , 당신은 백업에서 권한을 복원해야합니다.

로컬 사용자가 여러 명인 시스템 인 경우 일부 파일을 세계적으로 읽을 수있게하면 기밀로 유지해야 할 사항이 있음을 참고하십시오.

  • 암호 목록이 손상되었습니다. 로컬 사용자가 해시 된 암호 목록에 액세스하여 무차별 공격을 시도 할 수 있습니다. 이것을 사용자에게 알리십시오.
  • 모든 개인 사용자 데이터 (ssh 키, 저장된 암호, 전자 메일, 사용자가 기밀로 간주 할 수있는 모든 것)가 모든 로컬 사용자에게 노출되었습니다. 이것을 사용자에게 알리십시오.

실제로 복구 (실제 복구 경로보다 더 많은 학습 연습)를 시도하려면 먼저 몇 개의 파일의 권한을 복원하십시오. 현재 대부분의 파일이 너무 열려 있지만 일부 setuid 비트 가 누락되었습니다 . 다른 작업보다 먼저 수행해야 할 단계는 다음과 같습니다. 이 목록은 완전한 목록이 아니며 시스템을 거의 기능적으로 만들려는 시도에 불과합니다.

chmod -R go-w /
chmod 440 /etc/sudoers
chmod 640 /etc/shadow /etc/gshadow
chmod 600 /etc/ssh/*_key /etc/ssh*key   # whichever matches
chmod 710 /etc/ssl/private /etc/cups/ssl
chmod 1777 /tmp /var/tmp /var/lock
chmod 4755 /bin/su /usr/bin/passwd /usr/bin/sudo /usr/bin/sudoedit
chmod 2755 /var/mail /var/spool/mail

그런 다음 모든 권한을 모든 곳에서 복원해야합니다. 아래 /usr에있는 파일 의 경우 배포에 따라 다음 명령 중 하나를 사용하여 패키지를 다시 설치할 수 있습니다.

  • Debian, Ubuntu 또는 APT 기반의 다른 배포판을 사용하는 경우 다음을 실행할 수 있습니다. apt-get --reinstall install
  • Arch Linux를 사용 pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman하는 경우 Live CD에 있고 Arch 설치가에 설치되어 있다고 가정 하여 실행할 수 있습니다 /newarch.

/etc및 아래에있는 파일의 /var경우 작동하지 않습니다. 많은 파일 이 그대로 남아 있습니다. 작업중인 설치에서 권한을 복제해야합니다. /srv및 아래에있는 파일의 경우 /home어쨌든 백업에서 복원해야합니다. 보시다시피, 다시 설치할 수도 있습니다.


6
전문가가 아니라면 전체 재설치 또는 백업에서 복원하지 않고이 상황을 복구 할 가능성이 거의 없습니다. 시스템을 그대로 유지하는 것은 너무 위험합니다.
Arrowmaster

3
시스템에 사용자가있는 경우 유감입니다.
Jürgen A. Erhard

19

처음에는 눈치 채지 못할 수도 있지만 많은 일이 잘못 될 수 있습니다. 주요 문제는 전체 시스템의 전체 보안 모델이 손상되었다는 것입니다. 피부가없는 몸, 공기 중 장기가있는 것과 같습니다. 그것은 그런 기능을하기위한 것이 아니기 때문에 감염 될 수밖에 없습니다. 몇 분 동안 작동하는 것 같더라도이를 정리해야합니다.

가장 좋은 방법은 실제로 처음부터 시작하는 것입니다. 이렇게하면 위험을 크게 줄이고 시간을 단축 할 수 있습니다.적절한 백업이 있다면 너무 많은 경험을해서는 안됩니다.

정리를 시도하는 경우 주된 방법은 배포 파일 패키지 관리자에게 구성 파일 덮어 쓰기를 포함하여 시스템에 모든 것을 다시 설치하도록 지시하는 것입니다. 그런 다음 살펴보아야 할 검증 시스템을 사용하고 평범하지 않은 권한을 가진 파일로 플래그가 지정되지 않았는지 확인하십시오. 그런 다음 사용자 홈 디렉토리와 같은 작업을 수행하고 모든 권한을 제자리에있는 권한으로 재설정 한 다음 특수 권한이 ​​필요한 몇 가지 작업 (ssh 키 파일 등)을 통해 작업합니다. 마지막으로, 777로 표시된 모든 항목에 대해 전체 시스템을 찾고 목록을 살펴보고 (다른 단계를 철저히 수행 한 경우 크기가 작아야 함) 하나씩 진행하여 작업 방식을 그대로 유지하십시오.


그러나 보안 외에도 응용 프로그램 측면에서 무엇이 잘못 될 수 있습니까? 그들은 일을 중단 할 것인가? 아니면 보안이 가장 큰 관심사입니까?
Vinnycx

보안은 가장 큰 관심사이지만, 특히 데몬, 크론 등 로깅과 같은 많은 프로그램은 위험한 상황에 처하기보다는 여러 가지 이유로 실패합니다.
Caleb

cron은 777 때문에 작동을 멈출까요?
Vinnycx

1
여러 가지 cron 시스템이 있지만 crontab 파일이 월드 쓰기 가능일 때 자존하는 cron이 루트의 cron에서 작업을 실행하지 않아야합니다! 또한 cron 알림을 처리하는 메일 데몬은 다른 이유로 불평해야합니다.
Caleb

10

솔루션 : 나는 이것을 CENTOS에서 테스트했습니다.

이 사람은 내 직업을 구했다! (어쨌든 액세스해야합니다)

http://www.adminlinux.org/2009/07/how-to-restore-default-system.html

1) 파일 및 디렉토리에서 UID 및 GID를 재설정하려면

for u in $(rpm -qa); do rpm --setugids $u; done

2) 파일 및 디렉토리에 대한 권한

for p in $(rpm -qa); do rpm --setperms $p; done

그런 다음이 파일에 대한 수동 권한을 변경하십시오.

# ll /etc/ssh/
# chmod 600 /etc/ssh/ssh_host_rsa_key
# chmod 600 /etc/ssh/ssh_host_dsa_key
# service sshd restart

5

특정 파일에 사용 권한이 "느슨한"권한이 있으면 일부 보안 관련 프로그램이 시작되지 않습니다. @ceving이 말했듯 sshd이 가장 일반적인 것입니다.

잘못 될 수있는 가장 중요한 것은 이제 모든 사용자파일을 열고 읽고 쓸 수 있다는 것입니다 시스템의 을 것입니다. 이것이 악의적 인 두 가지 이유는 다음과 같습니다. A) 악의적 인 사용자가 악용 또는 구성 오류를 통해 시스템을 제어 할 수 있으면 시스템의 모든 내용을 수정할 수 있으며 B) 다음과 같은 경우에도 원하는 내용을 삭제할 수 있습니다. 당신은 루트가 아니기 때문에 루트로 실행되지 않는 대부분의 보호를 부정했습니다.

사전에 권한을 백업하지 않은 경우 약간의 상황에 처해 있습니다. 새로 설치된 시스템에서 권한 목록을 "가져온"다음 시스템의 모든 항목에 "적용"하는 스크립트를 만들 수 있습니다. 그래도 편리한 스크립트는 없습니다.


그러나 보안 외에도 응용 프로그램 측면에서 무엇이 잘못 될 수 있습니까? 그들은 일을 중단 할 것인가? 아니면 보안이 가장 큰 관심사입니까?
Vinnycx

권한이 너무 느슨한 경우 시작을 거부하는 두 응용 프로그램 만 있습니다. 보안이 가장 큰 관심사입니다. 그러나 시스템 안정성이기도합니다. rm -rf /일반 사용자로서 a 를 사용하면 시스템이 정지됩니다.
LawrenceC

어떤 응용 프로그램이 작동을 멈출 수 있습니까?
Vinnycx

SSH를 제외하고? 또 무엇이 실패 할 수 있습니까? 시스템을 잠시 동안 그대로 둘 수 있다면 지금해야합니다.
Vinnycx

5
@Vinnycx : 아니요. 고장났어 이를 해결하기 위해 우선 순위를 정해야합니다. 그렇지 않으면 서비스가 하나씩 실패하고 해커가 데이터를 먹지 않기를 기대합니다. / * @ 777을 그대로 두는 것은 옵션이 아닙니다.
Caleb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.