0
点赞
收藏
分享

微信扫一扫

linux_sudo重定向输出权限不足(permission denied)


文章目录

  • ​​sudo重定向输出权限不足(permission denied)​​
  • ​​references​​
  • ​​一般情况下的文本重定向​​
  • ​​使用sudo bash -c​​
  • ​​sudo + cat 创建文件​​
  • ​​使用tee​​
  • ​​tee -a 追加​​
  • ​​临时切换到管理员sudo -i​​
  • ​​覆盖法​​

sudo重定向输出权限不足(permission denied)

references

  • ​​command line - How to solve "permission denied" when using sudo with redirection in Bash? - Ask Ubuntu​​

一般情况下的文本重定向

  • 类似于​​echo "test" >> test(这和powershell不同,powershell可以不加echo)​
  • 直接再echo 前面加sudo 不改变权限效果

使用sudo bash -c

cxxu_kali➜~» sudo bash -c "echo test >> /etc/apt/testbysudo"                    [17:39:04]
cxxu_kali➜~» cat /etc/apt/testbysudo [17:39:16]
test

sudo + cat 创建文件

cxxu_kali➜~» sudo bash -c "cat > /etc/apt/testbysudo"                           [17:42:39]
lines by `sudo bash -c cat >`

同样也是可以的

但是输入重定向(<<,here-document)变得不太好用

使用tee

  • ​​Linux tee Command {Command Options and Examples} (phoenixnap.com)​​

tee - read from standard input and write to standard output and files

  • 利用​​tee​​​ 来代替重定向输出​​>​
  • tee经常和管道符一起使用,但却不是必须
  • 例如执行​​ifconfig | tee ifinfo​
  • 该命令会将网卡信息即写入到文件,也打印到终端
  • 又比如:​​echo "service sshd start" |sudo tee -a /etc/rc.local​
  • 该命令可以配置linux 开机自己启动ssh服务
  • 将sudo 作用于tee命令


再比如:

cxxu_kali➜~» sudo tee fileBytee << eof                                          [18:07:17]
heredoc> line1
heredoc> line2
heredoc> eof
[sudo] password for cxxu_kali:
line1
line2
cxxu_kali➜~» nl fileBytee [18:08:38]
1 line1
2 line2

tee -a 追加

cxxu_kali➜~» sudo tee -a \etc\apt\fileBytee << eof                              [18:15:47]
heredoc> &&iioopp
heredoc> sdfl
heredoc> eof
&&iioopp
sdfl
cxxu_kali➜~» cat etcaptfileBytee [18:16:09]
line1
line2
&&iioopp
sdfl

临时切换到管理员sudo -i

覆盖法

在别处创建文件然后通过sudo mv覆盖掉
这比较绕,但是编写脚本的时候也是是一种选择

  • 例如,您可以将/etc/apt/下的文件读取到出来,
  • 通过管道符在用户家目录创建一个有对应内容的文件,
  • 然后在家目录中修改该文件,
  • 再将该文件通过sudo mv 覆盖到原位置;
  • 注意备份文件


举报

相关推荐

0 条评论