05-. Linux File Permissions and Directory Configuration
05-. Linux 文件权限与目录配置
Linux 可以进行多人多任务开发。
1. Linux 使用者 与 群组
owner:文件拥有着,自由管理文件的读写执行权限。
group:群组,用于团队开发资源。
others:其他人
2. Linux 文件权限
使用ls -al
命令进行查询当前目录下的文件。

2.1. 文件权限
返回的字段第一栏为某文件的权限。
若有一个文件的类型与权限数据为『-rwxr-xr--』
先将整个类型与权限数据分开查阅,并将十个字符整理成为如下所示:
[ - ] [ r w x ] [ r - x ] [ r - - ]
[ 1 ] [ 2 3 4 ] [ 5 6 7 ] [ 8 9 0 ]
1 为:代表这个文件名为目录或文件,本例中为文件(-);
234 为:owner 拥有者的权限,本例中为可读、可写、可执行(rwx);
567 为:group 同群组用户权力,本例中为可读可执行(rx);
890 为:others 其他用户权力,本例中为可读(r),就是只读之意
同时注意到,rwx所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)就是了。
对于目录来说:没有 x 权限就没有进入该目录的权限。
2.1.1. 权限说明
对文件来讲,权限的效能为:
r:可读取此一文件的实际内容,如读取文本文件的文字内容等;
w:可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
x:该文件具有可以被系统执行的权限。
对目录来说,权限的效能为:
r (read contents in directory)
w (modify contents of directory)
x (access directory)
2.1.2. 更改权限
要开放目录给任何人浏览时,应该至少也要给予 r 及 x 的权限,但 w 权限不可随便给;
chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性
2.2. 档名连结
返回的字段第二栏表示有多少档名连结到此节点(i-node)
2.3. 拥有者账号
返回的字段第三栏表示这个文件(或目录)的【拥有者账号】
2.4. 所属群组
返回的字段第四栏表示这个文件的所属群组
2.5. 文件容量
返回的字段第五栏为这个文件的容量大小,默认单位为bytes
2.6. 建档/修改日期
返回的字段第六栏为这个文件的建档日期或者是最近的修改日期
2.7. 文件档名
返回的字段第七栏为这个文件的档名
3. Linux 文件种类与扩展名
3.1. 文件种类
正规文件(regular file)
也叫做一般文件,用-
表示 ,可以分为:
纯文本档(ASCII)
二进制文件(binary)
数据格式文件(data)
目录文件(directory)
用d
表示
连结档(link)
用l
表示
设备与装置文件(device)
分为:
区块(block)设备档
字符(character)设备文件
资料接口文件(sockets)
数据输送文件(FIFO, pipe)
3.2. Linux 文件扩展名
基本上,Linux的文件是没有所谓的『扩展名』的。
一个Linux文件能不能被执行, 与他的第一栏的十个属性有关, 与文件名根本一点关系也没有。
这个观念跟Windows的情况不相同,在Windows底下, 能被执行的文件扩展名通常是 .com .exe .bat等等。
而在Linux底下,只要你 的权限当中具有 x 的话,例如[ -rwx r-x r-x ] 即代表这个文件具有可以被执行的能力。
3.2.1. 可执行权限 与 可执行代码
具有『可执行的权限』以及『具有可执行的程序代码』是两回事!
在 Linux 底下,可以让一个文本文件,例如 text.txt 具有『可执行的权限』 (加入 x 权限即可), 但是这个文件明显的无法执行,因为他不具备可执行的程序代码!
而如果你将上面提到的 cat 这个可以执行的指令,将他的 x 拿掉, 那么 cat 将无法被你执行!
3.2.2. Linux 文件名长度
通常:
单一文件或目录最大为:255bytes
也就是128个中文字
3.2.3. Linux 文件名限制
文件名尽量不要与常用指令(或所有指令)重名。
也要避免使用特殊符号:? > < ; & ! [ ] | \ ' " ` ( ) { }
这些特殊符号在文字接口下有特殊的意义。
另外,文件名的开头为小数点『.』时, 代表这个文 件为『隐藏档』 。
同时,由于指令下达当中,常常会使用到 -option 之类的选项, 所以你最好也 避免将文件档名的开头以 - 或 + 来命名 。
4. Linux 目录配置
4.1. 配置的依据 -- FHS
FHS(Filesystem Hierarchy Standard)
通常会让 Linux 操作系统规范每个特定目录下要防止什么样子的数据。
其要求必须存在的目录
/bin
放置单人维护模式下还能被操作的指令
/boot
放置开机会使用到的文件
/dev
所有装置和接口设备的文件
/etc
放置系统配置文件
/lib
开机时会用到的函式库
/media
放置的就是可移除的装置
/mnt
暂时挂载某些额外的装置
/opt
第三方协力软件放置的目录
/run
开机后所产生的各项信息
/sbin
开机过程中所需要的系统指令
/srv
service 的缩写,网络服务的数据目录
/tmp
一般用户或正执行程序的文件
/usr
Unix Software Resource 的缩写,Unix 操作系统软件资源
/var
常态性变动的文件
4.2. FHS
FHS订定出来的四种目录特色为:shareable, unshareable, static, variable 等四类;
FHS所定义的三层主目录为:/, /var, /usr三层而已
5. 目录树(directory tree)
Linux 底下,所有文件和目录都是从根目录开始。然后一个一个分支下来。
概念:绝对路径、相对路径
绝对路径文件名为从根目录 / 开始写起,否则都是相对路径的文件名。
能否读取到某个文件内容,跟该文件所在的目录权限也有关系 (所有的目录至少需要有 x 的权限)。
Last updated