三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

浅谈tee命令

浅谈tee命令

浅谈 Linux 中的 tee 命令

tee是 Linux 系统中极其经典且实用的一个命令行工具。它的名字来源于水管工程中的T 型三通管(T-splitter)

在水管中,三通管把一股水流分成两股;在 Linux 终端里,tee标准输入(stdin)的数据分成两股:一股输出到屏幕(标准输出 stdout),另一股写入到文件中。

一、 基础用法

如果你只使用重定向符号>,数据会写进文件,但屏幕上就看不到了。而tee可以让你“边看边存”。

  • 覆盖写入:
ls-l|teeoutput.txt

效果:屏幕会显示ls -l的结果,同时这些结果也会被覆盖写入output.txt

  • 追加写入(最常用):添加-a(append) 参数,类似于>>
echo"new line"|tee-aoutput.txt

二、 CTF 与实战中的功能

在 Web 安全实战或 CTF 靶机中,tee出场率极高,因为它能优雅地解决一个权限提升时经常遇到的“Permission denied” (权限拒绝)痛点。

1. 经典报错场景

假设你当前是一个普通用户,但你需要向系统的核心文件(如/etc/passwd甚至某些配置后门)写入内容。你可能会直觉地加上sudo

sudoecho"hacker::0:0:::/bin/bash">>/etc/passwd

结果:终端提示无权限

为什么会失败?因为在这个命令中,sudo只赋予了echo命令 root 权限,但重定向符号 (>>)是由当前的 Bash Shell 解释执行的。你当前的 Bash 仍然是普通用户,自然没有权限打开并写入/etc/passwd

2.tee的破局之法

这个时候,tee配合管道符|就成了标准答案:

echo"hacker::0:0:::/bin/bash"|sudotee-a/etc/passwd

原理:echo以普通用户身份运行,将字符串送入管道。管道另一端的tee是以sudo(root) 身份运行的,因此它拥有修改/etc/passwd的无上权力(前提是当前用户有执行sudo tee的权限)。

← 返回列表