前言
有這樣一個(gè)場(chǎng)景,公司為了安全起見,需要對(duì)所有登錄Linux服務(wù)器做安全限制,要求除了管理員其他要登錄linux服務(wù)器的員工不能用最高權(quán)限賬號(hào)登錄,要?jiǎng)?chuàng)建新的用戶,對(duì)目錄及文件權(quán)限做出控制,只能對(duì)需要操作的目錄允許讀,寫,執(zhí)行權(quán)限,其他目錄只有讀的權(quán)限,并且所有tomcat不能直接在bin中用startup.sh,shutdown.sh進(jìn)行啟動(dòng)和停止,要通過寫shell腳本進(jìn)行此操作,也就是說有兩個(gè)步驟,創(chuàng)建用戶并設(shè)置權(quán)限,寫tomcat啟動(dòng)腳本,下面我們就完成這兩個(gè)步驟。
1.首先我們就來創(chuàng)建一個(gè)普通用戶。
groupadd tomcat #加組
useradd -g tomcat -s /usr/sbin/nologin tomcat #向組加用戶
usermod -L tomcat #鎖定密碼,使密碼無效
passwd tomcat # 設(shè)置密碼
通過這四步,我們就把普通用戶創(chuàng)建好了,在創(chuàng)建用戶時(shí),我們是先創(chuàng)建的組,組創(chuàng)建完成后創(chuàng)建用戶并加入該組。
用戶創(chuàng)建完成后,就開始給用戶設(shè)置權(quán)限
chown -R tomcat:tomcat /data #分配權(quán)限給用戶
這就是給tomcat這個(gè)用戶設(shè)置了可以操作data目錄及其子目錄下的權(quán)限,-R就代表該目錄及其級(jí)聯(lián)子目錄。
[root@localhost data]# ls -l
total 0
drwxr-xr-x. 4 tomcat tomcat 79 May 20 08:03 tomcat
[root@localhost data]#
此時(shí)我們通過ls -l
命令就可以看到data目錄已經(jīng)屬于tomcat用戶,且擁有查看,寫入,執(zhí)行權(quán)限
2.完成了用戶創(chuàng)建后,我們就要開始完成tomcat啟動(dòng)腳本。
如代碼所示:
#!/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 "啟動(dòng)$tomcat_home"
$STARTTOMCAT
cd /data/tomcat/tomcat-8484/logs
tail -f catalina.out
;;
stop)
echo "關(guān)閉$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的臨時(shí)目錄
#rm $tomcat_home/work/* -rf
;;
restart)
echo "關(guān)閉$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 "啟動(dòng)$tomcat_home"
$STARTTOMCAT
#看啟動(dòng)日志
#tail -f $tomcat_home/logs/catalina.out
;;
logs)
cd /data/tomcat/tomcat-8484/logs
tail -f catalina.out
;;
esac
上面代碼就是tomcat啟動(dòng)腳本,首先我們要?jiǎng)?chuàng)建一個(gè)文本文件,然后將后綴名變成.sh,這里我是用端口號(hào)為8484的tomcat作為例子,從腳本文件中可以看到,總共只需對(duì)自己tomcat位置和日志位置進(jìn)行自定義改動(dòng)后就可以使用,總共有四個(gè)命令,start,stop,restart,logs。
腳本文件創(chuàng)建好后,只需將它放入你的服務(wù)器中,位置可以自己隨意選擇,我這里就把它放在了tomcat下bin目錄中。
腳本文件放入服務(wù)器后其實(shí)還不能使用,會(huì)有兩個(gè)問題待解決,一個(gè)是格式問題,一個(gè)是權(quán)限問題。因?yàn)槲覀兪俏谋疚募?chuàng)建的,其格式是文本格式,我們要改成unix格式,所以要進(jìn)行如下設(shè)置
sed -i "s/
//" tomcat-8484.sh #設(shè)置腳本文件為unix格式
完成了格式設(shè)置后就要為該腳本文件設(shè)置權(quán)限,因?yàn)閘inux默認(rèn)文件的權(quán)限是drwxr-xr-x,即所有運(yùn)行權(quán)限賦予文件所有者也就是系統(tǒng)管理員(當(dāng)前我是用系統(tǒng)管理員登錄),把讀和運(yùn)行的權(quán)限賦予群組用戶,把讀的權(quán)限賦予其他用戶,所以我們要對(duì)腳本文件權(quán)限進(jìn)行重新設(shè)置。
chmod 777 ./tomcat-8484.sh
chmod命令就是改變權(quán)限的命令,這個(gè)777是什么意思呢?
在Linux系統(tǒng)中,文件或目錄的權(quán)限又分為3種:只讀、只寫、可執(zhí)行。
依照上面的表格,權(quán)限組合就是對(duì)應(yīng)權(quán)限值求和,如下:
7 = 4 + 2 + 1 讀寫運(yùn)行權(quán)限
5 = 4 + 1 讀和運(yùn)行權(quán)限
4 = 4 只讀權(quán)限
因此,大家也就明白了 chmod 777 ./tomcat-8484.sh
命令的含義了。
此時(shí)我們的tomcat啟動(dòng)腳本就完成了,下面我們來演示一下。
啟動(dòng)
[root@localhost bin]# ./tomcat-8484.sh start
啟動(dòng)/data/tomcat/tomcat-8484
Using CATALINA_BASE: /data/tomcat/tomcat-8484
Using CATALINA_HOME: /data/tomcat/tomcat-8484
Using CATALINA_TMPDIR: /data/tomcat/tomcat-8484/temp
Using JRE_HOME: /usr
Using CLASSPATH: /data/tomcat/tomcat-8484/bin/bootstrap.jar:/data/tomcat/tomcat-8484/bin/tomcat-juli.jar
Tomcat started.
我們查看進(jìn)程看一下是否真的啟動(dòng)
[root@localhost bin]# ps -ef |grep tomcat
root 5569 1 7 14:09 pts/0 00:00:06 /usr/bin/java -Djava.util.logging.config.file=/data/tomcat/tomcat-8484/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /data/tomcat/tomcat-8484/bin/bootstrap.jar:/data/tomcat/tomcat-8484/bin/tomcat-juli.jar -Dcatalina.base=/data/tomcat/tomcat-8484 -Dcatalina.home=/data/tomcat/tomcat-8484 -Djava.io.tmpdir=/data/tomcat/tomcat-8484/temp org.apache.catalina.startup.Bootstrap start
root 5611 5340 0 14:10 pts/0 00:00:00 grep --color=auto tomcat
可以看到啟動(dòng)沒有問題。
關(guān)閉
[root@localhost bin]# ./tomcat-8484.sh stop
關(guān)閉/data/tomcat/tomcat-8484
sh: line 2: kill: (18484) - No such process
[root@localhost bin]# ps -ef |grep tomcat
root 5621 5340 0 14:13 pts/0 00:00:00 grep --color=auto tomcat
查看進(jìn)程確實(shí)是關(guān)閉成功的,好了我們的tomcat啟動(dòng)腳本也就大功告成了,這個(gè)腳本還可以自己在此基礎(chǔ)上進(jìn)行延伸,例如在啟動(dòng)后就立即查看日志等。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。