作者:李继武
1
文档编写目的
在前面的文章《0520-如何使用非root用户启动CM的Server和Agent服务》中,Fayson介绍过在CDH5中,无论是Cloudera Manager Server还是Agent服务都无法配置为其他用户来启停,只能通过root用户来管理。
另外在文章《0547-CM Server和Agent服务停止脚本说明》,我们考虑使用root直接找到Server和Agent的脚本来进行启停,即不通过系统自带的service或者systemctl来操作这2个服务,但依旧失败了,主要是没有找到stop命令,只能通过kill这2个服务来解决。
这些文章其实主要目的就是为了解决有些环境不允许使用root来管理CM Server和Agent服务,必须使用普通用户的需求。在尝试几次都失败后,Fayson这里提供另一个替代方案,即依旧让系统自带的system或者systemctl来操作这2个服务,但是我们给一个普通用户只是配置CM Server和Agent的sudo权限
本文档主要介绍如何给一个普通用户配置管理cloudera-scm-server和cloudera-scm-agent的权限,使得平时我们可以通过普通用户来管理集群。本文以CM节点为例,上面有cloudera-scm-server和cloudera-scm-agent。
- 测试环境
1.CDH5.13.1
2.配置前需要root用户
2
环境准备
1. 控制台上关停集群
2. root用户下命令行停止cloudera-scm-server和cloudera-scm-agent。
代码语言:javascript复制systemctl stop cloudera-scm-server
systemctl stop cloudera-scm-agent
systemctl status cloudera-scm-server
systemctl status cloudera-scm-agent
3. 创建一个普通用户user并设置密码
代码语言:javascript复制useradd user
passwd user
3
配置sudoers
1. 使用visudo配置可执行命令的别名
代码语言:javascript复制Cmnd_Alias CDH_SYSTEMCTL= /usr/bin/systemctl start cloudera-scm-server, /usr/bin/systemctl stop cloudera-scm-server, /usr/bin/systemctl restart cloudera-scm-server, /usr/bin/systemctl status cloudera-scm-server, /usr/bin/systemctl start cloudera-scm-agent, /usr/bin/systemctl stop cloudera-scm-agent, /usr/bin/systemctl restart cloudera-scm-agent, /usr/bin/systemctl status cloudera-scm-agent
2. 配置user用户可免密sudo执行CDH_SYSTEMCTL定义的命令并保存
代码语言:javascript复制user ALL=(ALL) NOPASSWD:CDH_SYSTEMCTL
4. 使用user用户启动cloudera-scm-server/agent
在浏览器上查看已经可以访问7180端口
5. stop和restart命令也可通过如下的方式使用,此处不再详细描述。
代码语言:javascript复制sudo systemctl stop cloudera-scm-server
sudo systemctl stop cloudera-scm-agent
sudo systemctl restart cloudera-scm-server
sudo systemctl restart cloudera-scm-agent
4
验证
1. 启动clouderan management相关服务
2. 启动集群
3. 验证user用户是否有其他权限
从以下可以看出user用户除了可以使用systemctl操作cloudera-scm-server和cloudera-scm-agent服务之外,并不能操作其他服务。
从以下可以看出user用户也没有kill进程的权限。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。