我必須echo在腳本my.sh中運行sudo因為許可。我不想用sudo my.sh. 我不想使用bash -c "..."因為轉義。
沒有其他解決方案嗎?
我的.sh
#!/usr/bin/bash
>/file.tmp \
echo '
a="S T"
z=\a\b\c\
'
uj5u.com熱心網友回復:
您在這里遇到的問題是輸出重定向>/file.tmp必須以提升的權限發生。這意味著您要么必須按原樣啟動腳本,要么以sudo my.sh賦予其提升權限的方式執行重定向。運行是不夠的,sudo echo因為只有echo提升的權限,但輸出重定向將以非 root 用戶身份運行,因為它是 shell 內置功能,而不是外部命令。
有一個標準工具tee可以幫助解決這個問題。此方法通常在運行curl以獲取需要饋送到 root 的資料時使用,例如安裝 debian apt 存盤庫配置和簽名密鑰。
$ whoami
dho
$ whoami | sudo tee whoami.txt >/dev/null
$ ls -la whoami.txt
-rw-r--r-- 1 root root 4 2022-06-03T09:08:22 whoami.txt
因此,您可以看到我whoami使用自己的用戶啟動,但檔案最終以 root 權限寫入,因為tee替換原始示例中的輸出重定向的sudo tee.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/487320.html
