到底该如何理解 Unix/Linux 的文件系统?看这篇就知道了

作者:舠

原文地址:https://baya.github.io/2015/01/18/%E7%90%86%E8%A7%A3Unix-Linux-%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F.html


上周在部署 rails 应用时遇到一个和文件权限有关的问题,后来通过查阅 “UNIX/Linux 系统管理技术手册” 这本书解决了问题, 解决问题后, 觉得不能浅尝而止于是又花了些时间把”UNIX/Linux 系统管理技术手册” 这本书的第 6 章” 文件系统” 读了几遍, 读完了还是觉得有些不过瘾, 那就写个读书笔记吧。


文件树的组织


关于 UNIX 家族的文件系统的组织说的好听点是约定优于配置,说的难听点就是组织混乱,互不兼容,各有山头。 幸运的是对于一些比较重要的目录, 在各系统中逐渐形成了一种比较通用的标准,其内容如下表,我们在安放文件时可以参考此表。

标准目录及内容

路径名操作系统内容
/bin所有最核心的操作系统命令
/bootLS内核和加载内核所需要的文件
/dev所有伪终端, 磁盘, 打印机等的设备项
/etc所有关键的启动文件和配置文件
/home所有用户默认的主目录
/kernelS内核组件
/lib所有库, 共享库和部分 C 编译器
/mediaLS可移动介质上文件系统的挂载点
/mntLSA可移动介质的临时挂载点
/opt所有可选的应用软件包 (尚未广泛使用)
/procLSA所有正在运行进程的信息
/rootLS超级用户的主目录
/sbin所有系统最小规模运行所需的命令
/standH

独立的工具,磁盘格式化工具

,诊断工具等

/tmp所有每次重新引导就消失的临时文件
/usr所有次要文件和命令的层次结构
/usr/bin所有大多数命令和可执行文件
/usr/include所有编译 C 程序的头文件
/usr/lib所有库; 供标准程序使用的支持文件
/usr/lib64L在 64 位 Linux 发行版本上的 64 位库
/usr/local所有

本地软件 (用户所编写或者安装的软件);

 /usr/ 的镜像结构

/usr/sbin所有不太关键的系统管理命令和修复命令
/usr/share所有多种系统共同的东西
/usr/share/man所有联机用户手册
/usr/srcLSA非本地包软件的源代码 (非广泛使用)
/usr/tmp所有更多的临时空间 (每次重新引导仍然保留)
/var所有系统专用数据和配置文件
/var/adm所有

各种不同的东西: 日志, 系统设置记录

,奇怪的管理信息

/var/logLSA各种系统日志文件
/var/spool所有供打印机,邮件等使用的假脱机目录
/var/tmp所有

更多的临时空间 (在重新引导以后

,文件予以保留)

PS: L=Linux, S=Solars, H=HP-UX, A=AIX


文件类型


可以认为 UNIX 家族的文件有 7 种类型,

  • 普通文件

  • 目录

  • 字符设备文件

  • 块设备文件

  • 本地域套接口

  • 有名管道 (FIFO)

  • 符号链接

可以使用命令 ls -ld 来查看文件的类型。ls 命令输出的第一个字符表示类型。


$ ls -ld /usr/include

drwxr-xr-x  257 root  wheel  8738 12 12 00:27 /usr/include


第 1 个字符是 d, 表示 /usr/include 是一个目录。



 ls 命令使用的文件类型代码


文件类型符号创建方式删除方式
普通文件-编辑器, cp 等rm
目录dmkdirrmdir, rm -r
字符设备文件cmknodrm
块设备文件bmknodrm
本地域套接口ssocket(2)rm
有名管道pmknodrm
符号链接lln -srm

文件权限

使用命令 ls -ld 查看某个文件 file.txt,


-rw-rw-r-- 1   hope 123   Feb 03 15:36   file.txt

-    rw-    rw-  r--             1  hope  123    Feb 03 15:36  file.txt
File  owner   group everyone else links  owner  size  mod date  file name


第一个符号: -, 表示这是个文件,如果此符号是 d 则表示这是个目录 第二个符号: rw-, 表示用户对此文件有读写权限, 用二进制表示是: 110, 用八进制表示是: 6 第三个符号: rw-, 表示用户所在的组对此文件有读写权限, 用二进制表示是: 110, 用八进制表示是: 6 第四个符号: r–, 表示其他的人对此文件有读权限, 用二进制表示是: 100, 用八进制表示是: 4

file.txt 完整的权限 (即包括了用户,用户所在组和其他人的权限) 可以用八进制数表示为: 664。

如果我们需要让某个文件有和 file.txt 的一样的权限,可以使用下面的命令:


chmod 664 abcfile.txt


可以通过 chmod 的权限编码表 来生成合适的八进制数权限。


 chmod 的权限编码



八进制二进制权限
0000
1001–x
2010-w-
3011-wx
4100r–
5101r-x
6110rw-
7111rwx


 chmod 助记语法例子



规则含义
u+w

为文件的属组添加写的权限, 比如 chmod u+w

 file.txt

ug=rw,o=r赋予属主和属组读 / 写的权限, 赋予其他人读的权限
a-x

删除全部 3 种类别用户 (属主 / 属组 / 其他人) 

的执行权限

ug=srx,o=

设置文件的 setuid 和 setgid 位, 并且只给属主

和属组赋予读 / 执行的权限

g=u让属组的权限跟属主的权限完全一样


  • u 代表 user 即属主

  • g 代码 group 即属组

  • o 代表 other 即其他人

  • a 代表 all 即所有人


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值