項目需求:
基於SOA,Webservice,與底層Linux交互
SOA中應用中存在兩類用戶,組內管理員和組內普通用戶,通過底層共享組內管理員賬號,以管理員身份執行命令,這樣管理員就可以管理組內用戶的文件和操作。
難點:
SOA的應用層可以管理和分配用戶角色,底層Linux如何安全無誤的共享用戶身份執行命令?
實際採用方案:
假設組管理員Gmx和組用戶Gux,如何使Gux切換使用Gm1,Gm2,...Gmx用戶身份執行命令
1 sudo方案
首先給一個大權限用戶U,賦予切換Gm1....Gmx的身份權限,由文件/etc/sudoers進行配置。
在Linux服務器上,啓動U身份的服務。
通過U身份以Gmx身份執行.
執行sudo -u Gm1 {command or function , such as : mkdir} $parameter1
2 ssh 方案
首先在Linux服務器上,設置訪問ssh Gm@localhost 時不需要密碼。
http://blog.csdn.net/lsweetyy/article/details/7482376
在Linux服務器上,啓動U身份的服務。
通過U身份執行ssh Gmx@localhost command $parameter1命令即可,
【特別注意】, 如果command命令有參數,且參數有帶空格,格式需要爲"\"$parameter1"\",或"'$parameter1'"(雙引號+單引號),而sudo 時command 的參數只需要"$parameter1"即可
評價:
1 方案,的/etc/sudoers需要root身份來設置,如果增加sudo -u Gmn,需要root,配置時不方便
2 方案,只需要在ssh 的賬號~目錄下,追加~/.ssh/authorized_keys 其公鑰即可,方便,但是配置複雜。