使文件只能从脚本中写入和可见

making a file only writable and visible from a script

我想索引一些文件并将注册表作为我在 BASH 中编写的实用程序的一部分。因此,我的工具将转到一个巨大的目录,并将它在其中找到的每个文件的一些基本信息写入另一个我想调用的文件 "myregistry." 该文件只会在用户要求时被重写 - 因为去通过大型文件结构和 "indexing" 这种方式将花费大量时间。

我希望当用户在包含该文件的目录中执行 ls 时不显示该文件。此外,我希望用户完全没有权限 - 用户不应该能够在 vim 或任何东西上打开它,甚至不能只是看它。

但是,如果用户再次执行我的脚本,我希望用户可以选择从那里从文件中获取一些信息。如果用户提示,我还希望脚本有权查看文件并从中添加或删除内容。但是用户不能直接对它做任何事情。

我该怎么做?它需要使用 chmod 但我不知道如何将它们组合在一起。

我在想:

# Enable write permission
# Do Something - ensure that no one else is writing to this file
# Disable write permission

像这样的作品? write_index和read_index是你的作品。

cd massive_dir
TFILE=$(mktemp --tmpdir=.)
write_index >$TFILE
mv -f $TFILE .index
chmod a-rw .index

阅读

chmod +r .index
read_index .index
chmod -r .index

请注意,由于有临时文件,因此不需要锁定。 mv 是原子的。

在 Unix 上,您或多或少与同一用户下 运行 的其他进程处于同等地位。你能做什么,他们也能做什么。如果您可以隐藏和取消隐藏某些内容,那么他​​们也可以。解释脚本需要 运行 的读取权限,因此您无法在可执行文件中隐藏任何秘密。但是,如果可以,将您的软件作为二进制文件分发,您将能够 运行 而不是可读的。然后您可以将秘密硬编码到二进制文件中,并使用它来加密和解密文件。用户将能够 运行 您的二进制文件,但只有超级用户才能获取秘密并解密您的注册表。这是真正的安全性(针对普通(非 root)用户)(特别是如果您设法在安装时创建并嵌入秘密)。

使用点文件和权限不会欺骗任何高级用户。