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进行启动

Munge服务部署和测试的更多相关文章

  1. LDAP-openldap服务部署和测试(YUM安装)

    1. 概述2. 服务端部署过程2.1 软件包说明2.2 部署过程2.3 配置过程3. 测试4. 生成LDIF格式文件4.1 安装migrationtools工具4.2 用migrationtools生 ...

  2. NTP服务部署和测试

    1. 概述2. 部署3. 配置4. 客户端配置4.1 客户端安装ntpdate4.2 同步设置 1. 概述 本篇博客主要记录如何部署一台NTP服务器,用于内网时间同步. 时间服务器对于集群内部节点之间 ...

  3. Slurm任务调度系统部署和测试(源码)(1)

    1. 概述1.1 节点信息2. 节点准备3. 部署NTP服务器4. 部署LDAP服务器5. 部署Munge认证服务6. 部署Mysql数据库服务7. 部署slurm7.1 创建slurm用户7.2 挂 ...

  4. OpenStack入门篇(九)之nova服务(控制节点)的部署与测试

    1.Nova介绍 Nova是openstack最早的两块模块之一,另一个是对象存储swift.在openstack体系中一个叫做计算节点,一个叫做控制节点.这个主要和nova相关,我们把安装为计算节点 ...

  5. Openstack入门篇(十一)之neutron服务(控制节点)的部署与测试

    1.Neutron的介绍 Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 *** 等.Neutron 提供了一个灵活的框架,通过配置,无论是开 ...

  6. 工程师技术(三):独立Web站点的快速部署、虚拟Web主机的部署、配置网页内容访问、使用自定Web根目录、配置安全Web服务、部署并测试WSGI站点

    一.独立Web站点的快速部署 目标: 本例要求为 http://server0.example.com 配置Web站点,要求如下: 1> 从http://classroom/pub/materi ...

  7. slurm任务调度系统部署和测试(一)

    1.概述 本博客通过VMware workstation创建了虚拟机console,然后在console内部创建了8台kvm虚拟机,使用这8台虚拟机作为集群,来部署配置和测试slurm任务调度系统. ...

  8. NFS网络共享服务部署

    10.3 NFS服务端部署环境准备 10.3.1 NFS服务部署服务器准备 服务器系统 角色 IP Centos6.7 x86_64 NFS服务器端(NFS-server) 192.168.1.14 ...

  9. WCF服务部署到IIS7.5

    下面介绍如何把WCF服务部署到IIS: 为WCF服务创建.svc文件 我们知道,每一个ASP.NET Web服务都具有一个.asmx文本文件,客户端通过访问.asmx文件实现对相应Web服务的调用.与 ...

随机推荐

  1. 安装mysql(macos系统)

    1.到官网下载,直接百度"mysql"即可找到 2.双击安装包,一路安装即可 3.然后进到系统设置 4.接下来 输入coho的用户密码 设置root用户的密码 切换root用户,v ...

  2. Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM)

    Django中ORM介绍和字段及字段参数   Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简 ...

  3. 洗礼灵魂,修炼python(62)--爬虫篇—模仿游戏

    前言 <模仿游戏>这个电影相信如果你是搞IT的,即使没看过也听过吧?电影讲述了计算机之父——阿兰-图灵的一些在当时来讲算是计算机史里的里程碑事迹了.而[模仿游戏]这个名字咋一看,貌似和电影 ...

  4. EntityFramework Code-First 简易教程(九)-------一对多

    一对多(One-to-Many)关系: 下面,我们来介绍Code-First的一对多关系,比如,在一个Standard(年级)类中包含多个Student类. 如果想了解更多关于one-to-one,o ...

  5. format 代码

    #!/bin/bash#file format.sh#将某个源代码文件中的全角符号转换成半角符号#调用astyle 将某个源代码文件转换成linux风格,缩进方式为4个空格 echo $1#将全角空格 ...

  6. CentOS乱码解决方法

    linux 中文显示乱码解决办法, 其实是有多种情况的, 有一部分是由于终端默认的设置造成的 vi /etc/sysconfig/i18n 将内容改为LANG="zh_CN.GB18030& ...

  7. 【PAT】B1072 开学寄语(20 分)

    代码注释应该很清晰 先存下违禁品,放到数组中,未使用map #include<cstdio> #include<string.h> int wupin[10],N,M; boo ...

  8. 修改Github上提交日志

    bash: git rebase -i HEAD~5:假定你要修改的日志位于当前版本(HEAD)的前4次提交中. vi: pick -> reword:在自动打开的vi编辑器中,上下选择你要修改 ...

  9. for(var i=1;i<=3;i++){ setTimeout(function(){ console.log(i); },0); };答案:4 4 4。

    看面试题时,发现了一道较为经典的面试题,代码如下 for(var i=1;i<=3;i++){ setTimeout(function(){ console.log(i); },0); }; / ...

  10. Djando 的 cmd命令

    1.黑窗口命令 安装Django ​ pip install django==1.11.16 -i https://pypi.doubanio.com/simple/ 创建项目 ​ django-ad ...