/var(또는 다른 시스템 디렉터리)에서 손상된 권한 수정

/var(또는 다른 시스템 디렉터리)에서 손상된 권한 수정

간단히 말해서, 나는 /var그것을 파기하고 백업에서 복원했습니다. 그러나 백업에는 올바른 권한이 설정되지 않았으며 이제 모든 것은 /var루트가 소유합니다. 이는 일부 프로그램을 불행하게 만드는 것 같습니다.

/var/cache/man제안된 대로 fopen이 실패하는 문제를 해결했습니다 .여기/var/lib/apache2apache2가 시작되지 않습니다( ~에 소유권을 부여하여 www-data). 그러나 이제 모든 문제를 해결하는 유일한 방법은 문제가 발생할 때 권한을 수동으로 변경하는 것 같습니다. 프로그램에 문제가 발생할 때까지 기다려야 하고 일부 파일에 대한 권한 문제를 식별 /var하고 그런 다음 직접 설정하십시오.

이 문제를 해결하는 쉬운 방법이 있습니까? aptitude reinstall x(일반)에 나열된 모든 패키지를 다시 설치해 보았지만 dpkg -S /var작동하지 않습니다.

답변1

적어도 문서에서는 실제로 작동 apt-get --reinstall install package해야 합니다 .

➜  ~  ls -l /usr/share/lintian/checks/version-substvars.desc        
-rw-r--r-- 1 root root 2441 Jun 22 14:19 /usr/share/lintian/checks/version-substvars.desc
➜  ~  sudo chmod +x /usr/share/lintian/checks/version-substvars.desc
➜  ~  ls -l /usr/share/lintian/checks/version-substvars.desc        
-rwxr-xr-x 1 root root 2441 Jun 22 14:19 /usr/share/lintian/checks/version-substvars.desc
➜  ~  sudo apt-get --reinstall install lintian  
(Reading database ... 291736 files and directories currently installed.)
Preparing to unpack .../lintian_2.5.27_all.deb ...
Unpacking lintian (2.5.27) over (2.5.27) ...
Processing triggers for man-db (2.6.7.1-1) ...
Setting up lintian (2.5.27) ...
➜  ~  ls -l /usr/share/lintian/checks/version-substvars.desc
-rw-r--r-- 1 root root 2441 Jun 22 14:19 /usr/share/lintian/checks/version-substvars.desc

/var이제 디렉터리에 파일이 포함된 모든 패키지를 가져오지 못할 수 있으므로 다음을 수행하는 것이 좋습니다.모두 찾아보세요:

➜  ~ find /var -exec dpkg -S {} + 2> /dev/null | grep -v "no path found" | wc -l 
460

제 경우에는 패키지가 포함된 460개의 경로를 차지했습니다. 동일한 패키지가 여러 경로를 가질 수 있다는 점을 고려하면 실제로는 더 적습니다. 일부 후처리를 통해 약 122개의 경로가 있음을 알 수 있습니다.

➜  ~  find /var -exec dpkg -S {} + 2> /dev/null | grep -v "no path found" | cut -d : -f 1 | sort | uniq | wc -l
122

물론 이는 동일한 경로를 가진 여러 패키지를 계산합니다 wamerican, aspell-en, ispanish, wspanish, aspell-es, myspell-es. 예를 들어 다음과 같이 수정하기 쉽습니다.

➜  ~  find /var -exec dpkg -S {} + 2> /dev/null | grep -v "no path found" | cut -d : -f 1 | sed 's/, /\n/g' | sort | uniq | wc -l
107

/var따라서 모든 종류의 파일이나 하위 디렉터리를 포함하는 107개의 패키지가 있습니다 . 다음을 사용하여 다시 설치할 수 있습니다.

sudo apt-get --reinstall install $(find /var -exec dpkg -S {} + 2> /dev/null | grep -v "no path found" | cut -d : -f 1 | sed 's/, /\n/g')

이렇게 하면 권한이 수정됩니다.

이제 또 다른 옵션이 있습니다. 올바른 설치를 찾고 설치 파일 권한을 복사하는 것입니다.

chmod --recursive --reference good/var bad/var

답변2

방금 이 블로그에서 이 문제가 매우 잘 처리된 것을 보았습니다.

https://matoski.com/article/debian-restore-var-ownership-permissions/(Archive.org)

요약:

방법 1: 가상 머신

방법 2: 데비안 패키지에서

방법 3: 적성을 사용하여 다시 설치

관련 정보