Shell-Script

防止腳本的某些行以 root 身份執行

  • June 18, 2015

假設我正在編寫一個需要 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; 指定目標使用者的使用者名

引用自:https://unix.stackexchange.com/questions/210444