
我嘗試將值“1”放入 的某個虛擬文件中/proc
,儘管使用了以下命令,但我得到“權限被拒絕” sudo
:
name@comp-name:/etc/dhcp$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: Permission denied
我猜想該echo
命令以 root 權限運行,但重定向 ( >
) 可能在沒有 root 權限的情況下運行?我可以使用 root 權限來運行它們嗎?
答案1
在這種情況下,正如您所說,sudo
僅適用於。echo
相反,您可以像這樣運行提升的 shell:
sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
或甚至更短:
sudo -s 'echo 1 > /proc/sys/net/ipv4/ip_forward'
答案2
推薦的方法是透過管道傳輸到程序tee
echo 1 | tee /proc/sys/net/ipv4/ip_forward
答案3
問題是重定向是由您的 shell 完成的,而不是sudo
.通常,您執行的程式會exec()
在重定向後被編輯。由於您沒有寫入該檔案的權限,因此重定向失敗。如上所述,推薦的方法是使用tee
,如
echo stuff | sudo tee /some/file/path