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 輸入
[quote]erl -name [email protected] -setcookie foofoo[/quote]
輸出[quote]erlang (beam) emulator version 5.5.2 [source] [async-threads:0] [hipe] [kernel-poll:false]
eshell v5.5.2 (abort with ^g)
([email protected])1> [/quote]
在 bar 輸入
[quote]erl -name [email protected] -setcookie barbar[/quote]
[quote]net_adm:ping('[email protected]').[/quote]
由於兩個節點的cookie不一致,因此無法直接通訊,bar輸出
[quote]pang[/quote]
而 foo 會輸出警告
[quote]=error report==== 28-mar-2007::18:00:00 ===
** connection attempt from disallowed node '[email protected]' ** [/quote]
要使得bar能夠跟foo通訊,可以使用
[quote]erl -name [email protected] -setcookie foofoo[/quote]
啟動shell,或者在shell裡面輸入
[quote]erlang:set_cookie('[email protected]', 'foofoo').[/quote]
這時候就可以了
[quote]([email protected])2> net_adm:ping('[email protected]').
pong[/quote]
而且節點間會建立了連線
[quote]([email protected])3> nodes().
['[email protected]'][/quote]
要注意,之所以all or none裡面的「all」,是因為互相連線上的節點可以擁有全部的許可權,比如
[quote]([email protected])4> rpc:call('[email protected]', os, cmd, ['ls']).
"bin\nchangelog\nerlang\nerlang.ico\nlib\nstart.sh\n"[/quote]
如果不幸你是用root啟動,太好了,通過rpc就可以擁有全部的操作許可權。。。。
因此,使用分布式通訊,特別是有客戶端節點部署在普通使用者機上的系統,要非常留意許可權問題。更好的方法是用socket進行通訊,將請求封裝為乙個 tuple,比如 ,然後用 term_to_binary 傳送過去,只要兩邊都設定好 這樣的引數,接收這個 tuple 是很方便的。
網上有人說,joe的新書裡面會對安全問題進行詳細的介紹。
MySQL安全策略
資料是企業核心資產,資料對企業而言是最重要的工作之一。稍有不慎,極有可能發生資料無意洩露,甚至被黑客惡意竊取的風險。每年業界都會傳出幾起大事件,某知名或不知名的公司被脫褲 拖庫的諧音,意思是整個資料庫被黑客盜取 之類的。從資料安全上也可以分為外網安全及內部操作安全,下面分別討論一下。內部操作安全策略...
SSH安全策略
ssh安全策略 ss配置基本安全策略 調整sshd服務配置,並過載服務 root vim etc ssh sshd config protocol 2 去掉ssh協議v1 permitrootlogin no 禁止root使用者登入 permitemptypasswords no 禁止密碼為空的使用...
無線安全策略
安全認證是一整套安全策略認證機制,它分為兩個部分,通常安全策略是由鏈路認證是和接入認證配合使用的。需要明確的是,鏈路認證和接入認證是兩個不同的概念,有以下圖 從表中可以看出,安全策略可以分為wep wpa wpa2和wapi幾種,這幾種安全策略對應的鏈路認證其實只有open和shared key a...