我正在使用 auditctl 记录在我的 Ubuntu 系统上运行的所有命令,并且我正在编写一个脚本,将日志解析为更易读的格式。由于这些日志往往会变得非常大,因此我想定期删除这些日志。我发现通过运行
sudo rm /var/log/audit/*
我会得到
rm: cannot remove `/var/log/audit/*': No such file or directory
但是通过运行
sudo su
rm /var/log/audit/*
日志会被删除,没有任何问题。这可能是什么原因造成的?
答案1
文件名扩展是导致该问题的原因。
该 shell 正在以您当前的非 root 用户身份扩展 /var/log/audit/*。
由于该用户没有 /var/log/audit 的读取/执行权限,因此传递的是 rm,而不是该目录中要删除的文件列表,文字字符串
/var/log/audit/*
rm 是正确的 - /var/log/audit 中没有名为“*”的文件 - 所以它无法删除它。
尝试这个:
sudo 'rm /var/log/audit/*'
或者可能:
sudo sh -c 'rm /var/log/audit/*'