有这样一个场景,公司为了安全起见,需要对所有登录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 -ltotal 0drwxr-xr-x. 4 tomcat tomcat 79 May 20 08:03 tomcat[root@localhost data]# 此时我们通过ls -l 命令就可以看到data目录已经属于tomcat用户,且拥有查看,写入,执行权限
2
完成了用户创建后,我们就要开始完成tomcat启动脚本 。
如代码所示:
#!/bin/bashtomcat_home=/data/tomcat/tomcat-8484SHUTDOWN=$tomcat_home/bin/shutdown.shSTARTTOMCAT=$tomcat_home/bin/startup.shcase $1 instart)echo "启动$tomcat_home"$STARTTOMCATcd /data/tomcat/tomcat-8484/logstail -f catalina.out;;stop)echo "关闭$tomcat_home"#$SHUTDOWNnetstat -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 $pidlistsleep 5echo "启动$tomcat_home"$STARTTOMCAT#看启动日志#tail -f $tomcat_home/logs/catalina.out;;logs)cd /data/tomcat/tomcat-8484/logstail -f catalina.out;;esac上面代码就是tomcat启动脚本,首先我们要创建一个文本文件,然后将后缀名变成.sh,这里我是用端口号为8484的tomcat作为例子,从脚本文件中可以看到,总共只需对自己tomcat位置和日志位置进行自定义改动后就可以使用,总共有四个命令,start,stop,restart,logs 。
脚本文件创建好后,只需将它放入你的服务器中,位置可以自己随意选择,我这里就把它放在了tomcat下bin目录中 。
脚本文件放入服务器后其实还不能使用,会有两个问题待解决,一个是格式问题,一个是权限问题 。因为我们是文本文件创建的,其格式是文本格式,我们要改成unix格式,所以要进行如下设置
sed -i "s/r//" tomcat-8484.sh #设置脚本文件为unix格式
完成了格式设置后就要为该脚本文件设置权限,因为linux默认文件的权限是drwxr-xr-x,即所有运行权限赋予文件所有者也就是系统管理员(当前我是用系统管理员登录),把读和运行的权限赋予群组用户,把读的权限赋予其他用户,所以我们要对脚本文件权限进行重新设置 。
chmod 777 ./tomcat-8484.sh chmod命令就是改变权限的命令,这个777是什么意思呢?
在Linux系统中,文件或目录的权限又分为3种:只读、只写、可执行 。
文章插图
依照上面的表格,权限组合就是对应权限值求和,如下:
7 = 4 + 2 + 1 读写运行权限
5 = 4 + 1 读和运行权限
4 = 4 只读权限
因此,大家也就明白了 chmod 777 ./tomcat-8484.sh 命令的含义了 。
此时我们的tomcat启动脚本就完成了,下面我们来演示一下 。
启动
[root@localhost bin]# ./tomcat-8484.sh start启动/data/tomcat/tomcat-8484Using CATALINA_BASE: /data/tomcat/tomcat-8484Using CATALINA_HOME: /data/tomcat/tomcat-8484Using CATALINA_TMPDIR: /data/tomcat/tomcat-8484/tempUsing JRE_HOME: /usrUsing CLASSPATH: /data/tomcat/tomcat-8484/bin/bootstrap.jar:/data/tomcat/tomcat-8484/bin/tomcat-juli.jarTomcat started.
推荐阅读
- 四种Python爬虫常用的定位元素方法对比,你偏爱哪一款?
- 热加载和热部署,没听过?看看 Tomcat 是怎么实现的
- 使用 Go 打造另一款简单实用的 ORM
- Mac上我常用的几个软件
- 电脑里这些不常用的接口你都知道啥功能吗?
- 安详有用的中药减肥茶,DIY的山楂减肥茶
- 学习k8s,分享给大家一个开箱即用的minikube 环境
- docker下拉取tomcat镜像以及配置,亲测可用
- centos7中利用logrotate工具切割tomcat日志
- 简单易用的数据库哪个比较好?