Dav*_*ave 18 bash permissions sudo
我正在使用亚马逊 Linux。我正在尝试将一些文本附加到文件中。该文件归 root 所有。我想通过使用“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
Run Code Online (Sandbox Code Playgroud)
我如何调整我的陈述,以便我可以将必要的文本附加到文件中?
Rav*_*ina 40
您必须使用tee
实用程序将流重定向或附加到需要某些权限的文件,例如:
echo something | sudo tee /etc/file
Run Code Online (Sandbox Code Playgroud)
或追加
echo something | sudo tee -a /etc/file
Run Code Online (Sandbox Code Playgroud)
因为默认情况下,您的 shell 使用您自己的用户权限和重定向运行,>
或者>>
将以与您的用户相同的权限完成,您实际上是在运行echo
usingsudo
并在root
未经许可的情况下重定向它。
作为替代方案,您还可以获取 root shell,然后尝试正常重定向:
sudo -i
echo something >> /etc/pat/to/file
exit
Run Code Online (Sandbox Code Playgroud)
或者sudo -s
对于非登录 shell。
您还可以使用 root 访问权限运行非交互式 shell:
sudo bash -c 'echo something >> /etc/somewhere/file'
Run Code Online (Sandbox Code Playgroud)