Linux设置非root用户启动程序

1. 文件权限说明

从左至右,1-3位字母代表文件所有者(User)的权限,4-6位字母代表同组用户(Group)的权限,7-9字母代表其他用户(Other)的权限。

通过4、2、1的组合,得到以下几种权限:0(没有权限);4(读权限);5(4+1 :读+执行);6(4+2 :读+写);7(4+2+1 :读+写+执行)

755 【rwxr-xr-x】 权限表示

  • User : 7等于4+2+1,即rwx,所有者具有读、写、执行权限;
  • Group : 5等于4+1,即r-x,同组用户具有读、执行权限但没有写权限;
  • Other : 5同上,也是r-x,其他用户具有读、执行权限但没有写权限
参考说明:
 
读取权限 r = 4
写入权限 w = 2
执行权限 x = 1
 
 
比如:775 这三个数字代表拥有者,组用户,其他用户的权限。
例如:
7 拥有者有 读取,写入,执行权限
7 组用户有 读取,写入,执行权限
5 其他用户有 读取,执行权限(4 + 1 = 5)

读权限 r (代表数字为4),写权限 w(代表数字为2),执行权限 x (代表数字为1),每三个一组,每组加起来的数字组合就是权限数字

修改文件权限: chmod 权限数字xxx 文件名称

  • 修改某个文件的权限【-rwxr-xr-x】:chmod 755 info.log

  • 修改当前文件下所有文件的权限为【-rwxr-xr-x】:chmod 755 *

修改目录授权: chown -R -v 用户名:用户组名 "目录路径"

  • 递归修改【/home/java】目录下的所有文件夹和文件的权限给【app 用户和用户组
  • 具体命令:chown -R -v app:appgroup "/home/java"

2. 操作指引

1、创建用户组;

groupadd 用户组名



2、创建非root用户并指定步骤1创建好的用户组;

useradd 非root用户名 -g 用户组名



3、为非root用户授权目录;

chown -R 非root用户名 /tmp/javamelody/
chown -R 非root用户名 /home/java/



4、用非root用户操作上传程序资源包到程序启动目录下【启动部署规范目录:/home/java/模块包名称/启动端口号_模块具体模块版本】;



5、用非root用户在主程序同层目录下执行 sh restart.sh 命令【此目录下要有restart.sh的shell脚本启动文件】 启动模块。

3. 具体操作方法参考

1. 前提条件

1. 前提条件
操作系统:CentOS7
jdk: 1.8

2. 初始化非root用户

2. 初始化非root用户
 
#统一使用分组appworkergroup,用户名为appworker运行应用

groupadd -r appworkergroup

useradd -r -g appworkergroup appworker

#修改appworker的密码

passwd appworker

#检查用户是否有执行java的权限
su appworker
java -version

3. 修改api部署目录权限

3. 修改api部署目录权限
例1:
 
#先杀死所有的java进程,保证不会有日志再次输出
#如先杀死biz-api

#假设部署的目录是在:

#/data/java/biz-api

#/data/java/biz-api

#修改文件权限:

#将api所在的目录权限授予appworker:appworkergroup

chown -R -v appworker:appworkergroup "/data/java/biz-api"

#将api所在的业务日志目录给到appworker:appworkergroup,假设是/home/java/biztable

mkdir -p /home/java/biztable

chown -R -v appworker:appworkergroup "/home/java/biz-api"

#假设api中logback-spring.xml的日志文件写死了是/home/java/biz-api,那么要授权

mkdir -p /home/java/biz-api
chown -R -v appworker:appworkergroup "/home/java/biz-api"

#假设有NFS的目录, 而api需要读写文件到NFS的目录里, 如目录是:

#/data1/share/biztable

chown -R -v appworker:appworkergroup "/data/share"

#javamelody相关的临时目录
#/tmp/javamelody
#/tmp/tomcat*
chown -R -v appworker:appworkergroup "/tmp/javamelody"
find /tmp/ -name "tomcat*" -exec chown -R -v appworker:appworkergroup {} \;
#ehcache的临时目录
find /tmp/ -name "*ehcache*" -exec chown -R -v appworker:appworkergroup {} \;
find /tmp/ -name "*ache*data*" -exec chown -R -v appworker:appworkergroup {} \;

#启动api

su appworker

cd /data/java/biz-api

sh restart.sh




例2:
 
#先杀死所有的java进程,保证不会有日志再次输出
#如先杀死databook-api

#假设部署的目录是在:

#/data/java/biz-api

#/data/java/biz-api

#修改文件权限:

#将api所在的目录权限授予appworker:appworkergroup

chown -R -v appworker:appworkergroup "/data/java/biz-api"

#将api所在的业务日志目录给到appworker:appworkergroup,假设是/home/java/biz-api

mkdir -p /home/java/biz-api

chown -R -v appworker:appworkergroup "/home/java/biz-api"

#假设api中logback-spring.xml的日志文件写死了是/home/java/biz-api,那么要授权

mkdir -p /home/java/biz-api
chown -R -v appworker:appworkergroup "/home/java/biz-api"

chown -R -v appworker:appworkergroup "/home/java/lib"
chown -R -v appworker:appworkergroup "/home/java/repo"

#假设有NFS的目录, 而api需要读写文件到NFS的目录里, 如目录是:

#/data/share/biz

chown -R -v appworker:appworkergroup "/data/share"

#javamelody相关的临时目录
#/tmp/javamelody
#/tmp/tomcat*
chown -R -v appworker:appworkergroup "/tmp/javamelody"
find /tmp/ -name "tomcat*" -exec chown -R -v appworker:appworkergroup {} \;
#ehcache的临时目录
find /tmp/ -name "*ehcache*" -exec chown -R -v appworker:appworkergroup {} \;
find /tmp/ -name "*ache*data*" -exec chown -R -v appworker:appworkergroup {} \;

#启动api

su appworker

cd /data/java/biz-api

sh restart.sh
4. 上传程序包部署
用非root用户操作上传程序资源包到程序启动目录下【启动部署规范目录:/home/java/模块包名称/启动端口号_模块具体模块版本】;

5. 执行启动脚本
用非root用户在主程序同层目录下执行 sh restart.sh 命令【此目录下要有restart.sh的shell脚本启动文件】 启动模块。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值