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 |
动手走一遍,建立"建 → 复制 → 改名 → 删除"的完整感觉:
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确认位置的习惯。
常用的查看系统信息命令
whoami # 我现在是谁(当前用户名)
id # 当前用户的 uid、gid 和所属组
uname -a # 内核与系统信息
date # 当前时间
history # 历史命令
clear # 清屏(或 Ctrl+L)id 在安全复现里出现频率极高——命令执行成功后,大家第一反应就是敲 id,看回显的 uid=0(root) 还是 uid=33(www-data),以此判断当前是什么权限。
二、Linux 权限模型
2.1 为什么需要权限
Linux 是多用户系统,同一台机器上可以有多个账号。为了防止用户互相乱看、乱改文件,每个文件都规定了"谁能读、谁能写、谁能执行"。
权限回答两个问题:
- 针对谁——文件属主、属组成员、还是其他人;
- 能做什么——读、写、执行。
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--,只能读。
三个字母的含义:
| 符号 | 英文 | 含义 | 对文件 / 对目录的区别 |
|---|---|---|---|
r | read | 读 | 文件:能看内容;目录:能列出里面有什么(ls) |
w | write | 写 | 文件:能改内容;目录:能在里面新建/删除文件 |
x | execute | 执行 | 文件:能当程序运行;目录:能 cd 进去、访问里面的文件 |
目录的 x 特别容易忽略: 对目录而言,x 表示"能否进入/穿过它"。哪怕你对某个文件有读权限,但只要通往它的某一级目录没有 x,你照样进不去、读不到。
2.3 用数字表示权限(chmod 755)
除了字母,权限还能用数字表示,规则是:r = 4,w = 2,x = 1,把一组里有的加起来:
| 数字 | 相加 | 对应权限 |
|---|---|---|
| 7 | 4+2+1 | rwx |
| 6 | 4+2 | rw- |
| 5 | 4+1 | r-x |
| 4 | 4 | r-- |
| 0 | 无 | --- |
三组各算一个数字,拼在一起就是常见的写法:
chmod 755 文件→ 属主 rwx,属组 r-x,其他人 r-x(脚本/程序常用,自己能改、别人能用);chmod 644 文件→ 属主 rw-,属组 r--,其他人 r--(普通文档常用,只有主人能改);chmod 777 文件→ 所有人 rwx(危险,等于不设防,除了临时排障不要用)。
2.4 修改权限与属主
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 即可临时以管理员身份执行:
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 均可)上:
mkdir建一个目录,touch建一个文件,再用cp、mv操作它;- 执行
ls -l,对照本文把每一行的类型位和三组权限读出来; chmod +x给文件加执行权限,再ls -l看权限位变化;- 试试
chmod 644、chmod 755,用ls -l验证数字和字母是否对应; - 敲
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。
仅限授权安全测试与学习研究使用,禁止用于任何非法攻击场景。
微信:lightleap612