[Linux Shell]使用输出重定向符'>'或'>>'将标准输出重定向到没有写入权限的目录下的文件

在shell中使用>重定向输出提示没有权限怎么办

目标

使用输出重定向符’>‘或’>>'将标准输出重定向到/opt/1.log

解法:

  • sudo sh -c 'echo "hello world" > /opt/1.log'
  • su root切换到root用户再操作

下文是详细说明

  1. 尝试执行这个shell脚本:echo "hello world" > /opt/1.log会提示没有权限。
sh-4.3$ echo "hello world" > /opt/1.log
sh: /opt/1.log: Permission denied		# 没有写入权限
sh-4.3$ whoami 
bob										# 用户:bob
sh-4.3$ ls -l / | grep opt	
drwxr-xr-x   4 root root  4096 Oct 18 16:38 opt
  1. 第一时间肯定会想到加上sudo: sudo echo "hello world" > /opt/1.log
sh-4.3$ sudo echo "hello world" > /opt/1.log
sh: /opt/1.log: Permission denied

连密码输入环节都没有

  1. 经过查询,>>>根本就不是命令,sudo也就不会对他们有效果。他们是sh,bash等主流外壳可以识别的一个操作符,因此重定向的操作是解释器外壳的行为。因此,如果解释器有了root权限,这个活就可以干了。
sudo sh -c 'echo "hello world" > /opt/1.log'
[sudo] password for bob: 
cat /opt/1.log
hello world
sudo sh -c 'echo "hello world" >> /opt/1.log'
hello world
hello world
  • 当然也可以用第二种方法切换到root用户再执行带有>>>的命令
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值