x (access directory)
目录虽然不能被执行,但是却具有可以执行的权限。目录的 x 权限表示用户是否可以进入该目标并成为当前的工作目录。注意,如果用户对目录没有 x 权限,则无法查看该目录下的文件的内容(注意与 r 权限的区别)。比如我们移除 testdir 目录上的 x 权限:
此时虽然其他人具有读 testfile1 文件的权限,但我们用 tester 用户读取其内容时:
提示没有权限,原因就是我们移除了 testdir 目录的 x 权限。所以,如果要允许目录被其他人浏览时,至少要给予 r 和 x 的权限。
文件的所有者
第三组信息显示文件的所有者,图片中显示的文件所有者为 nick。文件的所有者一般是创建该文件的用户,对该文件具有完全的权限。
文件所属的组
第四组信息显示文件所属的组。当我们通过 adduser 命令创建用户时一般会创建一个同名的组,该用户就属于与他同名的组(比如笔者机器上的用户 nick 就属于 nick 组)。当我们创建文件和目录时,其默认所属的组就是所有者所在的组。
用户和组的信息分别记录在 /etc/passwd、/etc/group 文件中。可以直接以读取文本文件的方式查看其内容:
这两个文件的内容是任何人都有权查看的,比如 /etc/passwd 文件的内容如下所示:
该图只显示了部分用户的信息,其中的每一行代表一个用户。/etc/group 文件的结构与 /etc/passwd 文件的结构类似。
基本操作在新建文件时会根据创建者的身份和其它的一些设置为文件生成默认的权限。比如我们全面看到的文件 testfile:
接下来我们介绍如何通过下面的命令修改文件权限相关的信息:
chown :改变文件所有者
chgrp :改变文件所属的组
chmod :改变文件的权限
改变文件所有者
通过 chown 命令可以改变文件的所有者:
$ sudo chown tester testfile
改变文件所属的组
通过 chgrp 命令可以改变文件所属的组:
改变文件的权限
通过 chmod 命令可以改变文件的权限。对于文件的 rwx 权限,有两种表示方法,数字表示法和字符表示法。
以数字表示权限的方式如下:
r: 4
w: 2
x: 1
如果是 rwx 权限就是 4 + 2 + 1 = 7 ,r-x 就是 4 + 1 = 5 ,--- 则为 0。所以 rw-rw-r-- 就可以用 664 来表示。如果我们想把文件的权限修改为 rwxrwxrwx,可以使用下面的命令:
$ chmod 777 testfile
以字符表示权限的方式如下:
用字符 u, g, o 分别代表文件所有者(user)、文件所属的组(group)和其他人(other),这就是 ugo 权限叫法的由来。只不过还有一个 a 可以表示全部的身份(all)。具体更改权限的语法如下:
chmod [u g o a] [+ - =] [rwx] 文件/目录
比如我们可以通过下面的命令把 testfile 的权限设回 rw-rw-r--:
$ chmod ug=rw,o=r testfile
如果想去掉组的 w 权限并给其他人添加 x 权限可以执行下面的命令:
$ chmod g-w,o+x testfile
我们还可通过 a 为全部身份设置权限,比如 rwx:
$ chmod a=rwx testfile
总结
ugo 权限是学习和使用 Linux 系统的基础,本文只介绍了其中最基本的概念和操作,希望可以帮助大家了解 Linux 的权限及其简单的操作。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx