請問一下,
我想要在ubuntu用sudo執行的shell script中臨時使用原$USER的權限執行指令,實做的寫法如下:
#!/bin/bash
sudo touch root.txt
sudo -u $USER touch user.txt
執行
bash
run.sh這樣會生成所有權為root的root.txt及所有權為$USER的user.txt
但這種寫法依賴sudo套件,有辦法改寫成ubuntu及debian通用的寫法嗎
沒看到以指定user執行那一句,這樣用sudo比較簡單
實際需求是在 root 權限執行的 script 以 $USER 權限執行安裝 nvm
sudo -u $USER touch user.txt
這個是指定 $USER 執行 touch user.txt
另外一個問題是,這個shell script執行是如果雞婆多下 sudo 結果會不一樣,該怎麼避免呢
你用sudo執行run.sh,$USER就變成root
這個我有點疑問,我直接執行 sudo echo $USER 這樣還會是原user
sudo echo $USER是讀取當前使用者的環境變數
sudo .
/run.sh是已經變成root後,讀取的環境變數
就是在script裡頭檢查$UID,如果是0就顯示警告訊息並跳出
請問大大有人熟悉iptables string match module嗎?
我在 a.b.c.d 這台server上 下了
iptables -I INPUT -p tcp --dport 80 -m string --algo bm --string "number" -j REJECT
然後在另一台機器下
curl -X 'POST' -d '{"string":"number"}' "http://a.b.c.d/" <=會通(期望是能block掉的)
curl -X 'POST' -d '{"string":"zzzzz"}' "http://a.b.c.d/number" <= 這樣就不通了
你要做的事情是在L7過濾,可是iptables本身只能作到L4
那樣應該用參數將使用者名稱轉傳給
run.sh 比較適當。不然就是要寫追蹤父行程資料的 script 。
類似 sudo bash
run.sh $USER 這樣@@?
userA 下令 'sudo bash
run.sh $USER' => userA 的 bash 收到 後對 sudo 下令 'bash
run.sh userA' => userA 的 sudo 啟動 root 的 bash 並下令 '
run.sh userA' => root 的 bash 載入執行
run.sh ,並且以 'uaerA' 當第一個參數