查看权限
要查看文件和目录的权限,请使用 ls -l 或者 ls -n 命令。
# ls -l file -rw-r--r-- 1 root root 0 Nov 19 23:49 file
ls -l 命令显示的第一个信息字段是文件类型。
文件类型通常指定它是文件还是目录。
文件由连字符 (-) 表示。
目录由字母 d 表示。
其余字段代表权限组: owner、group 和 other。
默认组所有权
每个用户可以是多个组的成员(列在 /etc/group 文件中的多个组下)。
只有一个组将是用户的主要组(列在 /etc/password 中的用户条目中)。
当用户创建文件时,默认情况下该文件将由用户的主要组拥有。
如果他们希望该文件归他们的其他组之一所有,他们必须使用 chgrp 命令来修改组成员身份。
例如 :
$ id uid=1001(user) gid=1001(user) groups=1001(user),10(wheel)
$ touch file
$ ls -lrt file -rw-rw-r-- 1 user user 0 Nov 20 00:52 file
如上图新创建的文件(file)自动获取组为“用户”。
Linux 中的所有文件和目录都有一组标准的访问权限。
这些访问权限控制谁可以访问哪些文件,并为系统中的文件和目录提供基本的安全级别。
权限组
共有三个权限组:
- 所有者
- 组
- 其他
下表描述了权限组及其范围:
权限 | 描述 |
---|---|
Owner | 文件或者目录的指定所有者使用的权限 |
Group | 拥有文件或者目录的组成员使用的权限 |
Other | 除文件所有者之外的所有用户以及拥有文件或者目录的组成员使用的权限 |
文件和目录权限
以下是 ls -l 命令的示例输出;我们可以从每行的第一个字符看到 dir1 和 dir2 是目录(由 d 表示),而 file1 和 file2 是常规文件(由 表示)。
$ ls -l total 0 drwxrwxr-x 2 user user 6 Nov 20 00:55 dir1 drwxrwxr-x 2 user user 6 Nov 20 00:55 dir2 -rw-rw-r-- 1 user user 0 Nov 20 00:55 file1 -rw-rw-r-- 1 user user 0 Nov 20 00:55 file2
接下来的九个字符显示文件对用户、组和其他人(或者其他所有人)的权限,如下所示,为了清楚起见,添加了括号:
-(rw-)(rw-)(r--) 1 user user 0 Nov 20 00:55 file1
现在拥有者有读写权限(rw-),组有读写权限(rw-),其他人只有读权限(r-)。
这称为符号表示,因为诸如 r、w 和 x 之类的字母用于表示权限。
权限也可以用数字表示:
r = 4; w = 2; x = 1
添加每个部分,以便文件元的权限(来自上面的示例)为 664.
这是查看我们如何得出该数字的另一种方法:
-(rw-)(rw-)(r--) -(42-)(42-)(4--) 664
在每个部分中添加数字会导致 664 的权限。
文件所有权
每个文件都归特定用户(或者 UID)和特定组(或者 GID)所有。
chown 命令可用于仅更改用户或者文件的用户和组。
这是将文件 test 的所有者更改为 user 并将其组更改为 user 的示例。
# ls -l test -rw-r--r-- 1 root root 0 Nov 20 00:43 test
# chown user:user test
# ls -l test -rw-r--r-- 1 user user 0 Nov 20 00:43 test
chown 命令的基本格式如下:
# chown user:group filename
可以使用句点 (.) 代替冒号 (:) 分隔符。
此外,用户名或者组名都可以省略。
如果省略用户名(但存在分隔符),则 chown 命令的行为类似于 chgrp 命令,并且仅更改组所有权。
如果省略组名(但存在分隔符,则该组将设置为指定用户的登录组。
如果同时省略组名和分隔符,则仅更改用户名。
例如, 要仅更改所有者,我们可以运行以下命令:
# chown user filename
仅更改文件组的备用命令是 chgrp 命令。
例如:
# chgrp group filename
普通用户通常使用 chgrp 命令来更改其文件的组所有权。
chown 命令通常只由 root 用户使用。
更改文件权限
chmod 命令用于更改文件的权限。
它可用于象征性地添加或者删除权限。
例如,要为文件所有者添加执行权限,我们将运行:
$ chmod u+x file_name
或者,要为拥有该文件的组添加读写权限,我们可以运行:
$ chmod g+rw file_name
除了添加权限之外,chmod 的符号语法也可用于减去或者设置为某个绝对值,如以下示例所示:
$ chmod o-w file_name $ chmod u=rwx,g=rx,o= file_name
chmod 命令还可以使用数字表示显式设置权限。
例如,要将文件的权限设置为 rwxrwxr-,我们可以运行:
$ chmod 774 file_name
除了标准的读、写和执行权限外,chmod 还可以设置特殊权限。
它们是 setuid 位、setgid 位和粘性位。
以下示例显示了如何设置这些特殊权限以及这些权限的效果的简要说明。
$ chmod u+s file_name
添加 setuid 位,以便在可执行文件时,该文件将以其所有者的权限执行。
$ chmod g+s file_name
添加 setgid 位,这样,如果可执行,此文件将以其组的权限执行。
当在目录上设置此项时,在该目录中创建的所有文件都将与该目录具有相同的组。
$ chmod o+t directory_name
添加粘滞位,以便用户只能从他们创建的这个目录中删除文件。
权限集
每个权限组具有三个权限,称为权限集。
每组都包含读取、写入和执行权限。
每个文件或者目录具有三种权限组的三个权限集。
第一个权限集表示所有者权限,第二个权限集表示组权限,最后一个权限集表示其他权限。
读取、写入和执行权限分别由字符 r 、 w 和 x 表示。
任何这些字符(例如 r)的存在表示授予了特定权限。
代替权限集中字符的破折号 () 符号表示特定权限被拒绝。
Linux 在创建新文件或者目录时自动分配初始权限。
权限 | 访问文件 | 访问目录 |
---|---|---|
Read (r) | 您可以显示文件内容并复制文件。 | 您可以使用 ls 命令列出目录内容。 |
Write (w) | 您可以修改文件内容。 | 您可以修改目录的内容,例如删除文件。 您还必须具有执行权限才能执行此操作。 |
Execute (x) | 如果文件是可执行文件,则可以执行该文件。 如果您还具有读取和执行权限,则可以执行 shell 脚本。 | 您可以使用 cd 命令访问该目录。 如果您也有读取权限,则可以在目录上运行 ls -l 命令以列出内容。 如果您没有读取权限,只要知道文件名,就可以运行 ls 命令。 |