在使用指令的時候通常會很習慣的使用
$ echo foo > bar.txt -bash: bar.txt: Permission denied
來新增資料到檔案,所以權限不夠就會很習慣的使用 sudo 直接提權
$ sudo echo foo > bar.txt -bash: bar.txt: Permission denied
不過這樣是行不通的因為 > 並不會吃到權限,所以會新增失敗。
解決使用 > 出現 Permission denied 的問題
那要怎麼做才可以解決這個問題呢?其實有三種方法可以解決
解決方法 1
使用 sh 包一層就可以快速的解決這個問題
$ sudo sh -c "echo foo > bar.txt"
解決方法 2
也可以使用 tee 來幫助完成這件事情,它吃了 pipe 會把東西丟到 stdout 也會把它丟到檔案
$ echo foo | sudo tee bar.txt foo
解決方法 3
直接使用 sudo su 直接開一個新的 shell 直接做對應的動作也是一個好方法
$ sudo su # echo foo > bar.txt