文件权限

使用 ls -l 查看文件权限(list-long)。 它们将如下所示,请注意,我添加了空格 在权限之间,使其更易于阅读

其中:r = 读取,w = 写入, x = 执行

  -  rwx   rw-   r--  1 (1) newuser newuser
type(2)owner(3)group(4)others(5)
(1)
这个数字是到此文件的硬链接(指针)的数量。 你可以使用 ln 来创建到该文件的另一个硬链接。
(2)
这是文件类型。 '-' 表示常规文件,'d' 表示目录,'l' 表示链接。 还有其他类型,例如 'c' 表示字符设备,'b' 表示块设备(在 /dev/ 目录中找到)。
(3)
这些是文件所有者(创建文件的用户)的权限。
(4)
这些是组的权限,属于与创建文件的用户同一组的任何用户都将拥有这些权限。
(5)
这些是其他所有人的权限。 任何组外的用户都将拥有对该文件的这些权限。

末尾的两个名称分别是用户名 和组

chmod

更改 文件访问 权限,用于一个或多个文件。

有两种方法 可以使用 chmod 更改 权限:字母 或数字。

字母方法

使用 + 或 - (加号或减号 符号)分别添加 或删除 文件的权限。 使用等号 =,指定 新的 权限并删除 旧的 权限,针对特定 类型的用户。

你可以使用 chmod letter,其中字母

a (所有(所有人)), u (用户), g (组) 和 o (其他)。

示例

chmod u+rw somefile

这将给予用户读取和写入 权限。

chmod o-rwx somefile

这将从其他用户中删除 读取/写入/执行权限(不包括 您组内的用户)。

chmod a+r somefile

这将给予每个人 对该文件的读取权限

chmod a=rx somefile

这将给予所有人对该文件的执行和读取权限,如果有人拥有写入 权限,则将被删除。

数字方法

您也可以使用数字 (而不是字母)来更改 文件权限。 其中

r (读取)= 4 w (写入)= 2 x(执行)= 1

数字 可以相加,因此您可以指定读取/写入/执行权限; 读取+写入 = 6,读取+执行 = 5,读取+写入+执行 = 7

示例

chmod 777 somefile

这将给予每个人对 “this_file” 的读取/写入/执行权限。 第一个数字 是用户,第二个是组 ,第三个是其他人(其他)。

chmod 521 somefile

这将给予用户读取和执行 权限,以及组 写入权限 (但没有读取权限!),以及其他所有人执行 权限。(请注意,这只是一个示例,这样的设置实际上没有意义...)。

chown

更改文件的所有权 权限 (因此得名 'chown' - change owner)。 此程序只能由 root 用户使用。

使用 -R 选项来 递归地更改,换句话说,包括子目录中的所有匹配 文件。

命令语法

chown owner:group the_file_name
sticky bit

只有在目录中创建文件的人才能删除 它,即使其他人 拥有写入 权限。 您可以通过键入以下内容来打开

chmod 1700 somedirectory (where 1 = sticky bit)

或(其中 t 代表 sticky bit)

chmod +t somedirectory

要关闭 ,您需要键入

chmod 0700 somefile (where the zero would mean no sticky bit)

或(其中 t 代表 sticky bit)

chmod -t somefile

请注意,权限 在数字 示例中不相关 ,只有第一个数字(1 = 开,0 = 关)。

sticky 目录的一个示例通常是 /tmp

suid

允许 SUID/SGID(切换用户 ID/切换组 ID)访问。 您通常会使用 chmod 来打开或关闭 特定文件的此功能,suid 通常被认为是安全 隐患,因此在使用时要小心

示例

chmod u+s file_name

这将给予每个人执行 文件的权限,权限与设置 +s 开关的用户相同。

安全隐患

这显然是一个安全隐患。 除非必要,否则您应避免使用 suid 标志。

chattr

更改文件系统属性(适用于 ext2fs 和可能的其他文件系统...)。 使用 -R 选项来 递归地更改文件, chattr 有大量 可以设置 在文件上的属性 ,请阅读手册 以获取更多信息。

示例

chattr +i /sbin/lilo.conf[1]

这会在文件上设置 “immutable”标志 。 使用 '+' 添加 属性 ,使用 '-' 删除它们。 +i 将阻止对 “lilo.conf” 文件的任何更改 (意外或其他)。 如果您希望修改 lilo.conf 文件,您需要取消设置 immutable 标志: chattr -i 请注意,某些标志 只能由 root 用户使用; -i-a 以及可能的 许多其他标志。

请注意,chattr 可以更改许多不同的 属性 这里还有一些可能有用的属性

  • A(无访问时间)--- 如果文件或目录设置了此属性,则无论何时访问 它,无论是为了读取 还是为了写入 ,其上次 访问时间 都不会更新 。 这可能很有用,例如,对于经常被访问 以进行读取的文件或目录,尤其因为此参数是 inode 打开时唯一更改的参数

  • a(仅追加)--- 如果文件设置了此 属性并打开以进行写入,则唯一可能的操作是将数据 追加到其先前的内容 。 对于目录,这意味着您只能向其中添加 文件,但不能重命名 或删除任何现有 文件。 只有 root 用户可以设置或清除此属性。

  • s(安全删除)--- 当删除设置了此 属性的文件或目录时,它在磁盘 上占用的 将用零 写回(类似于使用 shred)。 请注意,这在 ext2 和 ext3 文件系统上有效,但在其他文件系统上不太可能有效(请参阅您正在使用的文件系统 的文档 )。 您可能还想查看 shred,请参阅 第 7 章

lsattr

(列出属性)。 这将列出 文件是否具有任何特殊 属性(由 chattr 设置)。 使用 -R 选项以递归方式列出 ,并尝试使用 -d 选项 将目录列出 为其他文件,而不是列出 其内容。

命令语法

lsattr

这将列出当前 目录中的文件,您可能还想指定 目录或文件

lsattr /directory/or/file

注意

[1]

此示例和部分解释摘自 Linux 在线课堂,有关更多信息,请参阅 参考书目 中的 [4]。