tmpreaper、--protect 和非 root 用户

tmpreaper、--protect 和非 root 用户

我有点困惑。我有一个下载目录,我想用 tmpreaper 删除 30 天前的所有文件。只有一个问题,有问题的目录是一个单独的分区,里面有一个 lost+found 目录,当然我需要保留它,所以我添加了 --protect 'lost+found',问题是 tmpreaper 输出:

error: chdir() to directory 'lost+found' (inode 11) failed: Permission denied
(PID 30604) Back from recursing down `lost+found'.
Entry matching `--protect' pattern skipped. `lost+found'

我尝试过其他模式,例如 lost* 等等...我以非 root 用户身份运行 tmpreaper,因为没有理由需要超级用户权限,因为我拥有所有文件(lost+found 除外)。

我是否被迫以 root 身份运行 tmpreaper?还是我的 shell 技能不如我想象的那么好?我猜问题是:

tmpreaper  will  chdir(2) into each of the directories you've 
specified for cleanup, and check for files matching the 
<shell_pattern> there.  It then builds a list of them,  and
uses that to protect them from removal.

有什么想法和/或建议吗?

我尝试运行的命令类似于

$ /usr/sbin/tmpreaper -t --protect 'lost+found' 30d /mydir 1> /dev/null
error: chdir() to directory `lost+found' (inode 11) failed: Permission denied

编辑:

Redmumba 注意到返回代码仍为零,文件已被删除。我之前肯定遇到过其他问题,因为当我写这篇文章时什么都没有被删除。无论如何,现在它正常工作了,谢谢。

答案1

lost+found目录是文件系统特定的,即使您更改权限,它们也会在root:root重新安装时自动恢复(甚至可能更早)。但是,因为听起来您不想删除那里的东西,所以听起来您指定的目录可能有问题。

例如,假设您要删除/tmp位于单独分区中的 内的文件。如果您运行tmpreaper --protect 'lost+found' /tmp/*,它将chdir进入/tmp/lost+found 然后应用 shell glob——但它会因您看到的权限问题而失败。当您为 指定目录时tmpreaper,只需使用父目录——即tmpreaper --protect 'lost+found' /tmp

希望这是你的问题...如果不是,请更新更多信息(例如你正在使用的确切命令),我们会尝试让你回到正轨!

编辑:所以我在本地设置了它,我注意到它成功完成了。它似乎只打印出错误消息,但没有对其做出反应——即它返回 0,表示成功。我最初以为它失败了,但事实似乎并非如此。听起来提交错误可能是合理的,并详细说明,因为我不认为这是预期的行为。

相关内容