以普通操作系统用户运行行云管家中转服务指引
一、概述
在Linux操作系统中,root账户具有整个操作系统的读、写和执行命令权限,通过root账户可以执行任何可能的操作,包括具有破坏性的操作。
出于安全等因素考量,Linux操作系统中往往会禁止使用root用户做一些操作,例如,不允许使用root用户进行SSH登录、不允许直接在root账户中启动应用等,而是以最小权限原则、使用普通用户来登录操作系统以及运行服务。
对于行云管家的相关服务,也应该以普通用户来进行启动、停止等运行操作。
二、实现方法
要以普通用户来启动、停止服务行云管家相关服务,则需要分析清楚行云管家服务本身运行时涉及到的资源(文件、目录、相关服务),通过将这些资源授权予执行行云管家启动、停止操作的账户,从而使得普通用户在启动、停止行云管家服务时有权限对相关资源进行读写操作,实现普通用户对行云管家服务的启动、停止等操作。
行云管家中转服务运行时涉及的相关资源如下:
/opt/cloudbility 目录
/opt/jetty/logs 目录
/opt/jetty/work 目录
/var/run/jetty 目录
/etc/init.d/jetty 服务
需要将上述资源授权予执行行云管家启动、停止操作的普通用户账户。
三、实操指引
3.1、创建普通用户账户
如果需要执行行云管家中转服务启停操作的普通用户账户尚不存在,则可以按以下步骤创建普通用户账户。
(1)以root账户登录操作系统,执行以下命令,创建cloudbility用户组(以下以创建cloudbility用户组、cloudbility用户账户为例进行说明)
groupadd cloudbility
(2)以root账户登录操作系统,执行以下命令,创建cloudbility用户,并将用户归属至cloudbility用户组
useradd -g cloudbility -d /home/cloudbility cloudbility
(3)以root账户登录操作系统,执行以下命令,为cloudbility用户设置密码(命令执行后,将提示要求输入要设置的密码和确认密码)
passwd cloudbility
3.2、普通用户sudo授权
通过授权,指定普通用户可以执行的操作,过程如下。
(1)以root账户登录操作系统,执行以下命令
visudo
(2)上述命令执行后,将进入文件编辑状态,在编辑状态的文件末尾加入以下一行,为普通用户cloudbility授予sudo权限
Cloudbility ALL=(ALL) NOPASSWD:/usr/bin/systemctl * nginx, /etc/init.d/jetty *, /opt/cloudbility/bin/* *, /opt/cloudbility/native/* *
(3)上述编辑完成后,保存文件内容,并退出
3.3、普通用户服务及资源授权
(1)以root账户登录操作系统,执行以下命令,设置以普通用户cloudbility来执行jetty服务
sed '/then\ used\ as\ a\ username/aJETTY_USER=cloudbility' -i /etc/init.d/jetty
(2)以root账户登录操作系统,执行以下5行命令,停止jetty运行并将相关资源授权予普通用户cloudbility
/etc/init.d/jetty stop
chown cloudbility:cloudbility /opt/cloudbility -R
chown cloudbility:cloudbility /var/run/jetty -R
chown cloudbility:cloudbility /opt/jetty/logs -R
chown cloudbility:cloudbility /opt/jetty/work -R
注意:执行过上述命令,将服务及资源授权予普通用户cloudbility后,不允许再以root用户执行jetty服务的启动操作。
3.4、普通用户执行启停操作
授予普通用户相关权限后,即可以以普通用户cloudbility来执行中转服务的启动和停止操作。
3.4.1、Nginx服务
启动nginx服务操作:
sudo systemctl start nginx
停止nginx服务操作:
sudo systemctl stop nginx
重启nginx服务操作:
sudo systemctl restart nginx
查看nginx服务状态操作:
sudo systemctl status nginx
3.4.2、Jetty服务
启动Jetty服务操作:
sudo /etc/init.d/jetty start
停止Jetty服务操作:
sudo /etc/init.d/jetty stop
重启Jetty服务操作:
sudo /etc/init.d/jetty restart