1. 概述
munge是認證服務,用於生成和驗證證書。應用於大規模的HPC集群中。
它允許進程在【具有公用的用戶和組的】主機組中,對另外一個【本地或者遠程的】進程的UID和GID進行身份驗證。
這些主機構成由共享密鑰定義的安全領域。在此領域中的客戶端能夠在不使用root權限,不保留端口,或其他特定平台下進行創建憑據和驗證。
簡而言之,在集群中,munge能夠實現本地或者遠程主機進程的GID和UID驗證。
2. 下載
munge下載地址:https://dun.github.io/munge/
本篇博客使用的版本是:munge-munge-0.5.12.zip。下載之后,執行命令unzip munge-munge-0.5.12.zip
解壓至當前目錄
3. 安裝
3.1 源碼簡要說明
解壓源碼包之后,在源碼包下:
- README,查看軟件說明
- HISTORY,查看歷史版本和發布年份
- INSTALL,查看簡要的安裝方法
- PLATFORMS中,能夠查到當前軟件版本支持的平台類型
- NEWS,查看不同版本的特性和bug修復
- QUICKSTART,查看較為詳細的安裝過程和解釋
依照QUICKSTART內容,或者在線用戶向導:https://github.com/dun/munge/wiki/Installation-Guide,即可安裝munge
注:munge提供了兩種安裝方式,即RPM包安裝和源碼安裝。本篇博客采用源碼安裝。
3.2 編譯安裝
源碼編譯,基本上是3-4個步驟:configure,make,make test,make install。
在本篇博客中,對munge的部署有以下要求:
- 采用munge用戶運行進程
- 靜態文件位於全局文件系統
- 動態文件位於本地
- 采用命令行方式啟動
- 支持開啟啟動
全局認證munge用戶,可以在LDAP中添加munge用戶,參見《LDAP服務部署和測試.dm》。
本篇博客添加過程為:
useradd -s /sbin/nologin -u 601 munge
;
然后通過migrationtools更新passwd.ldif和group.ldif,並通過ldapadd添加到LDAP數據庫中。
通過./configure --help
查看幫助之后,確認執行方式如下:
./configure \
--prefix=/usr/local/globle/softs/munge/0.5.12/ \
--sysconfdir=/usr/local/globle/softs/munge/0.5.12/etc \
--localstatedir=/var
【錯誤提示】:configure: error: unable to locate cryptographic library
【解決方式】:yum -y install openssl-devel
這個問題在QUICKSTART文件中有說明,主要是因為缺少Libgcrypt或者OpenSSL cryptgraphic 庫所致。
這里采用符合GPL許可的Open SSL加密庫,如果是源碼編譯i的此庫環境,編譯時需要通過--with-crypto-lib選擇指定。
上述問題解決之后,執行命令make
,完成之后,執行命令make install
至此,munge已經安裝在本地目錄/usr/local/globle/softs/munge/0.5.12/中。
因為在configure的過程中,通過--localstatedir=/var,因此在當前安裝目錄/usr/local/globle/softs/munge/0.5.12/沒有var目錄
注:本篇博客后續會將/usr/local目錄通過NFS共享出去,因此/usr/local會作為全局文件系統來使用。此時將munge的var目錄安裝至此會有問題
因此,我們需要創建三個目錄,即:/var/run/munge,/var/lib/munge,/var/log/munge。執行命令mkdir -p /var/{run,lib,log}/munge
即可創建。
按照安裝說明,創建了上述三個目錄之后:
執行命令:chown -R munge.munge /var/{run,lib,log}/munge
修改目錄屬主
執行命令:chmod 711 /var/lib/munge; chmod 700 /var/log/munge; chmod 755 /var/run/munge
修改目錄模式
執行命令:chown -R munge.munge /usr/local/globle/softs/munge/
,修改安裝目錄屬主
3.3 配置
從上一部分中的工作中,已經完成了對munge的編譯安裝,這僅僅是第一步。
第二步就是配置munge。
在/usr/local/munge/0.5.12/etc/目錄下,有三個目錄:
- munge 用於放置munge.key
- rc.d 用於部署開機啟動服務
- sysconfig 用戶配置開機啟動服務
編輯文件vim /usr/local/globle/softs/munge/0.5.12/etc/sysconfig
,修改部分如下:
DAEMON_ARGS="--key-file /usr/local/munge/0.5.12/etc/munge/munge.key --num-threads 1"
3.4 創建munge.key
munge.key的創建有四種方式,如下圖
本篇博客采用第三種方式,
執行命令:echo -n "Hello.LiwanLiang.This is your munge key." | sha1sum | cut -d' ' -f1 > /usr/local/munge/0.5.12/etc/munge/munge.key
修改權限為400,執行命令:chmod 400 /usr/local/munge/0.5.12/etc/munge/munge.key
3.5 啟動方式
以下方式,任選其一即可
- 創建腳本鏈接(或者直接拷貝文件),通過'service munge start'啟動服務,如下圖:
ln -fs /usr/local/munge/0.5.12/etc/rc.d/init.d/munge /etc/init.d/munge
- 創建命令鏈接(或者直接拷貝文件),通過'munged'啟動服務,如下圖:
ln -fs /usr/local/munge/0.5.12/sbin/munged /usr/sbin/munged
啟動了munged之后,通過執行命令:lsof -p $(pgrep -f munged)
,能夠查看munged服務打開的文件,內容如下:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
munged 11693 root cwd DIR 253,2 4096 2 /
munged 11693 root rtd DIR 253,2 4096 2 /
munged 11693 root txt REG 253,2 362662 15266 /usr/local/munge/0.5.12/sbin/munged
munged 11693 root mem REG 253,2 65928 2801 /lib64/libnss_files-2.12.so
munged 11693 root mem REG 253,2 19536 2791 /lib64/libdl-2.12.so
munged 11693 root mem REG 253,2 1921216 2785 /lib64/libc-2.12.so
munged 11693 root mem REG 253,2 1946880 5035 /usr/lib64/libcrypto.so.1.0.1e
munged 11693 root mem REG 253,2 88600 3208 /lib64/libz.so.1.2.3
munged 11693 root mem REG 253,2 142640 2809 /lib64/libpthread-2.12.so
munged 11693 root mem REG 253,2 115135 15234 /usr/local/munge/0.5.12/lib/libmunge.so.2.0.0
munged 11693 root mem REG 253,2 154520 2778 /lib64/ld-2.12.so
munged 11693 root 0u CHR 1,3 0t0 3800 /dev/null
munged 11693 root 1u CHR 1,3 0t0 3800 /dev/null
munged 11693 root 2u CHR 1,3 0t0 3800 /dev/null
munged 11693 root 3w REG 253,2 572 262284 /var/log/munge/munged.log
munged 11693 root 5wW REG 253,2 0 262286 /var/run/munge/munge.socket.2.lock
munged 11693 root 6u unix 0xffff88003d2f19c0 0t0 28142 /var/run/munge/munge.socket.2
查看日志內容,如下:
2018-06-16 07:17:37 +0800 Notice: Running on "node12" (71.0.0.92)
2018-06-16 07:17:37 +0800 Info: PRNG seeded with 1024 bytes from "/dev/urandom"
2018-06-16 07:17:37 +0800 Info: Updating supplementary group mapping every 3600 seconds
2018-06-16 07:17:37 +0800 Info: Enabled supplementary group mtime check of "/etc/group"
2018-06-16 07:17:37 +0800 Info: Found 5 users with supplementary groups in 0.000 seconds
2018-06-16 07:17:37 +0800 Notice: Starting munge-0.5.12 daemon (pid 11693)
2018-06-16 07:17:37 +0800 Info: Created 2 work threads
至此,單節點啟動munged的過程已經配置完成。
多節點的munge服務啟動,需要在同步各個節點的時間之后,通過pdsh進行啟動