跳转到内容

Linux 指南/权限

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

Linux 权限是 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)的文件权限。 最右边的 3 个符号表示所有其他人的权限(在 Unix 中称为世界)。 中间的三个符号是赋予用户帐户所属的组的权限。

符号 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 表示对文件所有者具有读取、写入和执行权限,对组和其他人具有读取和执行权限。

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

华夏公益教科书