.netrc 文件可以包含各种站点的用户名和密码凭据,以允许更简单地调用工具。例如,带有 -n 选项的 curl 将从文件中读取给定目标站点的凭据。或者 FTP 做类似的事情。
还可以设计自定义编写的命令行工具和脚本来从同一文件中读取凭据。
假设文件本身有 0400 权限,这一般认为是安全的吗?不同的人似乎有不同的看法。
.netrc 文件可以包含各种站点的用户名和密码凭据,以允许更简单地调用工具。例如,带有 -n 选项的 curl 将从文件中读取给定目标站点的凭据。或者 FTP 做类似的事情。
还可以设计自定义编写的命令行工具和脚本来从同一文件中读取凭据。
假设文件本身有 0400 权限,这一般认为是安全的吗?不同的人似乎有不同的看法。
在您的计算机上以明文形式存储凭据是一项有风险的业务,因为在您的计算机上运行的任何应用程序都可以访问这些凭据。凭据也暴露在备份、压缩文件等中......
.netrc 文件是希望扩展到其他计算机的攻击者的主要目标。
对此有很多争论。虽然 Neil 的回答是正确的,但在您的计算机上存储任何凭据本质上都是有风险的。即使您对它们进行加密并将它们存储在唯一的位置,您运行的软件也需要访问加密密钥。如果您每次都输入加密密钥(或解锁密码或类似密码),则输入凭据可能同样容易。
这个问题不是密码独有的。Un*x 倾向于严重依赖文件权限(访问控制),但它们无法区分以用户身份运行的一个进程与另一个进程。例如,存储在其中的 SSH 私钥~/.ssh也是一种风险。
凭证的标准位置的主要好处.netrc是使它们与使用它们的脚本或其他程序分开。例如,如果您编写一个自动化 FTP 会话的 shell 脚本,将用户名和密码嵌入脚本而不是.netrc文件中可能会导致凭据被无意中共享,因为脚本存储在源代码控制中或复制到其他系统。
使用中央位置.netrc还允许个人拥有自己的访问系统的凭据。共享帐户不受欢迎,因为它的活动不能归因于个人。否则,个人需要自己的脚本副本。
第二个好处是只有一个地方可以更新更改的凭据。如果多个脚本或程序使用相同但旧的凭据,您可以锁定帐户。更改.netrc文件可以同时更新多个脚本或程序。
也就是说,对静态密码进行加密可以防止无意中访问密码,例如通过备份、肩膀冲浪或类似方式。如果您必须在系统上存储凭据,请考虑在纯文本.netrc文件上进行加密存储(如果可用)。例如,git 现在支持加密.netrc文件。