최근에 명령을 입력했습니다
sudo chmod 777 -R /
그 후 같은 것들
sudo -i
정상적으로 작동하지 않습니다. 폴더 권한을 원래 상태로 재설정 할 수있는 방법이 있는지 궁금합니다.
최근에 명령을 입력했습니다
sudo chmod 777 -R /
그 후 같은 것들
sudo -i
정상적으로 작동하지 않습니다. 폴더 권한을 원래 상태로 재설정 할 수있는 방법이 있는지 궁금합니다.
답변:
이다 가능한 이 지저분한 상황에서 돌아올 수 있습니다.
나는 같은 종류의 문제 (필자가 작성한 스크립트의 버그)를 다시 실행하여 해결했지만 전문가의 도움을 요청해야합니다. 매우 조심하십시오!
첫째, 이중 부팅 시스템 (우분투 및 이전 Fedora 설치)이 있었기 때문에 상황을 해결하기가 쉽지만 CD / DVD 또는 USB 키에서 OS를 실행하면 동일한 작업을 수행해야합니다.
MPOINT=/mount/ubuntu
먼저 파일 시스템을 다음과 같이 마운트했습니다 (마운트 포인트를 만드는 것을 잊지 마십시오).
mount /dev/ubuntu/root $MPOINT
mount /dev/ubuntu/home $MPOINT/home
그런 다음 실행중인 시스템에서 지저분한 시스템으로 권한을 복사하기 위해 다음 명령 (내 문제는 몇 가지-중요-디렉토리에만 있음)을 실행했습니다 (사실, 필자는 페도라에서 Virtual Box에 Ubuntu 시스템을 설치했습니다) 거기에 권한을 얻었습니다) :
find /etc /usr /bin /sbin -exec stat --format "chmod %a \"${MPOINT}%n\"" {} \; > /tmp/restoreperms.sh
그런 다음 restoreperms.sh 스크립트를 실행했습니다.
우분투에서 다시 부팅 할 수있었습니다.
restoreperms.sh의 내용은 다음과 같습니다.
(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)
나는 그것을 테스트하지 않았지만 소유자와 소유자 그룹에서도 작동해야합니다. 다음과 같은 것 :
find /etc /usr /bin -exec stat --format 'chown %U:%G ${MPOINT}%n' {} \; > /tmp/restoreperms.sh^
(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)
물론 UID와 GID는 두 시스템에서 동일하지만 시스템 관련 사용자 및 그룹의 경우 문제가되지 않도록주의해야합니다.
편집하다:
또한 owner 를 설정 하면 SGID 및 SUID 플래그가 무효화 되어 이상한 문제가 발생합니다 (예 : 권한이 4755가 아니면 sudo를 수행 할 수 없음). 소유자를 설정 한 후에 만 권한을 설정해야합니다 . 소유자 정보와 함께 완전한 파일 권한 정보를 저장하십시오.
Rk :
이제는 cronjob 에서이 명령을 사용하여 해당 정보를 유지하기 위해 매일 (몇 주일 수 있음) 실행됩니다. 다음 번에는 솔루션을 더 쉽게 만들지 만 물론 지금은 가지고 있기 때문에 다시는 발생하지 않습니다. ;-) 이 같은:
0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2
0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2
올바른 (결합 된) 명령은 다음과 같습니다.
`/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_fileperms.$(/bin/date +%w).sh.bz2`
파일 이름의 괄호 (예 : 로케일)를 설명하기 위해 추가주의가 필요할 수 있으며 chown은 chmod에 의해 설정된 setuid 및 setgid 비트를 자동으로 설정 해제 할 수 있습니다. 후자의 경우 (/ bin / su 및 / usr / bin / sudo)는 위의 exec 절 순서를 바꿔야 할 수도 있습니다.
부팅시 sudo 를 복구 하거나 복구 모드 를 선택한 후
그것은 사용하여 전체 시스템을 복구하는 것이 가능 debsums을 파일 무결성 및 권한 verifiy 그.
매뉴얼 페이지에서 :
apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)
변경된 파일로 패키지를 다시 설치합니다
또는 특정 경로로 제한됩니다. 예 : /usr
:
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)
또는 여러 경로 세트로 제한됩니다. 예 : /sbin /etc /var
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var ) | cut -d : -f 1 | sort -u)
chmod a-x /bin/ping
하고 debsums -c
해당 파일을보고하지 않을 것입니다.
내가 아는 한, System V 패키지와 RPM만이 파일 권한을 복구하는 명령을 제공합니다. System V (Solaris)에서는 pkgchk이고 RPM에서는 rpm --setperms입니다.
불행히도 데비안 / 우분투 패키지에는 그러한 명령이 존재하지 않는 것 같습니다.하지만 여기서 잘못되었을 수 있습니다.
그러나 이러한 명령의 도움을 받아도 시스템을 정상 상태로 되 돌리는 것은 쉬운 일이 아니며 시스템을 복구하여 시스템에 새로운 해를 끼칠 수 있습니다.
요셉이 말한 것 외에는, 당신은 첫 번째 사람이 아니며, 그러한 명령을 마지막으로 입력 한 사람은 아닙니다. 그러나 유닉스 시스템에서 파일 권한을 777로 변경한다는 아이디어만으로도 이런 종류의 시스템에 익숙하지 않다는 강력한 증거입니다. 이 상황에서 수행 할 수있는 최선의 방법은 다시 필요한 항목 (홈 디렉토리, 구성 파일, 메일 파일)을 백업하고 새로 설치하는 것입니다.
그리고 손상된 백업 파일을 복원 할 때는 매우주의해야합니다.
행운을 빕니다!
추신 : 나는 당신이 어떤 종류의 문제를 해결하고 싶었는지 궁금합니다.