jay*_*ica 7 permissions debian system-recovery
长话短说,我/var从备份中销毁并恢复了它 - 但备份没有设置正确的权限,现在所有/var内容都归 root 所有。这似乎让一些程序不高兴。
我已经/var/cache/man按照此处的建议修复了 apt 失败 fopen以及 apache2 无法启动(通过赋予/var/lib/apache2to所有权www-data)。但是,现在解决所有问题的唯一方法似乎是在出现问题时手动处理权限 - 这似乎非常困难,因为我必须等待程序开始出现问题,确定问题与权限有关一些文件,/var然后自己设置它们。
有没有简单的方法来纠正这个问题?我已经尝试重新安装 (plain aptitude reinstall x) 中列出的每个包dpkg -S /var,但这没有用。
实际上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
Run Code Online (Sandbox Code Playgroud)
现在,您可能没有获得/var目录中包含文件的所有软件包,因此最好全部找到它们:
? ~ find /var -exec dpkg -S {} + 2> /dev/null | grep -v "no path found" | wc -l
460
Run Code Online (Sandbox Code Playgroud)
在我的例子中,它占了 460 个有一个包的路径,如果你考虑到同一个包可以有多个路径,这实际上更少,通过一些后期处理我们可以发现大约 122 个:
? ~ find /var -exec dpkg -S {} + 2> /dev/null | grep -v "no path found" | cut -d : -f 1 | sort | uniq | wc -l
122
Run Code Online (Sandbox Code Playgroud)
这当然会计算具有相同路径的几个包,例如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
Run Code Online (Sandbox Code Playgroud)
所以,我有 107 个包,它们在/var或子目录中有任何类型的文件。您可以使用以下方法重新安装它们:
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')
Run Code Online (Sandbox Code Playgroud)
这应该修复权限。
现在,还有另一种选择,找到一个好的安装并通过以下命令复制文件权限:
chmod --recursive --reference good/var bad/var
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4510 次 |
| 最近记录: |