sudo重定向输出权限不足(permission denied)
references
一般情况下的文本重定向
- 类似于
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
tee - read from standard input and write to standard output and files
- 利用
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 覆盖到原位置;
- 注意备份文件
|