Erlang的分布式通讯安全策略,可以归结为 All or None。要不拥有全部的权限,要不就完全没有。
它的节点安全设置,是通过一个magic cookie来实现的。这个文件默认放到
$HOME/.erlang.cookie ,文件内容是字符串。
当启用分布通讯的时候,这个magic cookie就很重要了。如果在命令行里面带上 -setcookie ,则在当前节点使用这个cookie值,否则会使用 $HOME/.erlang.cookie
比如现在有两台机,192.168.0.2 & 192.168.0.3,分别叫做 foo 和 bar
在 foo 输入
引用
erl -name foo@192.168.0.2 -setcookie foofoo
输出
引用
Erlang (BEAM) emulator version 5.5.2 [source] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.5.2 (abort with ^G)
(foo@192.168.0.2)1>
在 bar 输入
引用
erl -name bar@192.168.0.3 -setcookie barbar
引用
net_adm:ping('foo@192.168.0.2').
由于两个节点的cookie不一致,因此无法直接通讯,bar输出
引用
pang
而 foo 会输出警告
引用
=ERROR REPORT==== 28-Mar-2007::18:00:00 ===
** Connection attempt from disallowed node 'bar@192.168.0.3' **
要使得bar能够跟foo通讯,可以使用
引用
erl -name bar@192.168.0.3 -setcookie foofoo
启动shell,或者在shell里面输入
引用
erlang:set_cookie('foo@192.168.0.2', 'foofoo').
这时候就可以了
引用
(bar@192.168.0.3)2> net_adm:ping('foo@192.168.0.2').
pong
而且节点间会建立了连接
引用
(bar@192.168.0.3)3> nodes().
['foo@192.168.0.2']
要注意,之所以All or None里面的“ALL”,是因为互相连接上的节点可以拥有全部的权限,比如
引用
(bar@192.168.0.3)4> rpc:call('foo@192.168.0.2', os, cmd, ['ls']).
"bin\nChangeLog\nerlang\nerlang.ico\nlib\nstart.sh\n"
如果不幸你是用root启动,太好了,通过rpc就可以拥有全部的操作权限。。。。
因此,使用分布式通讯,特别是有客户端节点部署在普通用户机上的系统,要非常留意权限问题。更好的方法是用Socket进行通讯,将请求封装为一个 tuple,比如 {login, Name, Password},然后用 term_to_binary 发送过去,只要两边都设置好 {packet ,4} 这样的参数,接收这个 tuple 是很方便的。
网上有人说,Joe的新书里面会对安全问题进行详细的介绍。
分享到:
相关推荐
Erlang分布是一种连续概率分布,常用于描述一系列独立同分布的指数随机变量之和,例如呼叫中心等待时间、服务时间等。在MATLAB中,我们可以利用不同的函数或技巧来生成服从Erlang分布的随机数。以下是两种常用的方法...
在MATLAB中,Erlang分布是一种连续概率分布,它常用于表示独立同分布的泊松过程事件发生所需时间的总和。Erlang分布有多个应用,包括排队论、可靠性工程以及寿命分析等领域。本教程是针对本科和硕士级别的教研学习...
基于Erlang的即时通讯系统的设计与实现
Erlang随机变量 ... 如果未提供dims参数,则该函数从Erlang分布返回一个随机抽奖。 var out ; // Set seed random . seed = 2 ; out = random ( 5 ) ; // returns [ ~1.416, ~1.285, ~0.112, ~1.103, ~2.01
标签中提到了“Erlang Rabbit 异步通讯”,这意味着讨论的重点是Erlang如何与RabbitMQ结合实现异步通信。RabbitMQ是一个开源的消息代理,它遵循Advanced Message Queuing Protocol (AMQP)标准,提供了一种可靠、高效...
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...
**Erlang公式的理解** Erlang是一个在电信领域广泛使用的单位,用来衡量话务量,即通信系统中处理的呼叫流量。Erlang的名字来源于丹麦数学家Agner Krarup Erlang,他在20世纪初研究了电话交换系统的理论。在Erlang...
**及早求值或严格求值**:Erlang的求值策略是及早求值,意味着表达式一旦被引用就会计算其值。 **脚本语言**:Erlang也可作为脚本语言使用,编写分布式应用尤其方便,因为它的分布式特性和虚拟机支持使得代码跨平台...
##### 1.5 Erlang分布协议格式 Erlang的分布协议定义了节点之间通信的格式和规则。深入理解分布协议有助于更好地把握Erlang的分布式特性以及在不同环境下部署Erlang应用时可能出现的问题。 #### 2. 性能与优化 ###...
4. **分布式编程**:Erlang进程可以分布在多个节点上,实现分布式系统的构建。书可能讲解了如何进行节点间通信、分布式数据管理和负载均衡。 5. **模式匹配**:Erlang的函数定义允许模式匹配,使得代码更加简洁和可...
Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可扩展性的软实时系统。Erlang的25.0版本是该语言的一个更新,针对Windows操作系统进行了优化...
分布矩生成函数(MGF)。 随机变量的为 对于t < lambda> 0是分布的速率参数。 在t >= lambda的情况下,未定义MGF,并且此模块返回NaN 。 安装 $ npm install distributions-erlang-mgf 要在浏览器中使用,请使用...
4. **错误处理与恢复**:习题可能设计为在遇到错误时,系统能优雅地处理并恢复,让学习者理解Erlang中的错误处理策略。 5. **模块化编程**:Erlang的模块系统可以帮助组织代码,习题可能要求学习者将功能分解到多个...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...
py 是为 Erlang 生态系统准备的分布式 Python。该项目有两个主要特性: Python 的简单封装接口,封装了 ErlPort 调用,可方便的进行: Make module-level calls Get module-level constants Instantiate ...
Erlang/OTP 26.2.1,Erlang,OTP,26.2.1
在统计学和概率论中,Erlang分布是一种连续概率分布,通常用于排队理论中的服务时间分布,以及网络通信等领域。Erlang分布是伽玛分布的一个特例,当伽玛分布的形状参数为正整数时,就是Erlang分布。在给出的文件内容...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson为了实现分布式实时、高可靠性系统而开发。Erlang以其强大的并行处理能力、容错性和易于构建大规模分布式系统的特点,在电信、金融和互联网等...
计算结果可以帮助决策者理解在当前配置下,系统的性能表现,并据此做出改进策略。 总的来说,Erlang B和Erlang C模型是电信系统设计中的基础工具,而提供的计算工具则是将理论转化为实践的关键桥梁。通过这些工具,...