我正在为我们的第一线支持团队设置专门的 sudo。我想授权他们删除 中的任何内容/var/log/
。但是,下面的命令仅适用于 中的文件/var/log/
,而不适用于其子目录中的文件。如果他们试图从中删除,/var/log/directory/file_name
则不允许删除该文件。我尝试阅读了一些内容,但无法弄清楚如何更改此命令以使权限递归。任何建议都将不胜感激。
%front_line ALL=(ALL) NOPASSWD: /bin/rm /var/log/*
答案1
我想你是做错了TM。您不能就这样直接删除日志文件,您通常需要重新启动生成日志文件的相关守护进程。Server Fault 中充斥着删除日志文件后在将来某个日期“意外”耗尽磁盘空间的人提出的问题。
许多写入 /var/log 的守护进程在启动时打开文件,然后保持文件打开,直到重新启动,或者(如果编程这样做)它们在收到信号时关闭并重新打开文件。这意味着当您删除文件时,它仍然处于打开状态,占用磁盘空间并不断增长。
还要注意,评论中的“解决方案”可能会删除任何可能导致守护进程无法正确启动的子目录,因为它们的日志文件的路径不存在。
为了正确执行此操作,您必须详细分析您的一线员工需要做什么以及针对哪些文件。然后,您需要确定删除特定文件是否安全,或者是否也需要重新启动守护程序。这项工作并不像您想象的那么简单。
答案2
好吧,这不是答案,但我建议你永远不要,绝不*
与 等二进制文件一起使用rm
。想象一下以下命令的结果
rm -rf /var/log/../../*
您的规则集允许执行此命令。您需要更谨慎地开发规则集。*
尽量避免。