您好,登錄后才能下訂單哦!
前言
有這樣一個場景,公司為了安全起見,需要對所有登錄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。
腳本文件創建好后,只需將它放入你的服務器中,位置可以自己隨意選擇,我這里就把它放在了tomcat下bin目錄中。
腳本文件放入服務器后其實還不能使用,會有兩個問題待解決,一個是格式問題,一個是權限問題。因為我們是文本文件創建的,其格式是文本格式,我們要改成unix格式,所以要進行如下設置
sed -i "s/ //" 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-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.
我們查看進程看一下是否真的啟動
[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
可以看到啟動沒有問題。
關閉
[root@localhost bin]# ./tomcat-8484.sh stop 關閉/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
查看進程確實是關閉成功的,好了我們的tomcat啟動腳本也就大功告成了,這個腳本還可以自己在此基礎上進行延伸,例如在啟動后就立即查看日志等。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。