如何在Erlang中获取另一个节点的cookie?

时间:2016-05-09 02:41:51

标签: erlang

是否可以从erlang或OS env获取另一个知道nodename的节点的cookie?

我没找到任何erlang:get_cookie/2

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