第 3 章 · 01 基础命令与文件权限


文档摘要

第 3 章 · 01 基础命令与文件权限 本节摘要:服务器操作从命令与权限开始。本节先过八大基础命令、cd 变体与 ls -l 字段解读,再讲 I/O 重定向五符号与 2>&1 的位置陷阱,然后是 FHS 目录分工,最后重点攻下权限模型:rwx 数值、特殊位(setuid/setgid/sticky)、ACL 与用户组体系。每部分都附原库陷阱题,读完后自测。 学习目标 说出八大基础命令及常用选项,解读 ls -l 七字段。 掌握 I/O 重定向五符号,说出 2>&1 位置不同导致的差异。 说出 FHS 主要目录的职责与 /tmp、/var/tmp 的区别。 计算 chmod 数值权限,说出三个特殊位的含义。 解读 /etc/passwd 七字段,区分软链接与硬链接。

第 3 章 · 01 基础命令与文件权限

本节摘要:服务器操作从命令与权限开始。本节先过八大基础命令、cd 变体与 ls -l 字段解读,再讲 I/O 重定向五符号与 2>&1 的位置陷阱,然后是 FHS 目录分工,最后重点攻下权限模型:rwx 数值、特殊位(setuid/setgid/sticky)、ACL 与用户组体系。每部分都附原库陷阱题,读完后自测。

学习目标

  1. 说出八大基础命令及常用选项,解读 ls -l 七字段。
  2. 掌握 I/O 重定向五符号,说出 2>&1 位置不同导致的差异。
  3. 说出 FHS 主要目录的职责与 /tmp、/var/tmp 的区别。
  4. 计算 chmod 数值权限,说出三个特殊位的含义。
  5. 解读 /etc/passwd 七字段,区分软链接与硬链接。

一、八大基础命令

命令 作用 常用选项
touch 建文件/更新时间戳
ls 列表 -a 隐藏、-l 长格式、-R 递归、-h 人性化
rm 删除 -r 递归、-f 强制(rm -rf 高危)
cat 查看/拼接/创建 cat > file 配合 Ctrl+D
cp 复制 -r 复制目录
mkdir 建目录 -p 递归建多级
pwd 显示当前路径
cd 切换目录 见下表

cd 六变体:/ 根、~ 家目录、.. 父目录、. 当前、- 上次访问(靠 $OLDPWD 记忆)、裸 cd 回家。

ls -l 七字段:权限 → 硬链接数 → 属主 → 属组 → 大小 → 最后修改时间 → 文件名。首字符判类型:- 文件、d 目录、l 符号链接、b/c 块/字符设备、s 套接字。

引号规则:无引号按空白分词;双引号保留为一个参数(变量展开);单引号内不展开变量。echo hello worldecho "hello world" 输出相同。

命令定位:which / whereis。坑题:df 报 command not found → 多半 $PATH 被覆盖,需修复 PATH。

二、I/O 重定向五符号

符号 作用
> stdout 覆盖写
>> stdout 追加
2> stderr
< stdin
` `
&> stdout+stderr 同一文件

三标准流:fd 0=stdin、1=stdout、2=stderr。

经典陷阱:2>&1 的位置决定行为

cmd > file 2>&1 # 先 stdout→file,再 stderr 跟随→file:两条流都进文件 ✅ cmd 2>&1 > file # 2>&1 先执行(此时 stdout 还是终端)→ stderr 仍上屏 ❌

原库陷阱题:yippiekaiyay 1>&2 die_hard —— 1>&2 把 stdout 复制到 stderr(自身),die_hard 文件不会创建,只会报 command not found。

三、FHS 目录分工

目录 职责
/bin /sbin /usr/bin /usr/sbin 二进制程序
/etc 配置文件
/home 用户家目录
/var 易变文件(日志)
/tmp 临时文件(重启清空)
/var/tmp 数天清理或不清(依发行版)
/proc 虚拟文件系统:内核信息与控制中心,任何用户都无法直接在 /proc 建文件
/dev 设备文件(插入新设备在此生成条目)

四、权限模型

rwx 数值

r=4、w=2、x=1 **累加**。777=全部;644=属主读写+组/其他只读;750=属主全部+组读执行。

chmod +x some_file # 给三集合都加执行位 chmod 750 some_file # 数字式 chmod u+x some_file # 符号式

三命令分工:chmod 权限、chown 属主、chgrp 属组。

特殊位

效果
setuid 4 程序以属主身份运行(passwd 即此例)
setgid 2 程序以属组身份运行
sticky 1 仅属主或 root 可删改该文件(/tmp 即此例)

ACL

特定用户做细粒度授权:getfacl <file> 查看、setfacl -m u:<用户>:<权限> <file> 修改。经典自救:误执行 chmod -x $(which chmod) 后,用 sudo setfacl -m u::rx /usr/bin/chmod 恢复执行位。

建文件失败三原因:磁盘满、inode 耗尽、无权限——逐项排查。

五、用户与组

/etc/passwd 每行七字段:用户名 → 密码占位 x → UID → GID → 注释 → 家目录 → shell。密码实体在 /etc/shadow(仅 root 可读)。

  • root UID=0;普通用户从 1000 起(/etc/login.defs 中 UID_MIN=1000,1000 以下保留给系统账户);
  • /etc/skel 是新用户家目录的模板;
  • 命令:useradd 建用户、passwd 改密、usermod 改用户、whoami 当前用户、id 输出身份、su - 切到 root、last 查登录记录;
  • 禁登录用户:adduser user --shell=/bin/false --no-create-home;
  • 坑题:grep $(whoami) /etc/passwd 为空 → 用户可能来自 LDAP 等远程源,用 getent passwd 验证。

六、软链接与硬链接

维度 硬链接 软链接(symlink)
inode 与原文件同一 inode 独立 inode,存目标路径
本质 同一文件的另一个名字 "快捷方式"
跨文件系统 不行 可以
指向目录 不行 可以
原文件删除后 数据仍可访问 悬空失效
创建 ln ln -s

目录的链接数至少为 2(. 与父目录的 ..)。

七、本章自测(原库陷阱题)

  1. ls -l 输出中第 2 个字段是什么?(硬链接数)
  2. df 报 command not found,最可能原因?(PATH 被覆盖)
  3. 如何把文件中所有 good 替换为 great?(sed -i s/good/great/g /tmp/y)
  4. echo hello worldecho "hello world" 有区别吗?(输出相同)
  5. 谁都无法直接在 /proc 建文件,为什么?(虚拟文件系统,仅内核操作生成条目)

小结

  • 命令八兄弟:touch/ls/rm/cat/cp/mkdir/pwd/cd 覆盖文件操作全场景。
  • 重定向陷阱:2>&1 的位置决定 stderr 去向,先写的先绑定。
  • 权限 = 4+2+1 累加:特殊位 setuid=4/setgid=2/sticky=1。
  • 软硬链接:硬链接共享 inode,软链接存路径。

下一节预告:文件会玩了,接下来管进程——状态、信号、系统调用与 systemd。


发布者: 作者: 灏天文库 转发
评论区 (0)
U