鸟叔Linux学习:第五章 Linux 的文件权限与目录配置

第五章 Linux 的文件权限与目录配置

1 因为Linux是多人多任务的模式,所以相对一个文件来说就有三种不同的角色:
  • 文件拥有者(owner): 这个好理解就是文件的主人呗。
  • 群组(group):就是和你一起的小伙伴,他们可以享受你的红利。在团队开发资源时有用。
  • 其他人(others):就是陌生人。
 这三种角色各有:可读(read),可写(write),可执行(execute)功能。

2Linux 文件属性
 当用指令su切换到root身份后,再用指令ls -al会出现文件及其信息,如下所示:
鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第1张图片

 每一列代表的意思如下图所示:
鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第2张图片
 (1)第一列表示文件的类型与权限
 鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第3张图片
 第一个字符表示文件类型:
  • [ d ]表示目录;
  • [ - ]表示文件;
  • [ l ]表示连结档(link file);
  • [ b ]表示装置文件里面的可供储存的接口设备(可随机存取装置);
  • [ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
 其他的字符中,三个为一组,且均为『rwx』 的三个参数的组合。[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 如果没有权限,用减号[ - ]表示。字母相对位置不会变。
  • 第一组为文件拥有者可具备的权限
  • 第二组为加入此群组之账号的权限
  • 第三组为非本人且没有加入本群组之其他账号的权限
(2)第二列表示有多少文件名连结到此节点(i-node)
 每个文件都会将他的权限与属性记录到文件系统的 i-node 中,不过,我们使用的目录树却是使用文件名来记录, 因此每个文件名就会连结到一个 i-node !这个属性记录的,就是有多少不同的文件名连结到相同的一个 i-node 号码去就是了。

(3)第三列表示这个文件(或目录)的『拥有者账号』,例如:root
(4)第四列表示这个文件的所属群组
(5)第五列表示这个文件的容量大小,默认单位为 bytes
(6)第六列表示这个文件的建档日期或者是最近的修改日期
(7)第七列表示这个文件的文件名

3如何改变文件属性与权限
  • chgrp(change group) :改变文件所属群组, 例如:chgrp [-R] dirname/filename ...-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。
  • chown (change owner):改变文件拥有者,例如:chown [-R] 账号名称 文件或目录 如果拥有者和群组一起改变:chown [-R] 账号名称:组名 文件或目录
  • chmod :改变文件的权限, SUID, SGID, SBIT 等等的特性
  改变文件权限有两种方法:
   
使用数 : 权限对应数字 r:4, w:2, x:1, -:0,例如:chmod 777 .bashrc
   使用符号user:u, group:g, others:o, all:a(表示全部身份),指令格式如下:

鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第4张图片

      例如:一个文件的权限成为『-rwxr-xr-x』,指令为:chmod u=rwx,go=rx .bashrc
                      设定权限为『 -rwxr-xr-- 』,指令为:chmod u=rwx,g=rx,o=r filename
      若不知道原先的文件属性,而只想要增加.bashrc 这个文件的每个人均可写入的权限,chmod a+w .bashrc

                      要将权限去掉而不更动其他已存在的权限,指令为:chmod a-x .bashrc  

4Linux 文件种类与扩展名
 文件种类:
  • 正规文件(regular file ):一般我们在进行存取的类型的文件,大致分为:纯文本档(ASCII),二进制文(binary),            数据格式文件(data)
  • 目录(directory): 第一个属性为 [ d ],例如 [drwxrwxrwx]。
  • 连结档(link): 类似 Windows 系统底下的快捷方式! 第一个属性为 [ l ](英文 L 的小写),例如 [lrwxrwxrwx]
  • 设备与装置文件(device): 与系统周边及储存等相关的一些文件, 通常都集中在/dev 这个目录之下!通常又分为两种: 区块(block)设备档 :就是一些储存数据, 以提供系统随机存取的接口设备,举例来说,硬盘与软盘等,第一个属性为[ b ]。字符(character)设备文件:亦即是一些串行端口的接口设备, 例如键盘、鼠标等等!这些设备的特
    色就是『一次性读取』的,不能够截断输出,第一个属性为 [ c ]。
  • 资料接口文件(sockets): 这种类型的文件通常被用在网络上的数据承接,第一个属性为 [ s ]。
  • 数据输送文件(FIFO, pipe): FIFO 也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。 FIFO是 first-in-first-out 的缩写。第一个属性为[p] 。
 文件扩展名:
  Linux 的文件是没有所谓的『扩展名』的,一个 Linux 文件能不能被执行,与他的第一栏的十个属性有关, 与文件名根本一点关系也没有。在 Windows 底下, 能被执行的文件扩展名通常是 .com .exe .bat 等等,而在 Linux 底下,只要你
的权限当中具有 x 的话,例如[ -rwxr-xr-x ] 即代表这个文件具有可以被执行的能力!
 但是,通常还是会以适当的扩展名来表示该文件是什么种类的。
 常用的扩展名:
  • *.sh : 脚本或批处理文件 (scripts),因为批处理文件为使用 shell 写成的,所以扩展名就编成 .sh
  • *Z, *.tar, *.tar.gz, *.zip, *.tgz: 经过打包的压缩文件。这是因为压缩软件分别为 gunzip, tar 等等的,由于不同的压缩软件,而取其相关的扩展名!
  • *.html, *.php:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件! .html 的文件可使用网页浏览器来直接开启,至于 .php 的文件, 则可以透过 client 端的浏览器来 server 端浏览,以得到运算后的网页结果。

5Linux 目录配置的依据--FHS(Filesystem Hierarchy Standard)
 FHS 的重点在于规范每个特定的目录下应该要放置什么样子的数据
 FHS 依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态:

鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第5张图片
 解释:
  • 可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
  • 不可分享的:自己机器上面运作的装置文件或者是与程序有关的 socket 文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
  • 不变的:有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
  • 可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。
 
 FHS 针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
  • / (root, 根目录):与开机系统有关;
  • /usr (unix software resource):与软件安装/执行有关;
  • /var (variable):与系统运作过程有关。
 (1)根目录 (/) 的意义与内容: 根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。根目录(/)所在分区槽应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区槽内,保持根目录越小越好。 如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。
 FHS 定义的根目录(/)底下应该存在的目录:

鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第6张图片
鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第7张图片
鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第8张图片
鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第9张图片
FHS 针对根目录所定义的标准就仅有上面的这些,不过 Linux 底下还有许多目录也需要了解一下。 底下是几个在 Linux 当中也是非常重要的目录:

鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第10张图片

 (2)/usr 的意义与内容:usr 是 Unix Software Resource 的缩写, 也就是『Unix 操作系统软件资源』所放置的目录,而不是用户的数据。FHS 建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己独立的目录。
一般来说,/usr 的次目录建议有底下这些:
鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第11张图片
鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第12张图片



 (3) /var 的意义与内容: /var 目录主要针对常态性变动的文件,包括快取(cache)、登录档(log file)以及某些软件运
作所产生的文件, 包括程序文件(lock file, run file),或者例如 MySQL 数据库的文件等等。常见的次目录有:
鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第13张图片


5 目录树(directory tree)
 在linux下,所有的文件和目录都是由根目录开始的,然后再一个一个分下来,像树枝一样。目录树的主要的特性有:
  • 目录树的启始点为根目录 (/, root);
  • 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等。
  • 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
鸟叔Linux学习:第五章 Linux 的文件权限与目录配置_第14张图片

6路径(path)可以分为:
  • 绝对路径(absolute):由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
  • 相对路径(relative):相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法。
 特别注意这两个特殊的目录:
  • . :代表当前的目录,也可以使用 ./ 来表示;
  • .. :代表上一层目录,也可以 ../ 来代表。

你可能感兴趣的:(Linux学习)