Skip to content
📌知识点小结
  • Linux 文件操作:mkdir 建目录、touch 建空文件、cp 复制、mv 移动/改名、rm 删除(rm -r 删目录)。
  • 每个文件有三组权限(属主/属组/其他人),每组含读 r、写 w、执行 x;ls -l 第一列如 -rwxr-xr-- 就是权限位。
  • chmod 修改权限(如 chmod +x 脚本、chmod 755 文件),chown 修改属主;数字权限中 r=4、w=2、x=1。
  • root 是最高权限用户,普通用户用 sudo 临时提权执行管理命令;安全实验中靶场容器常默认 root。
  • 权限模型是理解反弹 Shell、提权、Web 目录读写的基础,务必结合 ls -l 反复对照。
✅自测一下

0.35 Linux 基础命令与权限模型 ​

第〇篇【零基础预科】免费。前面 0.12、0.13 学会了打开终端和"导航",这一篇补上两件安全学习天天要用的东西:文件操作命令和 Linux 权限模型。看不懂权限,后面读 ls -l、配靶场、理解反弹 Shell 和提权都会发懵。

一、文件与目录操作命令 ​

导航命令(pwd / ls / cd)只让你"到处看",真正动手改东西要用下面这些。

命令含义典型用法
mkdir 目录名make directory,建目录mkdir lab
touch 文件名建空文件 / 更新时间戳touch notes.txt
cp 源 目标copy,复制cp a.txt b.txt
mv 源 目标move,移动或改名mv a.txt ../、mv old.txt new.txt
rm 文件remove,删除文件rm notes.txt
rm -r 目录递归删除目录及其内容rm -r lab

动手走一遍,建立"建 → 复制 → 改名 → 删除"的完整感觉:

bash
mkdir project              # 建一个 project 目录
cd project                 # 进去
touch hello.txt            # 建一个空文件
cp hello.txt hello.bak     # 复制一份备份
mv hello.bak renamed.txt   # 把备份改名
ls -l                      # 看看现在有什么
rm renamed.txt             # 删掉改名后的文件
cd ..                      # 返回上一级
rm -r project              # 整个目录删掉

几个新手必踩的点:

  • 删目录必须加 -r。 目录里还套着文件和子目录,rm 默认只删文件,直接 rm 目录名 会报 "is a directory"。-r 是 recursive(递归),意思是一层层钻进去全删掉。
  • mv 同时负责"移动"和"改名"。 源和目标在同一目录就是改名,目标是另一个路径就是移动。
  • cp 复制目录也要加 -r(cp -r 目录 目标),道理和 rm 一样。
  • 删除前多看一眼。 Linux 命令行没有"回收站",rm 删掉就没了,养成删之前先 pwd、ls 确认位置的习惯。

常用的查看系统信息命令 ​

bash
whoami          # 我现在是谁(当前用户名)
id              # 当前用户的 uid、gid 和所属组
uname -a        # 内核与系统信息
date            # 当前时间
history         # 历史命令
clear           # 清屏(或 Ctrl+L)

id 在安全复现里出现频率极高——命令执行成功后,大家第一反应就是敲 id,看回显的 uid=0(root) 还是 uid=33(www-data),以此判断当前是什么权限。

二、Linux 权限模型 ​

2.1 为什么需要权限 ​

Linux 是多用户系统,同一台机器上可以有多个账号。为了防止用户互相乱看、乱改文件,每个文件都规定了"谁能读、谁能写、谁能执行"。

权限回答两个问题:

  1. 针对谁——文件属主、属组成员、还是其他人;
  2. 能做什么——读、写、执行。

2.2 读懂 ls -l 的输出 ​

执行 ls -l,会看到类似这样的结果:

-rwxr-xr--  1 ubuntu ubuntu  1289 Sep 30 10:00 detect.py
drwxr-xr-x  2 ubuntu ubuntu  4096 Sep 30 09:00 lab

拆开看每一列:

部分示例含义
第 1 个字符- / d文件类型:- 普通文件,d 目录(directory)
接下来 9 位rwxr-xr--权限位,每 3 位一组
属主ubuntu文件拥有者
属组ubuntu文件所属的组
大小1289字节数
时间 / 名字Sep 30 10:00 detect.py修改时间与文件名

重点看那 9 位权限位,它被均分成三组:

 rwx   r-x   r--
 └─┬─┘ └─┬─┘ └─┬─┘
  属主   属组   其他人
 user   group  other
  • 属主(user):文件主人的权限,这里是 rwx,可读、可写、可执行;
  • 属组(group):同组用户的权限,这里是 r-x,可读、可执行,但不能写(- 占位);
  • 其他人(other):所有其他人,这里是 r--,只能读。

三个字母的含义:

符号英文含义对文件 / 对目录的区别
rread读文件:能看内容;目录:能列出里面有什么(ls)
wwrite写文件:能改内容;目录:能在里面新建/删除文件
xexecute执行文件:能当程序运行;目录:能 cd 进去、访问里面的文件

目录的 x 特别容易忽略: 对目录而言,x 表示"能否进入/穿过它"。哪怕你对某个文件有读权限,但只要通往它的某一级目录没有 x,你照样进不去、读不到。

2.3 用数字表示权限(chmod 755) ​

除了字母,权限还能用数字表示,规则是:r = 4,w = 2,x = 1,把一组里有的加起来:

数字相加对应权限
74+2+1rwx
64+2rw-
54+1r-x
44r--
0无---

三组各算一个数字,拼在一起就是常见的写法:

  • chmod 755 文件 → 属主 rwx,属组 r-x,其他人 r-x(脚本/程序常用,自己能改、别人能用);
  • chmod 644 文件 → 属主 rw-,属组 r--,其他人 r--(普通文档常用,只有主人能改);
  • chmod 777 文件 → 所有人 rwx(危险,等于不设防,除了临时排障不要用)。

2.4 修改权限与属主 ​

bash
chmod +x script.sh      # 给所有人加上"可执行"权限(最常用)
chmod 755 script.sh     # 直接设为 rwxr-xr-x
chmod u-w file.txt      # 去掉属主的写权限(u 属主 g 属组 o 其他人)
chown ubuntu file.txt   # 把文件属主改成 ubuntu
chown ubuntu:ubuntu d   # 同时改属主和属组

安全复现里最常见的就是 chmod +x——下载来的脚本默认往往没有执行权限,直接 ./script.sh 会报 "Permission denied",加完 x 才能跑。

三、用户、root 与 sudo ​

3.1 root 与普通用户 ​

  • root(uid=0)是 Linux 的超级管理员,能改系统里几乎任何东西,提示符通常是 #;
  • 普通用户(如 ubuntu,uid ≥ 1000)只在自己的"地盘"(家目录)里有完整权限,动系统文件会被拒,提示符通常是 $。

看提示符最后一个符号就能粗略判断身份:$ 普通用户,# root。

3.2 sudo:临时提权 ​

普通用户要装软件、改系统配置,不需要退出登录,在命令前加 sudo 即可临时以管理员身份执行:

bash
sudo apt update              # 以 root 权限更新软件源
sudo docker compose up -d    # docker 常需要 sudo
sudo usermod -aG docker $USER # 把自己加进 docker 组(之后免 sudo 用 docker)

为什么不建议一直用 root? 两点:一是 root 下一条误删命令(如 rm -rf 写错路径)破坏力是系统级的、无法挽回;二是从安全角度,攻击者一旦拿到 root,整台机器彻底失守,所以正规部署都让服务用低权限账号跑(如 Web 用 www-data),尽量缩小被攻破后的危害。

3.3 为什么靶场里常常直接是 root ​

你在 Docker 容器里执行 id,经常直接看到 uid=0(root)——这是因为容器是隔离的独立环境,默认用 root 跑进程,方便安装和调试。这也解释了为什么很多漏洞在容器里复现,最后 id 一回显就是 root:容器内部你本来就是 root,这不代表在真实服务器上也能直接拿到 root。 真实环境里 Web 服务通常是 www-data 之类的低权限用户,想拿到 root 还要再走"提权",那是内网/主机安全系列的内容。

四、练习任务(建议亲手做) ​

在一台 Linux 机器(本地虚拟机、云服务器或 WSL 均可)上:

  1. mkdir 建一个目录,touch 建一个文件,再用 cp、mv 操作它;
  2. 执行 ls -l,对照本文把每一行的类型位和三组权限读出来;
  3. chmod +x 给文件加执行权限,再 ls -l 看权限位变化;
  4. 试试 chmod 644、chmod 755,用 ls -l 验证数字和字母是否对应;
  5. 敲 whoami、id,确认自己是普通用户还是 root;普通用户就用 sudo whoami 体验提权(回显 root)。

练习时如果报 Permission denied,先别怀疑系统坏了——这几乎都是权限位里缺了对应的 r/w/x,用 ls -l 看清楚,再用 chmod 补上即可。能独立读懂权限位、会用 chmod,这一篇就达标了。

五、本篇小结 ​

  • 文件操作:mkdir / touch / cp / mv / rm,动目录加 -r,命令行删除无回收站。
  • 权限 = 三组人(属主/属组/其他人)× 三种操作(r/w/x) ,ls -l 第一列一目了然。
  • 数字权限:r=4、w=2、x=1;常见 chmod 755、chmod 644,chmod +x 最常用。
  • root 全权、普通用户用 sudo 提权;容器里常是 root,真实环境多为低权限用户。
  • 权限是后面理解 Web 目录读写、脚本执行、反弹 Shell、提权的地基,务必多对照 ls -l。