鸟叔Linux学习:第五章 Linux 的文件权限与目录配置
第五章 Linux 的文件权限与目录配置
1 因为Linux是多人多任务的模式,所以相对一个文件来说就有三种不同的角色:
2Linux 文件属性
当用指令su切换到root身份后,再用指令ls -al会出现文件及其信息,如下所示:

每一列代表的意思如下图所示:

1 因为Linux是多人多任务的模式,所以相对一个文件来说就有三种不同的角色:
- 文件拥有者(owner): 这个好理解就是文件的主人呗。
- 群组(group):就是和你一起的小伙伴,他们可以享受你的红利。在团队开发资源时有用。
- 其他人(others):就是陌生人。
2Linux 文件属性
当用指令su切换到root身份后,再用指令ls -al会出现文件及其信息,如下所示:
(1)第一列表示文件的类型与权限

第一个字符表示文件类型:
每个文件都会将他的权限与属性记录到文件系统的 i-node 中,不过,我们使用的目录树却是使用文件名来记录, 因此每个文件名就会连结到一个 i-node !这个属性记录的,就是有多少不同的文件名连结到相同的一个 i-node 号码去就是了。
(3)第三列表示这个文件(或目录)的『拥有者账号』,例如:root
(4)第四列表示这个文件的所属群组
(5)第五列表示这个文件的容量大小,默认单位为 bytes
(6)第六列表示这个文件的建档日期或者是最近的修改日期
(7)第七列表示这个文件的文件名
3如何改变文件属性与权限
字使用数: 权限对应数字 r:4, w:2, x:1, -:0,例如:chmod 777 .bashrc
使用符号:user:u, group:g, others:o, all:a(表示全部身份),指令格式如下:

例如:一个文件的权限成为『-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 文件种类与扩展名
文件种类:
Linux 的文件是没有所谓的『扩展名』的,一个 Linux 文件能不能被执行,与他的第一栏的十个属性有关, 与文件名根本一点关系也没有。在 Windows 底下, 能被执行的文件扩展名通常是 .com .exe .bat 等等,而在 Linux 底下,只要你
的权限当中具有 x 的话,例如[ -rwxr-xr-x ] 即代表这个文件具有可以被执行的能力!
但是,通常还是会以适当的扩展名来表示该文件是什么种类的。
常用的扩展名:
5Linux 目录配置的依据--FHS(Filesystem Hierarchy Standard)
FHS 的重点在于规范每个特定的目录下应该要放置什么样子的数据
FHS 依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态:

解释:
FHS 针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
FHS 定义的根目录(/)底下应该存在的目录:




6路径(path)可以分为:
- [ d ]表示目录;
- [ - ]表示文件;
- [ l ]表示连结档(link file);
- [ b ]表示装置文件里面的可供储存的接口设备(可随机存取装置);
- [ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
- 第一组为文件拥有者可具备的权限
- 第二组为加入此群组之账号的权限
- 第三组为非本人且没有加入本群组之其他账号的权限
每个文件都会将他的权限与属性记录到文件系统的 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(表示全部身份),指令格式如下:
例如:一个文件的权限成为『-rwxr-xr-x』,指令为:chmod u=rwx,go=rx .bashrc
设定权限为『 -rwxr-xr-- 』,指令为:chmod u=rwx,g=rx,o=r filename
若不知道原先的文件属性,而只想要增加.bashrc 这个文件的每个人均可写入的权限,chmod a+w .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 依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态:
- 可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
- 不可分享的:自己机器上面运作的装置文件或者是与程序有关的 socket 文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
- 不变的:有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
- 可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。
FHS 针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
- / (root, 根目录):与开机系统有关;
- /usr (unix software resource):与软件安装/执行有关;
- /var (variable):与系统运作过程有关。
FHS 定义的根目录(/)底下应该存在的目录:
FHS 针对根目录所定义的标准就仅有上面的这些,不过 Linux 底下还有许多目录也需要了解一下。 底下是几个在 Linux 当中也是非常重要的目录:

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


(3) /var 的意义与内容: /var 目录主要针对常态性变动的文件,包括快取(cache)、登录档(log file)以及某些软件运
作所产生的文件, 包括程序文件(lock file, run file),或者例如 MySQL 数据库的文件等等。常见的次目录有:

一般来说,/usr 的次目录建议有底下这些:
(3) /var 的意义与内容: /var 目录主要针对常态性变动的文件,包括快取(cache)、登录档(log file)以及某些软件运
作所产生的文件, 包括程序文件(lock file, run file),或者例如 MySQL 数据库的文件等等。常见的次目录有:
5 目录树(directory tree)
在linux下,所有的文件和目录都是由根目录开始的,然后再一个一个分下来,像树枝一样。目录树的主要的特性有:

在linux下,所有的文件和目录都是由根目录开始的,然后再一个一个分下来,像树枝一样。目录树的主要的特性有:
- 目录树的启始点为根目录 (/, root);
- 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等。
- 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
- 绝对路径(absolute):由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
- 相对路径(relative):相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法。
- . :代表当前的目录,也可以使用 ./ 来表示;
-
.. :代表上一层目录,也可以 ../ 来代表。