我知道这可能听起来很奇怪,但我需要只允许脚本写入某个文件。
该文件的所有者是 root,而某些用户拥有 sudo 或 root 访问权限。他们有时会手动编辑该文件,但这是错误的,因为有些脚本可以正确地编辑该文件(而这些用户的操作是错误的)。
因此,我希望只有这些脚本才有权编辑该文件,而任何用户都不能编辑,而只能读取该文件。
可以做这样的事情吗?我知道这很愚蠢,因为他们有管理员权限,但是,至少我想让手动编辑文件变得困难...当然,脚本可以修改,因此,如果可以获得授予此类文件写访问权限的“仅脚本访问令牌”,则可以相应地更改脚本。
答案1
由于您的“某些用户”对机器具有 sudo 或 root 访问权限,因此这并非完全可行。因为您以 root 身份执行的每项操作都可以由他们恢复。因此,您唯一能做的就是归因。因此,这会给他们修改文件带来一些困难,但由于我在第一句话中提到的相同原因,这仍然不是完全的证据。
使用以下命令可以设置文件属性:
chattr +i /path/to/file
其中 +i 表示不可变。因此,没有人可以在不删除属性的情况下编辑文件。因此,在您的脚本中,您可以执行以下操作:
...
chattr -i /path/to/file # remove the immutable attribute of the file at the beginning of your script
...
...
...
...
chattr +i /path/to/file # attribute the file at the end of your script
例子 :
答案2
如果他们有 root 权限,那么一切都将不复存在……这取决于他们有多精明。一种不雅的方法是设置不可变位在您的文件上。只要设置了该属性,它就无法修改。然后更改脚本以在更新文件之前删除该属性,然后再将其设置回来。希望您的用户不会注意到该属性,并且他们的编辑尝试将是徒劳的。
显然,最重要的是用户教育。我们不应该因为白痴们不停地砸自己的拇指而禁止使用锤子 ;)
答案3
让脚本生成文件的第一行
#### WARNING: THIS FILE IS GENERATED AUTOMATICALLY. DO NOT EDIT BY HAND
正如其他人所说,如果他们有根,你就无法阻止他们。