防止用户在 linux 上编辑文件

Aki*_*oss 4 linux fedora

我知道这听起来很奇怪,但我只需要允许脚本写入某个文件。

该文件归 root 所有,一些用户具有 sudo 或 root 访问权限。他们有时手动编辑文件,但这是错误的,因为有一些脚本可以正确编辑文件(而这些用户则错误地编辑)。

所以,我希望只有那些脚本有权编辑文件,而任何用户都不能编辑,而只能读取该文件。

有可能做这样的事情吗?我知道这很愚蠢,因为他们拥有管理员权限,但是,至少我想让手动编辑文件变得困难......当然,脚本可以修改,所以如果有可能获得“脚本-only access token”授予对此类文件的写访问权限,脚本可以相应地更改。

Suk*_*uku 6

由于您的“某些用户”对机器具有 sudo 或 root 访问权限,因此并非完全可能。因为你作为 root 做的每一件事都可以被他们还原。所以,你唯一能做的就是归因。因此,这使他们难以修改文件,但由于我在第一句话中提到的相同原因,仍然不能完全证明。

使用以下命令,您可以将属性设置为文件:

chattr +i /path/to/file
Run Code Online (Sandbox Code Playgroud)

其中 +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
Run Code Online (Sandbox Code Playgroud)

例子 :

http://www.cyberciti.biz/faq/linux-write-protecting-a-file/

http://www.cyberciti.biz/tips/linux-password-trick.html