遠程ssh向root權限文件中追加內容

由於最近須要批量的向服務器系統文件中追加內容,之前都是直接用sudo就作了,可是……bash


舉個例子,好比我遠程向服務器的/tmp/中建立一個文件test.txt,再將本機的一個文件傳到服務器的/tmp/目錄下:服務器

Mac:~ wangdong$ ssh backup1 "sudo touch /tmp/test.txt"

上面的命令,雖然權限不對,可是用了sudo是以root權限執行了,沒有什麼問題。ssh


可是如今我須要遠程將一條新的crontab內容追加到系統的/etc/crontab文件中,若是依舊使用上面的方法:ide

Mac:~ wangdong$ ssh backup1 "sudo echo "10 10 * * * root echo 123" >> /etc/crontab"
bash: /etc/crontab: Permission denied
Mac:~ wangdong$

在報錯中能夠看到,提示是bash的權限錯誤,可是我命令中並無使用bash。crontab

其實使用的「>>」是一個bash,sudo命令只是給了echo的root權限,可是「>>」並無權限。it

這裏能夠使用bash -c解決,例如:io

Mac:~ wangdong$ ssh backup1 'sudo bash -c "echo "10 10 * * * root echo 123" >> /etc/crontab"'

這樣就沒問題了。class

相關文章
相關標籤/搜索