使初始化脚本的锁定文件不可变是一个好习惯吗?

使初始化脚本的锁定文件不可变是一个好习惯吗?

我最近创建了一个初始化脚本,并决定将锁定文件设置为不可变以防止外部干扰。我能想到的唯一缺点是,如果有人想递归删除 /var/lock,他们可能会遇到问题。当进程通过脚本停止时,init 脚本会在删除文件之前删除不可变标志。

这是一个坏主意吗?为什么我不经常看到它?是不是太过分了?如果有人在没有初始化脚本的情况下设法停止进程,则下次使用任何参数调用脚本时,锁定文件将被删除。

答案1

至少在我的系统上/var/lock(或者实际上/run/lock,前者是后者的符号链接)设置了粘性位。这意味着只有锁定文件或目录的所有者才能删除它,而任何对目录进行写操作的人都不能删除它(同样的方式/tmp)。在其他发行版上,该目录只能由少数用户写入(因此随机用户根本无法干扰它)。

因此,唯一可以破坏(删除)守护进程锁定文件的用户是:

  1. root(当然 root 可以做任何事情)
  2. 您创建锁定文件的用户(听起来又像root,但如果您不尝试的话,也可能是您的守护程序的专用用户chattr
  3. root我的系统上锁定目录的所有者

或者,如果以其他方式设置,您可以添加“ lock(或任何)组的成员”,这通常只是系统守护程序的用户。

可以读/写锁定文件的用户像平常一样由锁定文件的权限控制,并且写入希望仅限于 root 和守护程序的用户。

如果root造成“外部干扰”,那么您遇到的问题比他/她rm使用锁定文件要大得多。因此,您不应该这样做 - 它不会添加任何保护,并且在尝试修复某些问题时可能会给系统管理员带来意外。

不可变标志通常仅由系统管理员应用。

相关内容