记录 Linux, Docker, Nginx, Hugo 的技术笔记

Linux 文件与权限

2026-07-03

Linux 文件与权限

这篇笔记把 Linux 里最常见的文件类型、权限、链接和常用命令整理在一起。

文件类型(ls -l 第一列)

  • d:目录(directory),存放“名字 -> inode”的映射
  • -:普通文件(regular file)
  • s:套接字文件(socket)
  • p:管道文件(pipe)或命名管道文件(named pipe)
  • l:符号链接文件(symbolic link)
  • b:面向块的设备文件(block-oriented device file)
  • c:面向字符的设备文件(character-oriented device file)

文件权限

三类人

  • u:拥有者
  • g:拥有者所在群组
  • o:其他人

三种权限位

  • r:读,目录里可以查看有什么文件
  • w:写,目录里可以创建、删除、重命名文件
  • x:执行,文件可以执行;目录可以进入并访问目录内容

特殊权限位

除了 rwx,还有三个常见特殊位:

  • setuidsuid):对可执行文件,运行时使用文件所有者的有效 UID
  • setgidsgid):对可执行文件,运行时使用文件所属组的有效 GID;对目录,新建文件继承该目录的组
  • sticky bit:目录里的文件通常只能由文件所有者或 root 删除,常见于公共目录

常见八进制表示:

  • 4xxx:setuid
  • 2xxx:setgid
  • 1xxx:sticky bit

硬链接和软链接

硬链接

硬链接就是给同一个 inode 再起一个名字。

特点:

  • 不是复制文件
  • 两个名字指向同一份数据
  • 删除一个名字,数据还在
  • 只有所有硬链接都删掉,数据才真正消失
  • 一般不能跨文件系统
  • 通常不能给目录建硬链接

例子:

ln a.txt b.txt

这里 a.txtb.txt 是硬链接。

软链接

软链接也叫符号链接,就是一个“指向目标路径的指针”。

特点:

  • 像快捷方式
  • 自己有独立 inode
  • 里面存的是目标路径
  • 可以跨文件系统
  • 可以链接目录
  • 如果目标删了,软链接就断了,变成“坏链接”

例子:

ln -s a.txt link.txt

link.txt 就是软链接。

常用命令

  • ls -l:看权限
  • stat file:看 inode、权限、时间
  • file file:看文件类型描述
  • touch file:创建或更新时间戳,不存在则创建文件
  • cp:复制
  • mv:移动/重命名
  • rm:删除
  • mkdir:建目录
  • ln:建链接
  • find:查找文件

chmod

chmod [选项] 模式 文件

数字模式

  1. 三个八进制数字分别表示拥有者、拥有者所在群组、其他人
  2. 421 分别表示读、写、执行权限
  3. 四个八进制数字表示特殊权限:
    • 4xxx:setuid
    • 2xxx:setgid
    • 1xxx:sticky bit

例如:

  • 755 = rwxr-xr-x
  • 644 = rw-r--r--

符号模式

  1. u:拥有者
  2. g:拥有者群组
  3. o:其他人
  4. a:所有人
  5. r:读
  6. w:写
  7. x:执行
  8. X:条件执行,目录和已有执行位的文件才加

选项:

  • -R:递归

例子:

chmod 755 file
chmod 644 file
chmod u+x file
chmod -R 755 dir/

chown

chown [选项] 用户[:组] 文件

说明:

  • 冒号 : 前面不写用户时,表示只改组
  • 例如 chown :staff file 只改组

umask

umask 表示创建目录和文件时权限会被减多少。

  • 文件默认基准是 666
  • 目录默认基准是 777
  • 如果 umask = 002
    • 文件权限就是 664
    • 目录权限就是 775

小结

  • inode 才是 Linux 文件系统里的关键对象
  • 硬链接是同一个 inode 的多个名字
  • 软链接是指向路径的指针
  • chmod 管权限,chown 管属主属组,umask 影响新建文件默认权限