/루트에서 실수로 chown이 발생했습니다.

/루트에서 실수로 chown이 발생했습니다.

실수로 루트로 다음 명령을 실행했습니다. chown mike -Rf / backups 요점은 / 사이에 공백을 추가하고 실수를 백업했다는 것입니다. 1-2초 후에 명령을 중지했습니다. 이 문제를 어떻게 복구할 수 있습니까? 현재 DirectAdmin에 문제가 있습니다. 예를 들어 DirectAdmin에 액세스할 때 오류가 발생합니다.

Unable to determine Usertype
user.conf needs to be repaired
http://help.directadmin.com/item.php?id=456

아니면 이메일 수신을 중단했는데 지금 또 무슨 일이 일어나고 있는지조차 모르겠습니다...

답변1

시스템은 소유권 개정을 추적하지 않으므로 백업으로 되돌리지 않고 이를 다시 변경할 수 있는 방법이 없습니다.

가장 좋은 방법은 지금 백업하는 것입니다. 그러면 추가 변경 사항이 롤백될 수 있습니다.

시스템에 패키지를 다시 설치하면 대부분의 소유권 문제가 해결될 수 있습니다. Debian/Ubuntu에서는 다음을 수행합니다.

apt-get install --reinstall package

문제를 일으키는 모든 것과 rpm같은 기반 시스템 에서 . rpm -Uvh --force package.rpm올바르게 설정되면 패키지는 변경한 구성 파일을 덮어쓰지 않습니다.

다른 유사한 시스템이나 백업이 있는 경우 원래 소유권 정보를 검색하여 시스템에 적용할 수 있습니다. 먼저 사용하고 싶은 파일 및 디렉토리 목록을 만드십시오.

find / -user mike

해당 목록을 사용하여 백업 또는 유사한 시스템에서 마이크 소유가 아닌 파일을 찾습니다.

답변2

이는 실행 중인 OS에 따라 다릅니다.

Solaris 10 이하인 경우 다음 명령을 사용하여 패키지에 속한 파일 및 디렉터리에 영향을 미치는 모든 소유자 문제를 해결할 수 있습니다.

pkgchk -f

Solaris 11에서는 다음과 같습니다.

pkg fix

AIX에도 비슷한 패키지 수정 명령이 있다고 생각합니다.

RPM 기반 OS(Red Hat, Fedora 등)를 실행하는 경우 다음을 실행할 수 있습니다.

rpm -aV

패키지 데이터베이스와 일치하지 않는 파일 및 디렉터리를 검색합니다. 그런 다음 다음을 실행하여 문제를 해결할 수 있습니다.

rpm --setugids <package-name>

하지만 영향을 받는 각 패키지 이름을 전달해야 합니다. 또는 간단히 다음을 실행할 수도 있습니다.

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

데비안 기반 OS를 실행하는 경우 파일 소유권이 패키지 데이터베이스에 저장되지 않으므로 소유권을 복원하기 위한 참조로 백업을 사용하거나 동일한 시스템에 대해 유사한 시스템을 찾아야 합니다. .

답변3

나는 문장 끝의 인쇄상의 오류로 인해 똑같은 실수를 저질렀습니다.

chown -R root:root /folder/subfolder /

슬래시 앞의 공간을 인식하지 못했습니다 :(

다행히 여기에서 질문하여 마침내 설치된 다른 데비안 서버에서 소유자와 그룹을 가져와 문제를 해결했습니다. 해당 서버에서 나는 다음을 수행했습니다.

find / -not -path '/proc/*' -not -path '/var/www/*' -not -path '/home/*' ! \(  -name root -o  -group root \) | xargs stat --format 'chown %U:%G %n' | sort -k 2,3 > chown_owner_and_group.sh
chmod +X chown_owner_and_group.sh

그런 다음 파일 소유자와 파일 그룹을 복원해야 하는 서버에 파일을 복사하고 다음을 수행했습니다.

./chown_owner_and_group.sh

답변4

유감스럽게도 귀하가 가진 유일한 해결책은 동일한 배포판의 다른 설치와 비교하고 소유자를 올바르게 재설정하는 것입니다.

관련 정보