是否可以从erlang或OS env获取另一个知道nodename
的节点的cookie?
我没找到任何erlang:get_cookie/2
。
答案 0 :(得分:5)
安全性是erlang
Cookie的主要原因,如Distributed Erlang Security Section中所述。如果您只能通过其nodename
从其他节点获取Cookie,则无法保证其安全。每个人都可以获得你的cookie并连接到你的机器并做任何他们喜欢的事情。
虽然这种安全性很差,因为它只是一个简单的唯一值,如密码,就是这样,你将无法使用erlang
从其他机器获取cookie。
我建议您在Learn You Some Erlang网站上阅读更多相关内容。
答案 1 :(得分:2)
身份验证确定允许哪些节点相互通信。在不同Erlang节点的网络中,它以尽可能低的级别内置到系统中。每个节点都有自己的魔术cookie ,这是一个Erlang原子。
当节点尝试连接到另一个节点时,会比较神奇的Cookie。如果它们不匹配,则连接的节点拒绝连接。
在启动时,一个节点将一个随机原子指定为其魔术cookie,其他节点的cookie被假定为nocookie。然后,Erlang网络认证服务器(auth)的第一个动作是读取名为$ HOME / .erlang.cookie的文件。如果该文件不存在,则创建该文件。该文件的UNIX权限模式设置为八进制400(用户只读),其内容是随机字符串。根据文件的内容创建一个原子Cookie,并使用erlang设置本地节点的cookie:set_cookie(node(),Cookie)。这也使得本地节点假定所有其他节点具有相同的cookie Cookie。
请阅读:http://erlang.org/doc/reference_manual/distributed.html#id87463