一些使用配置文件的 Linux 程序要求我在其中一个配置文件中以纯文本形式输入密码。例如 newsbeauter,如果我想阅读 google reader 信息,rss reader 要求我在 ~/.newsbeauter/config 中输入我的 google 帐户密码。Mutt 也要求在文本文件中输入密码,但提供了在每次登录时输入密码的选项。
有没有安全的解决方法可以将密码存储在这样的配置文件中(例如 newsbeauter)?我原本想以 root 身份运行该应用程序,但这似乎不对。或者每次使用该应用程序时都会以某种方式创建和删除该文件。
有任何想法吗?
答案1
调整权限无法防止有权访问您的磁盘(被盗的笔记本电脑)的对手。
您无法防范在您正在运行的系统上拥有 root 权限的对手,但您可以使用以下两种技术保护自己免遭被盗磁盘或各种不太智能的恶意软件的攻击:
设置一个小型加密文件系统(例如使用 dm-crypt 或 truecrypt),然后用指向加密分区中某个位置的符号链接替换配置文件。这很容易部署,但在安装加密文件系统时会让您面临风险
mount encrypted fs under /mnt/crypt cp ~/.application/config /mnt/crypt/app-config ln -s /mnt/crypt/app-config ~/.application/config unmount encrypted fs to lock config
用命名管道 (mkfifo) 替换配置文件。只有当应用程序一次性读取配置时,这种方法才会有效;启动时,应用程序将阻止读取配置文件,直到您将其写入命名管道。然后,您可以将文件的加密版本存储在其他地方(例如使用 gpg);需要时,使用 gpg 解密内容并将其动态发送到管道。这更安全一些,因为您必须手动允许每次访问文件,但可能不太方便。
# setup gpg -e -r [email protected] <~/.application/config ~/.application/config.pgp mkfifo ~/.application/config # run application, application hangs waiting for config gpg -d <~/.application/config.pgp >~/.application/config
答案2
以 root 身份运行非关键软件几乎从来都不是一个好主意。
你应该做的是更改这些文件的权限,以便只有你(运行这些程序的用户)可以读取它们。要删除除你之外任何人对文件的读取、写入和执行权限mine.conf
,你需要在你的帐户下
chmod og-rwx mine.conf
答案3
或者另一个技巧是将配置文件放在目录中,但也取消对此的读取权限,以便您无法看到里面的内容,只需执行
chmod ar 无论/
因此,如果您是 root 用户,您只能查看其中的内容,或者您只记得文件的名称,但您仍然可以对其中的文件执行所有操作,只要您知道文件名或如果您是 root 用户,就可以执行
sudo ls 无论/