/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

おすすめ記事