Shell-Script
防止腳本的某些行以 root 身份執行
假設我正在編寫一個需要 root 權限才能執行的 shell 腳本,例如 -
#!/bin/sh ip -s -s neigh flush all ufw enable
如何防止某些程式碼行以 root 身份執行,即假設我在上面的腳本中添加了一行來啟動 TOR 瀏覽器。
#!/bin/sh ip -s -s neigh flush all ufw enable sh -c '"/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" --detach || ([ ! -x "/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" ] && "$(dirname "$*")"/Browser/start-tor-browser --detach)' dummy %k
由於 TOR 始終以非 root 模式執行,我應該在上述腳本中進行哪些更改以允許以非 root 使用者身份執行 tor 並將腳本的其餘部分作為 root 使用者執行?
使用
sudo
:#!/bin/sh ip -s -s neigh flush all ufw enable sudo -Hu username sh -c '"/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" --detach || ([ ! -x "/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" ] && "$(dirname "$*")"/Browser/start-tor-browser --detach)' dummy %k
-H
:將$HOME
環境變數設置為目標使用者的主目錄-u
:以指定的目標使用者身份執行命令,而不是作為root
username
: 論據-u
; 指定目標使用者的使用者名