Linux文件系统中权限控制

更新时间:2024-01-05 10:42:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第四章Linux文件系统中权限控制

4.1 文件系统中与权限相关的概念

4.1.1 Linux系统中的用户和组

初次接触 Linux 的朋友大概会觉得很奇怪,Linux 有这么多用户,还要分用户组(又叫做“群组“),有什么用呢?其实,文件所属的用户与用户组功能是一个相当健全的安全防护。

由于 Linux 是多人多工的操作系统,因此常常会有多人同时使用这部主机工作,为了考虑每个人的隐私权,因此,“文件所有者”的角色就显的相当重要了。例如当我们将某个文件放在自己的工作目录下,并且不希望这个文件的内容被别人看到,这时候,就应该把文件设定成“只有文件拥有者,也即我们自身,才能察看和修改该文件的内容”,由于我们设定了这样的权限,所以其他用户即使知道有这个文件存在,也无法看到该文件的内容。

那么为什么要为文件设定它所属的用户组呢?其实,用户组最简单的功能之一,就是用于团队开发资源。举例来说,假设主机有两个团体:第一个团体为 testgroup,它的成员是 test1, test2, test3 三个;第二个团体名称为 treatgroup,它的团员为 treat1, treat2, treat3。这两个团体之间是互相有竞争性质的,要比赛看谁做的那份报告最好,然而每组团员又需要同时能够修改自己的团体内任何人所建立的文件,且不能让非本团体的人看到这些文件内容。这时候就要通过用户组的权限设置,禁止非本用户组的用户察看本组的文件。同时,如果成员自己还有私人隐秘的文件,还可以设定文件权限,使本团队其他成员也看不到此文件的内容。另外,如果有一个teacher用户是testgroup 与treatgroup这两个用户组的老师,想要同时观察两个组的进度,就要设定teacher用户同时支持testgroup 与treatgroup这两个用户组,这样就可以查看这两个用户组的文件。也就是说,每个用户还可以属于多个用户组。

基于以上的考虑,linux系统中的每个用户都至少属于一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户就默认属于与它同名的用户组,这个用户组在创建用户的同时创建。

4.1.2 Linux系统中的用户类型

在linux系统中,有三种不同类型的用户可对文件或目录进行访问:文件所有者(u),同组用户(g)、其他用户(o)。

1) 文件所有者: 所有者一般是文件的创建者。文件所有者可以设定该文件对于同组

用户和其他用户的访问权限限制。

2) 同组用户: 具有相同性质的所有用户被系统管理员分为组,文件所有者或系统管

理员可将文件的权限赋予组中的其它用户。

3) 其他用户: 文件所有者或系统管理员还可以将文件的访问权赋予系统中所与其他

用户。这样,系统中每一位用户都可以访问这个文件。

在设定文件权限时,用字符表示用户类型,以下是用户类型对应的字符表示:

用户类型表示:

u :user, 指文件所有者; g :group, 指同组用户;

o :others, 指同组用户之外的其它用户;

a :all, 代指u、g、o的组合,也即所有用户。

4.2 Linux系统文件的权限表示及应用

由于不可能为每个用户都单独提供完全独立、相互隔离的文件系统,多用户操作系统必须提供一种安全的访问控制机制,使得用户既能和其他用户共享某些文件,又能保证各个用户的文件不会被非法存取或破坏。因而Linux对文件所有者、用户和其他用户,分别设置了存取控制权限,也即读、写和执行权限。

文件的权限有两种表示方法,一种是符号化表示法,另一种是十进制表示法。 符号化表示法使用英文字母r(Read)、w(Write)和x(eXecute)来分别表示读、写 和执行权限。就如3.3.3节ls命令的实例说明部分讲过的,用符号化表示法表示的文件权限共九位,每三位为一组,每一组都是rwx的三个符号与“-”符号的组合,其中“-”符号表示禁止。每组分别代表文件所属用户、同组用户和其他非本组用户对该文件的读(r)、写(w)、执行权限(x)。

十进制表示法利用十进制数字来表示文件的权限。具体值如下: 读权限 (r):4 写权限 (w):2 执行权限 (x):1

下面的表4-1表示了文件的一组权限描述和其符号化表示、十进制表示之间的对应关系,并列出了其十进制表示的计算方法。

符号化表示 rwx rw- r-x r-- -wx -w- --- 十进制表示 7 6 5 4 3 2 0 十进制表示计算方法 4(r) + 2(w) + 1(x) 4(r) + 2(w) + 0(x) 4(r) + 0(w) + 1(x) 4(r) + 0(w) + 0(x) 0(r) + 2(w) + 1(x) 0(r) + 2(w) + 0(x) 0(r) + 0(w) + 0(x) 权限描述 读、写、执行 读、写 读、执行 只读 写、执行 只写 禁止读、写、执行 表4-1 文件权限与其符号化表示和十进制表示的对应关系

【实例说明】

实例4.1 在第三章我们讲到过ls命令。如果用ls命令查到的结果里有下面的两个文件: -rw-r--r-- 1 root root 238 Jun 18 17:22 test.txt drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups 请说明两个文件的类型、所有者与他们相关的权限。

解答: 对于第一个文件test.txt, 由ls命令结果第1栏的第1列可以看到,其文件类型用符号‘-’表示,也即是普通文件。由结果的的第3栏和第4栏可以看出,它的所有者为 root(对应于第3栏),所属用户组为 root(对应于第4栏)。在权限方面,由结果第1栏的第2-10列可以看出,只有 root 用户可以存取此文件,其它人只能读此文件。

对于第二个文件groups, 由其ls命令结果第1栏的第1列可以看到,它的文件类型为‘d’,因而说明groups是一个目录。由结果的的第3栏和第4栏可以看出,它的所有者为 test1(对应于第3栏),所属用户组为 testgroup(对应于第4栏)。在权限方面,由结果第1栏的第2-10列可以看出,groups目录的文件所有者 test1 可以在本目录中进行任何工作;testgroup 用户组的成员可以进入本目录进行工作,但是不能在本目录下进行写入操作;对于其它的用户,由于他们只有读权限,而没有执行权限,因而在该目录下不能执行任何命令,包括ls、cd 等命令,所以他们只能看到groups目录,而无法获得groups下的内容,也无法进入groups目录。

4.3. 文件权限的设置与修改命令

前面两节中,我们介绍了文件权限的有关概念以及linux系统中权限的表示方法。在这一节,我们将具体介绍在文件权限的设置和修改时经常用到的几种命令。

在介绍这些命令之前,首先需要指出的一点是:对于一个文件来说,并不是谁都可以改变文件的访问权限,只有文件的所有者才有权修改其权限,另外超级用户可对系统中所有文件进行权限设置。

4.3.1 改变权限命令:chmod

【命令说明】

chmod命令用来改变文件或目录的权限。

由于前面讲到过,文件权限的表示有两种方法,因而与之相对应的,chmod命令改变权限的方法也有两种:符号法和十进制法。

【命令格式】

可以用下面的表4-2来描述十进制法和符号法的命令格式: 1.十进制法改变文件权限: chmod [-option] xyz [filelist]

其中,option代表选项,filelist代表准备修改权限的文件及目录列表。x、y、z 各指文件所有者、同组用户及其他用户对该文件权限的十进制表示。

2.符号法改变文件权限:

可用表4-2来描述chmod用符号法设置权限的命令格式:

chmod

[-option] u g o a + - = r w x [filelist] 表4-2 符号法设置权限的chmod命令格式

上表中,第二列的option代表选项;第三列代表要权限设置要针对的用户类型,其中u、g、o、a分别表示文件所有者、文件所属用户组、其他用户和所有用户;第四列表示对第三列指出的用户类型的访问权限操作,其中‘+’ 、‘-’、 ‘=’分别代表对权限的加入、除去和设定;第五列表示要加入、除去或设定的权限;而第六列表示准备修改权限的文件及目录列表。

【选项说明】

-c:只有在文件权限确实改变时才进行详细说明; -f:不打印“权限不能改变“之类的文件错误信息; -R:递归改变目录及其内容的权限; -v:详细说明权限的变化。

【实例说明】

实例4. 2 chmod:十进制法改变文件权限

$ chmod 766 test.txt $ ls -l -rwxr--r-- 1 root root Jun 2 07:15 test.txt 说明:

在本例中,将文件test的访问权限改为744,对照表 4-1十进制表示和符号化表示的对应关系,可以得出test文件修改后权限的符号表示为:rwxr--r-- 。这也正是改变权限后用ls命令浏览到的结果。

实例4. 3 chmod:符号法改变文件权限

$ chmod u=rwx,og=rx test.txt $ ls -l -rwxr-xr-x 1 root root Jun 2 17:20 test.txt $ chmod a+w test.txt $ ls –l -rwxrwxrwx 1 root root Jun 2 17:20 test.txt $ chmod a-x test.txt $ ls –l -rw-rw-rw- 1 root root Jun 2 17:21 test.txt

说明:

在本例中,第一、三、五条命令用符号法设置文件权限,而第二、四、六条命令用ls来验证文件权限是否修改为设定值。其中,第一条命令将文件test.txt的所有者(u)的权限

设为rwx, 同组用户(g)和其他用户(o)的权限设为rx。注意,‘u=rwx‘和‘og=rx‘之间是用’ , ’隔开的。第三条命令将开放test.txt文件所有用户的写权限,也就是说使系统中的所有用户都能对该文件进行修改。第五条命令将关闭所有用户对test.txt的执行权限。

4.3.2 chown命令

【命令说明】

chown是change owner的缩写,chown命令用于改变文件的所有者。另外,我们也可以用chown命令在改变文件所有者的同时也改变其所属用户组。

【命令格式】

chown [-option] user[ :group] filelist

其中,option代表选项,user表示将要改变的所有者用户名或用户id,group表示将要改变的所属用户组名或组id,filelist代表将要改变所有者的文件列表。

【选项说明】

-c:只有在文件权限确实改变时才进行详细说明; -f:不打印“权限不能改变“之类的文件错误信息; -R:递归改变目录及其内容的所有者; -v:详细说明权限的变化。

【实例说明】

实例4. 4 chown:改变文件所有者

$ chown test test.txt $ ls –l drwxrwxr-x 3 root root Jun 2 15:30 testfolder1 -rw-rw-rw- 1 test root Jun 2 17:21 test.txt $ chown –R root:test testfolder1 $ ls –l drwxrwxr-x 3 root test Jun 2 15:30 testfolder1 -rw-rw-rw- 1 test root Jun 2 17:21 test.txt 说明: 在本例中,第一条命令将文件test.txt的所有者改为test, 因而在第二条命令利用ls查看文件时,可以看到test.txt文件显示结果的第三栏用户名改成了test; 第二条命令递归的改变目录testfolder1的所有者及所属用户组,将所有者改为root,将所属用户改为test, 因而当用第四条命令查看文件时,可以看到目录testfolder1结果的第三、四栏用户名和用户组分别为root和test。

4.3.3 chgrp命令

【命令说明】

chgrp是change group的缩写,chgrp命令用于改变文件的所属用户组。

【命令格式】

chgrp [-option] group filelist

其中,option代表选项,group表示将要改变的所属用户组名或组id。

【选项说明】

-c:只有在文件权限确实改变时才进行详细说明; -f:不打印“权限不能改变“之类的文件错误信息; -R:递归改变目录及其内容的所属用户组; -v:详细说明权限的变化。

【实例说明】

实例4. 5 chgrp:改变文件所属群组

$ chgrp test test.txt $ chgrp –R 0 testfolder1 $ ls –l drwxrwxr-x 3 root root Jun 2 15:30 testfolder1 -rw-rw-rw- 1 test test Jun 2 17:21 test.txt 说明:

在本例中,第一条命令将文件test.txt的用户组改为test; 而第二条命令递归的将目录testfolder1的用户组改为root, 其中数字0代表用户组root的组id。因而,当第三条命令用ls查看文件时,可以看到目录testfolder1的第四栏用户组为root, 而文件test.txt的第三栏用户为test。

4.3.4 umask命令

【命令说明】

无论何时创建新文件或目录,系统都会为它们指定缺省的文件权限,并由 umask 设置对其进行管理。umask 的缺省值设置为 0,这说明每个用户对创建的新文件都具有读写权限 (-rw-rw-rw-),且每个用户对创建的新目录都具有读、写或搜索权限 (drwxrwxrwx)。 要限制新建文件和目录的缺省权限,请使用 umask 命令。 创建新文件时,设置的文件模式创建掩码中的每个权限位都会导致文件中的相应权限位被清除(处于禁用状态),因此权限受到了屏蔽。相反,在掩码中清除的位允许在新创建的文件中启用相应的文件模式位。

POSIX 和 Key shell 中生成的 umask 命令可以接受符号掩码值(及过时的数字形式)。这些符号掩码值与那些同 chmod 命令(请参阅 chmod(1))一起使用的掩码值相似。

【命令格式】

umask who operator permissions

【选项说明】

who

表示下列字符中的一个、两个或全部:

operator

permissions

?

u(表示用户权限) ?

g(表示组用户权限) ?

o(表示其他用户权限) ?

a (ugo 的缩写形式)

如果忽略了字符 who,operator 和 permissions 将适用于所有类(等同于 a 或 ugo)。

字符 +、- 或 = 之一:

?

+ 表示清除掩码中由 who 和 permissions 值代表

的文件模式位,这样就可以在新建文件中启用相应的权

限。

?

- 表示设置掩码中由指定的 who 和 permissions

值所代表文件模式位,这样就可以在新建文件中禁用相应的权限。

?

= 表示清除由相应的 who 和 permissions 值指定

的文件模式位,并设置其他所有的值。

字符或字符组合 r、w、x、rx、wx、rw 或 rwx 之一,用于为相应的 who 和 operator 指定读、写和(或)执行(搜索)权限。

如果未指定 permissions,则相应的 who 中的现有文件创建模式掩码不会发生更改。

【实例说明】

实例4. 6 chgrp:改变文件所属群组

$ chgrp test test.txt $ chgrp –R 0 testfolder1 $ ls –l drwxrwxr-x 3 root root Jun 2 15:30 testfolder1 -rw-rw-rw- 1 test test Jun 2 17:21 test.txt 说明:

4.5本章要点 .......................................... 4.6思考题 ............................................

本文来源:https://www.bwwdw.com/article/768x.html

Top