Bash

嘗試使用 sudo 將文本附加到文件時出現“權限被拒絕”

  • August 1, 2017

我正在使用亞馬遜 Linux。我正在嘗試將一些文本附加到文件中。該文件歸根使用者所有。我想通過使用“sudo”,我可以附加所需的文本,但我得到“權限被拒絕”,見下文

[myuser@mymachine ~]$ ls -al /etc/yum.repos.d/google-chrome.repo
-rw-r--r-- 1 root root 186 Jul 31 15:50 /etc/yum.repos.d/google-chrome.repo
[myuser@mymachine ~]$ sudo echo -e "[google-chrome]\nname=google-chrome\nbaseurl=http://dl.google.com/linux/chrome/rpm/stable/\$basearch\nenabled=1\ngpgcheck=1\ngpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub" >> /etc/yum.repos.d/google-chrome.repo
-bash: /etc/yum.repos.d/google-chrome.repo: Permission denied

如何調整我的聲明,以便我可以將必要的文本附加到文件中?

您必須使用tee實用程序將流重定向或附加到需要一些權限的文件,例如:

echo something | sudo tee /etc/file

或附加

echo something | sudo tee -a /etc/file

因為預設情況下,您的 shell 使用您自己的使用者權限和重定向執行,>或者>>將使用與您的使用者相同的權限完成,所以您實際上是在echo使用sudo並在未經許可的情況下重定向它root

作為替代方案,您也可以獲取 root shell,然後嘗試正常重定向:

sudo -i
echo something >> /etc/pat/to/file
exit

sudo -s用於非登錄外殼。

您還可以使用 root 訪問執行非互動式 shell:

sudo bash -c 'echo something >> /etc/somewhere/file'

引用自:https://unix.stackexchange.com/questions/382946