linux目录属主属组定时修改脚本

一、背景

在我们生产环境中,开发用的都是普通用户账号登录,起应用或者某些中间件时可能会用到sudo权限,但是我们的root权限也不能给开发使用,这时候开发只要发布,就会导致项目坐在目录使用普通用户权限无法访问,因为开发其应用程序时使用了sudo权限就会导致项目所在目录属主和属组都是root,这时候如果要去查看日志普通用户是没有办法查看日志的,那应该怎么做不影响工作了?

二、解决方案

1、我们要了解开发什么时候发布,

2、可以在发布后执行linux  chown命令修改权限

3、使用脚本配合定时任务去定时修改目录权限

三、案例

1、项目所在目录

假设我们开发的项目所在目录是/data01/test 目录  这时候我们只需要对test目录进行权限修改即可

linux目录属主属组定时修改脚本_第1张图片

2、权限修改脚本如下:

cat chown_dinshi.sh
#!/bin/bash
#这是一个每天晚上22:00定时给test目录授权的脚本
Dir=/data01/
DATE1=`date +%F`
DATE2=`date +%T`
DATE=$DATE1-$DATE2
ID=`id|awk '{print $1}'`
cd $Dir
chown -R www:www test/
Str1=`cd $Dir |ls -l test | awk 'NR==2{print $3,$4}'`
Str3=$Str1
Str2="www www"
if [ $? -eq 0 ];then
  if [ "$Str3" == "$Str2" ];then
    echo -e "\033[49;32m${ID} 用户于$DATE 修改test目录属组成功\033[0m"
  else
    echo -e "\033[49;31m${ID}  用户于$DATE 修改test目录属组失败\033[0m"
  fi
else
  echo -e "\033[49;31m${ID} 用户于$DATE test目录授权失败\033[0m"
fi

3、定时任务配置如下:

[root@ansible data01]# crontab -l
#*/1 * * * * /data01/chown_dinshi.sh >> /data01/chown_dinshi.txt

#上面这个定时任务是  每分钟执行一次脚本 并把执行脚本日志重定向到chown_dinshi.txt中

四、实战演练

1、手动执行脚本测试

目前test目录属主和属组权限为root

linux目录属主属组定时修改脚本_第2张图片

执行脚本测试

linux目录属主属组定时修改脚本_第3张图片

查看test目录权限是否修改

linux目录属主属组定时修改脚本_第4张图片

可以清楚的看到目录权限已修改

2、配置定时任务测试

现在我们恢复test目录权限 配合定时任务测试

恢复目录权限

linux目录属主属组定时修改脚本_第5张图片

开启定时任务测试并查看日志

linux目录属主属组定时修改脚本_第6张图片

定时任务已开启 等待一分钟测试

linux目录属主属组定时修改脚本_第7张图片

我们可以清楚的看到日志输出正常 现在我们去查看目录权限

linux目录属主属组定时修改脚本_第8张图片

此时我们可以清楚的看到目录权限已发生修改,脚本配合定时任务修改权限需求已完成

五、总结

从上述的试验环境中来说,其他还存在一定的小问题,就是不能精准实时的判定程序的启动时间,其实我们可以写一个java启动程序脚本,然后用我们上面这个脚本加个判断,如果程序启动我就执行修改目录的权限命令,这样是最好的

你可能感兴趣的:(linux,linux,运维,服务器)