使用 ls -l 命令查看文件权限(list-long,长列表格式)。 它们将显示如下,请注意,我在权限之间添加了空格以使其更易于阅读
其中:r = 读取,w = 写入,x = 执行
- rwx rw- r-- 1 |
末尾的两个名称分别是用户名和组。
更改一个或多个文件的文件访问权限。
使用 chmod 更改权限有两种方法:字母或数字。
使用 + 或 - (加号或减号)分别为文件添加或删除权限。 使用等号 = 指定新权限并删除特定用户类型的旧权限。
您可以使用 chmod 字母,其中字母是
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” 的读取/写入/执行权限。 第一个数字是用户,第二个是组,第三个是其他人(other)。
chmod 521 somefile |
这将赋予用户读取和执行权限,组写入权限(但没有读取权限!),以及其他所有人执行权限。(请注意,这只是一个示例,这样的设置实际上没有意义......)。
更改文件的所有权(因此得名“chown” - change owner,更改所有者)。 此程序只能由 root 用户使用。
使用 -R 选项以递归方式更改,换句话说,包括子目录中的所有匹配文件。
命令语法
chown owner:group the_file_name |
只有在目录中创建文件的人才能删除它,即使其他人拥有写入权限也是如此。 您可以通过键入以下命令来启用它
chmod 1700 somedirectory (where 1 = sticky bit) |
或(其中 t 代表粘滞位)
chmod +t somedirectory |
要关闭它,您需要键入
chmod 0700 somefile (where the zero would mean no sticky bit) |
或(其中 t 代表粘滞位)
chmod -t somefile |
请注意,在数字示例中,权限无关紧要,只有第一个数字(1 = 开启,0 = 关闭)才重要。
粘滞目录的一个示例通常是 /tmp
允许 SUID/SGID(切换用户 ID/切换组 ID)访问。 您通常会使用 chmod 为特定文件启用或禁用此功能,suid 通常被认为是安全隐患,因此在使用时要小心。
示例
chmod u+s file_name |
这将赋予每个人使用设置 +s 开关的用户的权限执行文件的权限。
![]() | 安全隐患 |
---|---|
这显然是一个安全隐患。 除非必要,否则应避免使用 suid 标志。 |
更改文件系统属性(适用于 ext2fs 和可能的其他文件系统...)。 使用 -R 选项以递归方式更改文件, chattr 具有大量可以设置在文件上的属性,请阅读手册页以获取更多信息。
示例
chattr +i /sbin/lilo.conf[1] |
这会在文件上设置“immutable”(不可变)标志。 使用“+”添加属性,使用“-”删除属性。 +i 将防止对 “lilo.conf” 文件进行任何更改(意外或其他)。 如果您希望修改 lilo.conf 文件,您需要取消设置不可变标志: chattr -i。 请注意,某些标志只能由 root 用户使用; -i,-a 以及可能的许多其他标志。
请注意,chattr 可以更改许多不同的属性,以下是一些可能更有用的属性
A(无访问时间)--- 如果文件或目录设置了此属性,则无论何时访问它(无论是读取还是写入),它的上次访问时间都不会更新。 这可能很有用,例如,对于经常被读取访问的文件或目录,尤其因为此参数是 inode 打开时唯一更改的参数。
a(仅追加)--- 如果文件设置了此属性并且已打开以进行写入,则唯一可能的操作是将数据追加到其先前的内容。 对于目录,这意味着您只能向其中添加文件,但不能重命名或删除任何现有文件。 只有 root 用户可以设置或清除此属性。
s(安全删除)--- 当删除设置了此属性的文件或目录时,它在磁盘上占用的块将被写回零(类似于使用 shred)。 请注意,这在 ext2 和 ext3 文件系统上有效,但不太可能在其他文件系统上有效(请参阅您正在使用的文件系统的文档)。 您可能还想了解 shred,请参阅第 7 章
(列出属性)。 这将列出文件是否具有任何特殊属性(由 chattr 设置)。 使用 -R 选项以递归方式列出,并尝试使用 -d 选项将目录像其他文件一样列出,而不是列出其内容。
命令语法
lsattr |
这将列出当前目录中的文件,您可能还想指定一个目录或文件
lsattr /directory/or/file |
[1] | 此示例和部分解释摘自 Linux 在线课堂,有关更多信息,请参阅参考书目中的 [4]。 |