问题背景
很多项目为了安全因素考虑,想让在Linux服务器中启动的程序都用非root用户启动。
解决方案
创建用户和组
现在我们用 root 用户登录,并创建用户和组。
##创建用户
[root@nc-test ~]# useradd wasadmin
##修改密码
[root@nc-test~]# passwd wasadmin
##创建组
[root@nc-test~]# groupadd wasgroup
##更改用户组
[root@nc-test~]# usermod -g wasgroup wasadmin
设置 Dmgr 非 root 用户登录
进入【系统管理】->【Deployment Manager】->【java 进程管理】-> 【进程定义】->【进程执行】 ->更改“作为用户运行\作为组运行
进入进程执行
作为用户运行:wasadmin,作为组运行:wasgroup(刚才自己创建的用户和组)
设置 NodeAgent 非 root 用户登录
进入【系统管理】->【Node Agent】->【nodeagent】【java 进程管理】-> 【进程定义】->【进程执行】->更改“作为用户运行\作为组运行->添加自己创建的用户和组
设置 nc、ncc 各个 server 非 root 用户登录
以 master 为例,剩下 server 同理
进入【服务器】->【服务器类型】->【master】->【java 进程管理】-> 【进程定义】->【进程执行】->更改“作为用户运行\作为组运行->添加自己创建的用户和组
保存配置和同步
修改 websphere 目录所属用户组的权限
以 root 身份执行下列语句
## 进到profiles路径下
[root@nc-test profiles]# chown -R wasadmin.wasgroup Dmgr01/
[root@nc-test profiles]# chown -R wasadmin.wasgroup AppSrv01/
用非 root 启动 Dmgr、NodeAgent、Server
###在 root 下执行,切换用户
[root@test profiles]# su wasadmin
###在 wasadmin 下执行,Ps:这是例子,请用自己脚本执行
[wasadmin@test profiles]$ Dmgr01/bin/startManager.sh
[wasadmin@test profiles]$ AppSrv01/bin/startNode.sh
[wasadmin@test profiles]$ AppSrv01/bin/startServer.sh master
... ...