我不小心删除了我的/var/log
文件夹
我如何才能重新创建该文件夹(并进行日志记录工作)。
我遇到了 Apache 的一些问题,并且我看不到任何日志,因为该/var/log
文件夹不再存在。
答案1
在我的系统中我有这个:
% ls -lad /var/log
drwxr-xr-x 21 root root 12288 Nov 8 16:01 /var/log
所以我的第一次尝试是重新创建它并重新启动......(没有保证:从来没有尝试过,而且我现在也没有时间设置虚拟机来尝试一下......)
sudo mkdir /var/log
sudo chmod 755 /var/log
我希望各种守护进程能够正确地重新填充目录。
答案2
显然,最好的答案是……好吧,不要这么做。如果你确实这么做了,只需从系统的最新备份中恢复即可。
您一直在使用类似时间移位的技术进行系统备份,对吗?
好吧,假设情况并非如此(这也是为什么连我自己都来到这里的原因),...答案是,您可能能够重新创建 /var/log 目录和其他各种目录,然后一切就绪了。您安装的其他服务(例如 nginx、teamviewer)可能无法正常工作(和/或无法正确记录),除非您手动重新创建必要的目录(或卸载并重新安装这些服务)。
以下命令将重新创建任何缺失的目录(但需要记录才能工作),然后使用默认所有权和权限配置它们。如果您更喜欢使用脚本,请参阅我的片段用那个来代替。
sudo mkdir -p /var/log
sudo chown root:syslog /var/log
sudo chmod 765 /var/log
sudo mkdir -p /var/log/journal
sudo chown root:systemd-journal /var/log/journal
sudo chmod 2755 /var/log/journal
sudo setfacl -Rnm g:adm:rx,d:g:adm:rx /var/log/journal
sudo mkdir -p /var/log/cups
sudo chown root:root /var/log/cups
sudo chmod 755 /var/log/cups
sudo mkdir -p /var/log/unattended-upgrades
sudo chown root:adm /var/log/unattended-upgrades
sudo chmod 750 /var/log/unattended-upgrades
sudo mkdir -p /var/log/hp
sudo chown root:root /var/log/hp
sudo chmod 755 /var/log/hp
sudo mkdir -p /var/log/hp/tmp
sudo chown root:lp /var/log/hp/tmp
sudo chmod 775 /var/log/hp/tmp
sudo mkdir -p /var/log/speech-dispatcher
sudo chown speech-dispatcher:root /var/log/speech-dispatcher
sudo chmod 700 /var/log/speech-dispatcher
对于 nginx:
sudo mkdir -p /var/log/nginx
sudo chown root:adm /var/log/nginx
sudo chmod 755 /var/log/nginx
sudo nginx -t
后运行这些命令,重启系统。这是因为需要这些更改的各种服务已经启动,并且大多数服务不会在不重新启动的情况下自动恢复日志记录(一个人可以这样做,但我不知道所有受影响的服务,也不打算记录相关步骤,因为只需重新启动系统即可解决问题)。
注意:有些服务会根据需要自动创建目录(例如,/var/log/apt、/var/log/gdm3、/var/log/private)并正确创建(即具有正确的所有权和权限),所以我没有包含管理这些目录的命令。
这些程序是在 Ubuntu 20.04.03 上执行和测试的。我不知道这些程序对哪些其他版本的 Ubuntu 或 Debian 是正确的。
此外,这专门针对 Ubuntu / Debian。其他发行版(例如 Red Hat / Fedora)会有一些差异(例如,/var/log/journal 的 acl 也会包括组 wheel)。
最后,如果您没有使用默认设置或已在系统上执行了安全强化,这些过程可能并不完全符合您的要求,因为它们将恢复为安装时使用的默认设置(或者,至少是我在系统上看到的默认设置,我用它来确定需要进行哪些更改)。