
由於掛載磁碟機上的權限衝突且不斷變化(由於程式的開發結構而無法輕易解決),因此有一個腳本必須以root權限執行。
這可以完成sudo /usr/serverm1/lsintd
並提供良好的結果。但是,我們希望在啟動時自動執行該腳本。
由於權限不足,在啟動時在主用戶下執行腳本會導致核心轉儲。因此,我們認為我們可以在 crontab 中將其設為@reboot /usr/serverm1/lsintd
(按照建議這裡,但是這會使用根目錄(不存在)的設定和配置來運行它。
TLDR:我們如何運行該腳本,就像sudo /usr/serverm1/lsintd
在啟動時使用命令運行一樣?
我也嘗試應用於chmod u+x
二進位文件,但這仍然導致核心轉儲,就像使用常規權限運行一樣(想法取自讓使用者以 root 權限執行腳本)。
邊註:我承認這在某種程度上是一個 XY 問題,但是由於我們伺服器上其他一些服務的開發結構緩慢且組織不良,我們無法解決根本問題,必須解決這個問題。
答案1
一種方法是建立一個 systemd 單元。
您可以在這裡找到所有可能的選項:www.freedesktop.org/.../systemd.unit.html
但我將舉一個簡單的例子:
1.讓我們建立一個bash腳本,它將每次系統啟動的日期和時間寫入檔案:/root/file
只有root
使用者有權寫入和編輯/root
目錄中的檔案。
我要將用戶切換到root
讓sudo su -
我們建立一個腳本/root/timelog.sh
並使其可執行chmod +x /root/timelog.sh
#!/bin/bash
if ! [ /root/file ]; then touch /root/file; fi
echo $(date) >> /root/file
2.現在我們需要文件System Unit
:/etc/systemd/system/timelog.service
[Unit]
Description=timelog.service
[Service]
Type=oneshot
ExecStart=/root/timelog.sh
[Install]
WantedBy=multi-user.target
3.最後一個任務是確保它會隨系統啟動:
systemctl enable timelog