允许sudo删除某些文件

我想允许删除/ tmp目录中的某些文件来sudo用户。 我为sudo用户添加了Allow_Cmnd /usr/sbin/userdel ,但不会删除与用户关联的所有/ tmp文件。

那么我应该如何调整sudoers,让它们只删除/ tmp目录中的某些文件。 我GOOGLE了一下,但得知正则expression式可能是在这个应用程序。 我尝试了一些调整,但它不为我工作。

我希望用户有能力执行命令,如

 find /tmp -uid 10002 | grep joeuser | xargs rm -rf 

最好的办法是写一个脚本,做你想做的。 你可以在那里做广泛的合理性检查,检查用户是否只做他们被允许的东西,等等。 然后只允许脚本从sudo运行。

/bin/bash -c "find /tmp -uid 10002 | grep joeuser | xargs rm -rf" ,甚至比较简单的find /tmp -uid 10002 -path \*joeuser\* -delete

正如已经指出的那样,使用xargs这种方式不是一个好主意。 您可以使用find -print0 | xargs -0 find -print0 | xargs -0 ,或者我个人的build议是: find /tmp -uid 10002 -path \*joeuser\* -depth -exec rm -rf {} + 。 如果您的版本find不支持+ ,则可以使用\; 代替。

我相信一个写得好的脚本将是你最好的select。 但是,这实际上取决于总体目标以及devise的计划如何……您想要删除属于执行脚本的用户的/ tmp中的文件还是脚本接受UID和用户名的参数?

有明显的安全问题,你需要非常小心。 在testing过程中,我不会进行实际的删除操作,而是logging(输出)如果删除代码已经到位,“将”被删除的文件。 然后再testing三次以确定。

最后,根据您的需要,另一个选项是编写一个更通用的脚本,并通过cron将其安排在特定date/时间运行,以自动执行该过程。

BTW:

/ usr / sbin / userdel不是你想要的命令。 这是为了删除本地用户帐户。

-Brendan