recursionSudo权限

我正在为我们的第一线支援团队设立专门的sudo。 我想授权他们删除/var/log/任何内容。 下面的命令只适用于直接在/var/log/而不是其子目录中的文件。 如果他们尝试从/var/log/directory/file_name中删除,则不允许删除该文件。 我已经尝试了一些阅读,但无法弄清楚如何改变这个命令,使权限recursion。 任何意见,将不胜感激。

 %front_line ALL=(ALL) NOPASSWD: /bin/rm /var/log/* 

我认为你做错了TM 。 你不能只删除这样的日志文件,你大多需要重新启动生成日志文件的相关守护进程。 服务器故障充斥着删除日志文件的人的问题,然后在某个未来的日子“意外”耗尽了磁盘空间。

许多写入/ var / log的守护进程在启动时打开文件,然后将文件保持打开状态直到它们重新启动,或者(如果编程为这样)closures并在发送信号时重新打开文件。 这意味着当你删除文件时,它仍然是开放的,占用磁盘空间和增长。

另外请注意,注释中的“解决scheme”可能会删除可能导致守护进程无法正确启动的任何子目录,因为其日志文件的path不存在。

为了做到这一点,你必须详细分析你的一线员工需要做什么和哪些文件。 然后你需要弄清楚删除某个文件是否安全,或者是否需要重启守护进程。 这似乎并不像你想的那么简单。

那么,这不是一个答案,但我build议你永远不要使用*与二进制文件一起使用* 。 试想下面的命令的结果

 rm -rf /var/log/../../* 

您的规则集允许执行此命令。 您需要更仔细地删除您的规则集。 尽量避免*尽可能多。