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. 文件种类

  1. 正规文件(regular file)

也叫做一般文件,用-表示 ,可以分为:

    1. 纯文本档(ASCII)

    2. 二进制文件(binary)

    3. 数据格式文件(data)

  1. 目录文件(directory)

d表示

  1. 连结档(link)

l表示

  1. 设备与装置文件(device)

分为:

    1. 区块(block)设备档

    2. 字符(character)设备文件

  1. 资料接口文件(sockets)

  2. 数据输送文件(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