Unix/权限快速入门
在您的主目录中,键入
% ls -l
您将看到您现在获得了有关目录内容的大量详细信息。
每个文件(和目录)都有访问权限,可以通过键入 ls -l 来显示。此外,ls -lg 提供有关哪个组拥有该文件(以下示例中的 istrain)的更多信息
-rwxrw-r-- 1 ccaajim istrain 3210 Aug15 14:25 train.doc
在左侧列中是一个包含 10 个符号的字符串,由符号 d, r, w, x, - 组成,偶尔也会有 s 或 S。目前对您来说重要的符号是 r 代表读,w 代表写,x 代表执行。如果存在 d,它将位于字符串的左侧,表示目录:否则字符串将以 - 开头。
剩余的 9 个符号表示权限,或访问权限,并被分成三组,每组三个。
最左边的 3 个符号表示文件所有者(上述示例中的 ccaajim)的权限。最右边的三个符号表示所有其他用户(在 Unix 中称为 world)的权限。中间三列是授予用户所属组的权限。
符号 r、w 等的含义略有不同,具体取决于它们是指普通文件还是目录。
- r(或 -),表示读权限(或没有权限),即存在或不存在读取和复制文件的权限
- w(或 -),表示写权限(或没有权限),即存在或不存在修改文件的权限
- x(或 -),表示执行权限(或没有权限),即存在或不存在执行文件的权限(在适当的情况下)
- r 允许用户列出目录中的文件;
- w 表示用户可以从目录中删除文件或将文件移动到目录中;
- x 表示访问目录中文件的权限。这意味着您可以读取目录中的文件,前提是您对单个文件具有读权限。
因此,为了读取文件,您必须对包含该文件的目录具有执行权限,因此对包含该目录作为子目录的任何目录具有执行权限,依此类推,一直向上到树根。
权限字符串 | 效果 |
---|---|
-rwxrwxrwx | 每个人都可以读取、写入和执行(以及删除)的文件 |
-rw------- | 只有所有者可以读取和写入的文件 - 其他人无法读取或写入,并且没有人拥有执行权限(例如您的邮箱文件) |
粘滞位 由 "t" 标志表示:它表示文件或目录只能由其所有者(或 root)删除。
setuid 位由 "s" 标志表示:它表示文件应以其所有者的用户 ID 执行。
只有文件的所有者可以使用 chmod 来更改文件的权限。chmod 的选项如下
符号 | 含义 |
---|---|
u | 用户 |
g | 组 |
o | 其他 |
a | 全部(即 u 和 g 和 o) |
r | 读 |
w | 写(和删除) |
x | 执行(和访问目录) |
+ | 添加权限 |
- | 撤销权限 |
例如,要删除文件 allcolours 的组和其他人对它的读、写和执行权限,请输入
% chmod go-rwx allcolours
这将保留其他权限不变。
要授予文件 allcolours 的所有用户读写权限,请输入
% chmod a+rw allcolours
除了上面概述的语法之外,您还可以使用 chmod 和一个数字参数,该参数代表用户和预期的权限。一个常见的例子是
% chmod 755 myscript.sh
此示例等效于 chmod u=wrx,g=rx,o=rx
它是如何工作的?嗯,让我们将数字称为三元组,以提醒我们它是一个三位数字的字符串。每个数字代表 u、g 和 o 之一的权限。我们像这样为每个可能的权限赋予一个数值
数字 | 含义 |
---|---|
1 | 执行 |
2 | 写 |
4 | 读 |
0 | 清除权限 |
在我们上面的示例中,数字字符串是 755。这只能通过一种方式加起来(可以这么说)。
位置 | 值 | 组合 |
---|---|---|
u | 7 | 4 + 2 + 1 |
g | 5 | 4 + 0 + 1 |
o | 5 | 4 + 0 + 1 |
这意味着 chmod 755 filename 表示文件所有者可以读、写和执行,组和其他用户可以读和执行。
此命令可以获取或设置创建文件的默认权限。