D 在没有 root
访问权限的情况下运行群集报告 #
所有群集节点都必须能通过 SSH 相互访问。crm report
(用于查错)等工具和 Hawk2 的 要求节点之间通过无口令 SSH 方式来访问,否则它们只能从当前节点收集数据。
如果您的安全策略不允许进行无口令 root
SSH 登录,则在所有远程节点上以 root
身份运行 crm report
时都会失败。在这种情况下,您仍可以采用以下其中一种方式运行群集报告:
如果群集是由具有
sudo
特权的非 root 用户初始化的,则此用户可以运行群集报告。如果群集是由
root
用户初始化的,您可以创建专用的非 root 用户来运行群集报告。
以下过程说明如何为非 root 用户授予受限权限,让该用户可以使用 sudo
来运行 crm report
,但没有其他 sudo
访问权限。
D.1 为非 root 用户配置受限的 sudo
权限 #
sudo
命令可让普通用户快速变成 root
并发出命令,而无论其是否提供了口令。可向所有 root 级命令或者特定的命令授予 sudo 访问权限。此过程说明如何仅为运行群集报告所需的特定命令配置 sudo
权限。Sudo 通常使用别名来定义整个命令字符串。
要配置 sudo,请使用 visudo
(不是 vi)或 YaST。
要从命令行配置 sudo,必须以 root
身份使用 visudo
编辑 sudoers 文件。使用任何其他编辑器可能会导致语法或文件权限错误,进而阻止 sudo 运行。
没有
sudo
权限的非 root 用户。以下过程使用名为hareport
的示例用户。群集中的所有节点上都存在用户
hareport
。用户
hareport
可以通过无口令 SSH 访问群集中的所有其他节点。
sudo
权限 #以
root
身份登录。要打开
/etc/sudoers
文件,请输入visudo
。查找以下类别:
Host alias specification
、User alias specification
、Cmnd alias specification
和Runas alias specification
。在
/etc/sudoers
中的相应类别中添加以下几项:Host_Alias CLUSTER = alice,bob,charlie 1 User_Alias HA = hareport 2 Cmnd_Alias HA_ALLOWED = /bin/su, /usr/sbin/crm report*3 Runas_Alias R = root 4
主机别名定义 sudo 用户有权在哪个服务器(或特定范围内的服务器)上发出命令。在主机别名中,可以使用 DNS 名称或 IP 地址,或者指定整个网络范围(例如
172.17.12.0/24
)。要限制访问范围,应该仅指定群集节点的主机名。使用用户别名可将多个本地用户帐户添加到单个别名。不过,在此情况下,系统只会使用一个帐户。
命令别名定义该用户可执行的命令。如果您要限制非 root 用户在使用
sudo
时可以访问的数据,命令别名将十分有用。在此情况下,hareport
用户帐户需要访问命令crm report
和su
。runas
别名指定用于运行命令的帐户(在本例中为root
)。搜索以下两行:
Defaults targetpw ALL ALL=(ALL) ALL
由于这两行与我们要创建的设置相冲突,因此请将其禁用:
#Defaults targetpw #ALL ALL=(ALL) ALL
查找
User privilege specification
类别。定义上述别名后,现在可以添加以下规则:HA CLUSTER = (R) NOPASSWD:HA_ALLOWED
NOPASSWORD
选项确保用户hareport
无需提供口令就能执行群集报告。(可选) 如果要允许用户
hareport
使用您的本地 SSH 密钥运行群集报告,请在Defaults specification
类别中添加下行内容。这会保留SSH_AUTH_SOCK
环境变量,SSH 代理转发时需要用到该变量。Defaults!HA_ALLOWED env_keep+=SSH_AUTH_SOCK
以
hareport
用户身份通过ssh -A
登录节点以及使用sudo
运行crm report
时,您的本地 SSH 密钥会传递到该节点以进行身份验证。
必须在群集中的所有节点上指定这项 sudo 配置。无需为 sudo 做出其他更改,并且无需重启动任何服务。