Linux执行sudo echo xxx >> 命令提示权限不够的问题

问题:
想要将文本"aa"追加到root用户的文件a.txt里,于是使用sudo echo aa >> a.txt命令,结果出现了权限不够的问题。
在这里插入图片描述
原因:
出现此问题的原因是文件a.txt是root用户所有,普通用户无写权限
在这里插入图片描述
sudo命令只让echo命令有root权限,而重定向命令>>不具有该权限,或者说root权限没有“传递”到重定向命令>>,因此也就无法将输出文本重定向到root用户的文件a.txt。
解决办法:
方法一:
使用bash -c命令。该命令可以让bash运行整条字符串命令,前加sudo使得整条命令运行时具有root权限

sudo bash -c 'echo aa >> a.txt'

方法二:
使用tee命令。该命令可以将管道中内容写入文件,只需要对该命令赋予root权限就可以操作a.txt文件

echo aa |sudo tee -a a.txt >/dev/null

注意:tee命令的-a选项是追加的意思,如果不加此选项,输出文本将覆盖文件。
方法三:
既然是普通用户没有权限写入,那就使用chmod增加权限就可以了。

sudo chmod a+w a.txt
echo echo aa >> a.txt

方法四:
如果你可以切换到root用户,那就简单了,直接用root用户的身份运行命令就可以了

su
echo aa >> a.txt

方法三和方法四不是推荐的做法,因为方法三改变了文件的属性,而方法四则需要用root的身份运行,都会降低系统安全性
另外使用sudo并非所有的命令root权限不可传递,比如下面的命令

sudo nohup apt-get update

而apt-get命令就获得了root权限而正常执行
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_60352504/article/details/121442148