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脚本启动文件】 启动模块。