Jump to...
redirecting...

Log for Ubuntu 台灣社群

請問一下,
我想要在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通用的寫法嗎
直接以root身份執行
這個 run.sh 用 sudo bash run.sh 出來的兩個檔案所有權都會是 root
chown就好了吧
沒看到以指定user執行那一句,這樣用sudo比較簡單
實際需求是在 root 權限執行的 script 以 $USER 權限執行安裝 nvm
sudo -u $USER touch user.txt
這個是指定 $USER 執行 touch user.txt
那就在debian安裝sudo
好吧,這樣應該比較單純
另外一個問題是,這個shell script執行是如果雞婆多下 sudo 結果會不一樣,該怎麼避免呢
$USER參數換成目標使用者名稱
你用sudo執行run.sh,$USER就變成root
所以要直接指定使用者
這個我有點疑問,我直接執行 sudo echo $USER 這樣還會是原user
有點稿不清楚其中差異
而且直接指定使用者,這個腳本就有點不通用了
[photo](media:AgACAgUAAx0CPRn5XQABAS11YTBDIBfIo6UhFcE5RwABWnKor5U_AAL9rDEbqzWAVVK2dQABQGw9MgEAAwIAA3MAAyAE@telegram)
直接sudo就變成用uid=0來跑了
環境變數有沒有繼承的差異吧
sudo echo $USER是讀取當前使用者的環境變數
sudo ./run.sh是已經變成root後,讀取的環境變數
那有辦法可以不要把user寫死嗎/__\?
直接禁止此script以root權限執行?
可以這樣@@? 可以設定677權限?
就是在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' 當第一個參數
GNOME 2021年亞洲網上峰會在 11 月 20-21 日舉行,現誠徵 GNOME、Linux 及開放源碼講題,希望大家多些投稿啊!9 月 28 日截止。

https://events.gnome.org/event/94/page/111-information-on-call-for-abstracts
GNOME 2021年亞洲網上峰會在 11 月 20-21 日舉行,現誠徵 GNOME、Linux 及開放源碼講題,希望大家多些投稿啊!9 月 28 日截止。

https://events.gnome.org/event/94/page/111-information-on-call-for-abstracts