前言
有这样一个场景,公司为了安全起见,需要对所有登录Linux服务器做安全限制,要求除了管理员其他要登录linux服务器的员工不能用最高权限账号登录,要创建新的用户,对目录及文件权限做出控制,只能对需要操作的目录允许读,写,执行权限,其他目录只有读的权限,并且所有tomcat不能直接在bin中用startup.sh,shutdown.sh进行启动和停止,要通过写shell脚本进行此操作,也就是说有两个步骤,创建用户并设置权限,写tomcat启动脚本,下面我们就完成这两个步骤。
1.首先我们就来创建一个普通用户。
groupadd tomcat #加组 useradd -g tomcat -s /usr/sbin/nologin tomcat #向组加用户 usermod -L tomcat #锁定密码,使密码无效 passwd tomcat # 设置密码
通过这四步,我们就把普通用户创建好了,在创建用户时,我们是先创建的组,组创建完成后创建用户并加入该组。
用户创建完成后,就开始给用户设置权限
chown -R tomcat:tomcat /data #分配权限给用户
这就是给tomcat这个用户设置了可以操作data目录及其子目录下的权限,-R就代表该目录及其级联子目录。
[root@localhost data]# ls -l total 0 drwxr-xr-x. 4 tomcat tomcat 79 May 20 08:03 tomcat [root@localhost data]#
此时我们通过ls -l 命令就可以看到data目录已经属于tomcat用户,且拥有查看,写入,执行权限
2.完成了用户创建后,我们就要开始完成tomcat启动脚本。
如代码所示:
#!/bin/bash
tomcat_home=/data/tomcat/tomcat-8484
SHUTDOWN=$tomcat_home/bin/shutdown.sh
STARTTOMCAT=$tomcat_home/bin/startup.sh
case $1 in
start)
echo "启动$tomcat_home"
$STARTTOMCAT
cd /data/tomcat/tomcat-8484/logs
tail -f catalina.out
;;
stop)
echo "关闭$tomcat_home"
#$SHUTDOWN
netstat -anp | grep 8484| grep -v grep | awk '{print $7}' | sed -e 's//java//g' | sed -e 's/^/kill -9 /g' | sh
#pidlist=`ps -ef |grep tomcat |grep -v "grep"|awk '{print $2}'`
#kill -9 $pidlist
#删除日志文件,如果你不先删除可以不要下面一行
#rm $tomcat_home/logs/* -rf
#删除tomcat的临时目录
#rm $tomcat_home/work/* -rf
;;
restart)
echo "关闭$tomcat_home"
$SHUTDOWN
#pidlist=`ps -ef |grep tomcat |grep -v "grep"|awk '{print $2}'`
#pidlist=`netstat -anp |grep 8484 |grep -v "grep"|awk '{print $2}'`
#netstat -anp | grep 8484| grep -v grep | awk '{print $7}' | sed -e 's//java//g' | sed -e 's/^/kill -9 /g' | sh
#kill -9 $pidlist
sleep 5
echo "启动$tomcat_home"
$STARTTOMCAT
#看启动日志
#tail -f $tomcat_home/logs/catalina.out
;;
logs)
cd /data/tomcat/tomcat-8484/logs
tail -f catalina.out
;;
esac
上面代码就是tomcat启动脚本,首先我们要创建一个文本文件,然后将后缀名变成.sh,这里我是用端口号为8484的tomcat作为例子,从脚本文件中可以看到,总共只需对自己tomcat位置和日志位置进行自定义改动后就可以使用,总共有四个命令,start,stop,restart,logs。









