跳转到内容

Unix/权限快速入门

来自维基教科书,开放世界中的开放书籍


文件访问权限

[编辑 | 编辑源代码]

在您的主目录中,键入

% ls -l

您将看到您现在获得了有关目录内容的大量详细信息。

每个文件(和目录)都有访问权限,可以通过键入 ls -l 来显示。此外,ls -lg 提供有关哪个组拥有该文件(以下示例中的 istrain)的更多信息

-rwxrw-r-- 1 ccaajim istrain 3210 Aug15 14:25 train.doc

在左侧列中是一个包含 10 个符号的字符串,由符号 d, r, w, x, - 组成,偶尔也会有 sS。目前对您来说重要的符号是 r 代表读,w 代表写,x 代表执行。如果存在 d,它将位于字符串的左侧,表示目录:否则字符串将以 - 开头。

剩余的 9 个符号表示权限,或访问权限,并被分成三组,每组三个。

最左边的 3 个符号表示文件所有者(上述示例中的 ccaajim)的权限。最右边的三个符号表示所有其他用户(在 Unix 中称为 world)的权限。中间三列是授予用户所属组的权限。

符号 r、w 等的含义略有不同,具体取决于它们是指普通文件还是目录。

文件访问权限

[编辑 | 编辑源代码]
  • r(或 -),表示读权限(或没有权限),即存在或不存在读取和复制文件的权限
  • w(或 -),表示写权限(或没有权限),即存在或不存在修改文件的权限
  • x(或 -),表示执行权限(或没有权限),即存在或不存在执行文件的权限(在适当的情况下)

目录访问权限

[编辑 | 编辑源代码]
  • r 允许用户列出目录中的文件;
  • w 表示用户可以从目录中删除文件或将文件移动到目录中;
  • x 表示访问目录中文件的权限。这意味着您可以读取目录中的文件,前提是您对单个文件具有读权限。

因此,为了读取文件,您必须对包含该文件的目录具有执行权限,因此对包含该目录作为子目录的任何目录具有执行权限,依此类推,一直向上到树根。

一些例子

[编辑 | 编辑源代码]
权限字符串 效果
-rwxrwxrwx 每个人都可以读取、写入和执行(以及删除)的文件
-rw------- 只有所有者可以读取和写入的文件 - 其他人无法读取或写入,并且没有人拥有执行权限(例如您的邮箱文件)

粘滞位

[编辑 | 编辑源代码]

粘滞位 由 "t" 标志表示:它表示文件或目录只能由其所有者(或 root)删除。

setuid 位

[编辑 | 编辑源代码]

setuid 位由 "s" 标志表示:它表示文件应以其所有者的用户 ID 执行。

更改访问权限

[编辑 | 编辑源代码]

chmod (更改文件模式)

[编辑 | 编辑源代码]

只有文件的所有者可以使用 chmod 来更改文件的权限。chmod 的选项如下

符号 含义
u 用户
g
o 其他
a 全部(即 u 和 g 和 o)
r
w 写(和删除)
x 执行(和访问目录)
+ 添加权限
- 撤销权限

例如,要删除文件 allcolours 的组和其他人对它的读、写和执行权限,请输入

% chmod go-rwx allcolours

这将保留其他权限不变。

要授予文件 allcolours 的所有用户读写权限,请输入

% chmod a+rw allcolours

使用整数参数与 chmod

[编辑 | 编辑源代码]

除了上面概述的语法之外,您还可以使用 chmod 和一个数字参数,该参数代表用户和预期的权限。一个常见的例子是

% chmod 755 myscript.sh

此示例等效于 chmod u=wrx,g=rx,o=rx

它是如何工作的?嗯,让我们将数字称为三元组,以提醒我们它是一个三位数字的字符串。每个数字代表 ugo 之一的权限。我们像这样为每个可能的权限赋予一个数值

数字 含义
1 执行
2
4
0 清除权限

在我们上面的示例中,数字字符串是 755。这只能通过一种方式加起来(可以这么说)。

位置 组合
u 7 4 + 2 + 1
g 5 4 + 0 + 1
o 5 4 + 0 + 1

这意味着 chmod 755 filename 表示文件所有者可以读、写和执行,组和其他用户可以读和执行。

此命令可以获取或设置创建文件的默认权限。

华夏公益教科书