在我的工作场所,远程工作人员需要使用 VPN,每次启动时都会要求输入用户名和密码。由于这非常麻烦,我在 Google 上搜索了一种从命令行传递凭据的方法,并将其设为我的 中的别名.zshrc
。我知道这对安全性不利,因为任何用户都可以读取该文件。正确的做法是什么?请记住,我不能使用 SSH 密钥之类的东西。
现在我已经写完了,我有了一个想法:对chmod 600
我的.zshrc
文件来说这足够了吗?或者也许是chmod
一个文件夹,将凭据存储在单独的文件中,然后将cat
它们放入命令行上的适当位置。这样可以吗?
答案1
~/.zshrc 无需全球可读——chmod 600
如果您愿意,您可以将其和所有其他配置文件一起设置。同样,您可以设置任何目录,使其内容对其他人不可访问。(如果您想同时对文件和目录进行递归操作,chmod 700
也可以使用chmod go=
或应用更改。)chmod go-rwx
(您甚至可以配置 pam_umask 来为您的登录设置 077 的“umask”,这样所有新文件都将是 0600 而不是 0644。)
虽然在单用户个人计算机中这可能无关紧要,因为大多数攻击要么来自离线磁盘访问(绕过操作系统),要么来自已经在您自己的帐户下运行的恶意软件(因此无论如何都可以读取您的文件)。
在现在罕见的情况下,当人们想要保持 ~/.zshrc 全世界可读(例如在共享社区服务器上)时,可以使用shell 内置的source
或命令将其他脚本(例如或)加载到主脚本的上下文中;单独的文件可以拥有自己的权限。.
source ~/.zshrc_private
. ~/.zaliases
除了文件权限之外,通常将密码保存在密码管理器例如pass
– 脚本和别名可以--password="$(pass Apps/Foo)"
在需要时使用。如果您尚未使用全盘加密,密码管理器会为存储的密码提供磁盘加密,因此它还可以提高针对离线访问的安全性(而文件权限仅在以正常方式通过操作系统时才有效)。
(某些桌面环境(GNOME、KDE)有自己的密码管理器;例如,GNOME Keyring 条目使用系统登录密码加密,可以使用 进行检索$(secret-tool lookup ...)
。)