歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> Unix遠程命令調用的實現

Unix遠程命令調用的實現

日期:2017/2/28 11:29:10   编辑:關於Unix


計算機網絡的發展雖然十分迅速,但當前網絡資源利用率卻比較低。網絡中相同資源的重復安裝和配置增加了許多不必要的運營成本,如何有效地利用網絡中有限的資源實現協同工作是十分現實的問題。本文介紹一種Unix系統遠程命令調用機制,它不是常規意義上的telnet功能,而是一種更為快捷方便的利用NFS協議建立起來的on命令操作,並在此基礎上實現了豐富的遠程控制功能,可廣泛地應用於局域網和廣域網。
系統要求
● 客戶端和遠程系統需同時運行Unix系統,HP-UX、Sun Solaris等均可;
● 客戶端設置為NFS服務器,遠程系統設置為NFS客戶機,這樣可將客戶端環境及工作目錄仿真到遠程系統,利用遠程系統豐富的資源,執行命令並將結果返回到客戶端;
● 通過inetd服務進程在遠程系統配置好rexd服務,通過RPC(Remote Process Control),響應客戶端運行的on命令遠程調用請求;
● 實現遠程調用的用戶要在兩端系統中擁有相同的UserID和GroupID;
● 客戶端只能以普通用戶而非超級用戶(root)執行on命令操作;
● 在利用該機制進行軟件開發時,兩端操作系統版本號要保持一致,否則會導致生成的二進制代碼不兼容的問題。
實現原理
用戶在客戶端本地執行“on host command”實現在遠程主機上進行命令調用的功能。遠程主機收到on命令調用請求後自動由inetd服務進程啟動rexd進程。如果請求包中附帶的UserID在遠程主機中存在,則以該用戶執行相應命令,否則出錯退出。
命令執行期間rexd自動將客戶端工作環境仿真到遠程系統上,並通過NFS協議自動將其工作目錄臨時掛接到遠程系統的特定目錄下。命令執行完畢輸出結果返回到客戶端後,用戶工作目錄自動卸載,rexd進程也自動退出。所有這一切後台操作對用戶而言都是透明的。
設置步驟
本文以HP-UX 10.20為例介紹遠程調用的具體實現過程(在其他Unix系統上,如SCO OpenServer上同樣調試通過)。以下配置均需超級用戶(root)執行。
1.遠程系統
設置並啟動NFS客戶機 :
nfs.client=1
# /sbin/init.d/nfs.client start
設置並啟動rexd後台服務程序,自動響應客戶端遠程調用請求:
rpc stream tcp nowait root /usr/sbin/rpc.rexd 100017 1 rpc.rexd
# inetd -c
2.客戶端系統
設置並啟動NFS服務器:
假設遠程主機名為server,將本地資源授權給遠程系統:
# vi /etc/exports
/ -root = server
# exportfs -ua
# exportfs -a
這樣一來,當遠程系統rpc.rexd收到客戶端on遠程調用請求時,自動檢查客戶端配置情況,如授權許可則通過NFS協議將客戶端用戶工作目錄自動掛接到 /usr/spool/rexd/rexdXXXXXX,其中XXXXXX是運行rexd的進程序列號。以上任何一個環節出錯都會導致遠程調用失敗並返回相應錯誤信息。
命令調用
on 命令只允許以普通用戶執行,格式如下:
on [ -i | -n ] [ -d ] hostname [command]
例如:
on -i server
on server ls -l /home/yyf
其中:
● -i: 表示交互式操作;
● -n: 命令執行期間無需輸入參數;
● -d: 調試模式;
● hostname: 遠程主機名;
● command: 要執行的命令,如果省略則進入一個交互式的shell提示符下,以後發送的每一個命令都將在遠程主機仿真的用戶工作目錄下執行(如/var/spool/rexd/rexda00756/home/yyf)。
安全考慮
● 為最大限度地保護本地文件系統,以防止非法存取,客戶端設置/etc/exports時應通過授權給確定的遠程主機普通用戶而非超級用戶操作,明確只能在指定的遠程主機上調用命令。如:
/home -rw = host1:host2
/usr -rw = host3
● 在遠程系統上編輯安全設置文件:
僅限制在特定的客戶機上執行on命令調用。
● 清理遠程系統中不必要的普通用戶,防止客戶端任意用戶執行遠程命令調用。
● 在遠程系統上啟動rpc.rexd服務進程時帶上 -r 參數,增強對客戶端系統的安全檢查,或帶上 -l logfile參數將每次遠程調用請求信息(包括診斷、警告、出錯等)記入特定日志文件,供管理員定期監控分析。
Copyright © Linux教程網 All Rights Reserved