上周我在部署rails应用的时候遇到了一个文件权限相关的问题。后来通过查阅《UNIX/Linux系统管理技术手册》一书解决了这个问题。解决了问题后,我觉得还是不能停下来尝一尝,于是又花时间把《UNIX/Linux系统管理技术手册》这本书的第6章“文件系统”看了好几遍。看完还是觉得有点不尽如人意,写个读书笔记吧。文件树的组织关于UNIX家族的文件系统的组织,优点是约定好于配置,缺点是组织混乱,互不兼容,各有千秋自己的山。幸运的是,对于一些重要的目录,各个系统已经逐渐形成了一个比较通用的标准,其内容如下。我们在放文件的时候可以参考这张表。标准目录及内容路径名操作系统内容/bin所有核心操作系统命令/bootLS内核和加载内核所需的文件/dev所有伪终端、磁盘、打印机等设备项/etc所有关键启动文件和Configurationfiles/home所有用户的默认主目录/kernelS内核组件/lib所有库、共享库和一些C编译器/mediaLS可移动媒体上文件系统的挂载点/mntLSA可移动媒体的临时挂载点/opt所有可选应用程序包(还没有广泛使用)/procLSA所有运行进程的信息/rootLS超级用户的主目录/sbin以最小规模运行系统所需的所有命令/standH独立工具、磁盘格式化工具、诊断工具等/tmp每次重新启动时消失的所有临时文件/usr所有次要文件和命令的层次结构/usr/bin全部大多数命令和可执行文件/usr/include已编译C程序的所有头文件/usr/lib所有库;标准程序的支持文件/usr/lib64L64位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)symbolic链接可以使用命令ls-ld查看文件的类型ls命令输出的第一个字符表示类型。$ls-ld/usr/includedrwxr-xr-x257rootwheel8738121200:27/usr/include第一个字符是d,表示/usr/include是一个目录。ls命令使用的文件类型代码文件类型符号创建方法普通文件-编辑器,cp等rm目录dmkdirrmdir,rm-r字符设备文件cmknodrm块设备文件bmknodrm本地域套接字ssocket(2)rm众所周知的管道pmknodrm符号链接lln-srm文件权限使用命令ls-ld查看文件file.txt,-rw-rw-r--1hope123Feb0315:36file.txt-rw-rw-r--1hope123Feb0315:36file.txtFileownergroupeveryoneelselinksownersizemoddatefilename***第一个符号:-,表示这是一个文件,如果符号是d,表示这是一个目录第二个符号:rw-,表示用户有读写该文件的权限,以二进制表示是:110,以八进制表示:6第三个符号:rw-,表示该用户所属的组对该文件具有读写权限,以二进制表示:110,以八进制表示是:6第四个符号:r--,表示其他人对该文件有读权限,二进制表示:100,八进制表示:4file.txt完整权限(即包括用户,用户所属组andPermissionsofothers)可以用八进制表示为:664如果我们需要让一个文件拥有和file.txt一样的权限,可以使用如下命令:chmod664abcfile.txt可以通过chmod权限码表Octal生成合适的权限号码权限。chmodpermissionencodingoctalbinarypermission0000—1001–x2010-w-3011-wx4100r–5101r-x6110rw-7111rwxchmod助记语法示例规则含义u+w为文件添加写入权限给组,比如chmodu+wfile.txtug=rw,o=r给属主和属组读/写权限,给其他人读权限a-x删除所有3类用户(属主/属于组/其他)具有执行权限ug=srx,o=设置文件的setuid和setgid位,只给所有者和组授予读/执行权限g=u使组的权限与所有者的权限完全一致u表示用户是theownerg代码group表示组o表示other表示其他人a表示all表示所有人
