📜  Linux 中的权限

📅  最后修改于: 2022-05-13 01:57:26.991000             🧑  作者: Mango

Linux 中的权限

Linux 是一个多用户操作系统,因此它具有防止人们访问彼此机密文件的安全性。

介绍

当您执行“ls”命令时,您不会获得任何有关文件安全性的信息,因为默认情况下“ls”仅列出文件名。您可以通过在“ls”命令中使用“选项”来获取更多信息。所有选项都以“-”开头。例如,要使用“长列表”选项执行“ls”,您可以键入 ls -l

当您这样做时,每个文件将以长格式列在单独的行中。下面的窗口中有一个示例。

ls -l



这些行中有很多信息。

  1. 第一个字符几乎总是“-”(表示它是一个文件)或“d”(表示它是一个目录)。
  2. 接下来的九个字符(rw-r–r–) 显示安全性;我们稍后再谈。
  3. 下一列显示文件的所有者。在这种情况下是我,我的用户 ID 是“aditya314”。
  4. 下一列显示文件的组所有者。就我而言,我想授予“aditya314”组对这些文件的特殊访问权限。
  5. 下一列显示文件的大小(以字节为单位)。
  6. 下一列显示上次修改文件的日期和时间。
  7. 当然,最后一列给出了文件名。

解密安全字符需要做更多的工作。

了解安全权限

首先,您必须将这九个字符视为三组三个字符(请参阅底部的框)。三个“rwx”字符的每一个都表示您可以对文件执行的不同操作。

---     ---     ---
rwx     rwx     rwx
user    group   other

读、写、执行和——

'r' 表示您可以“读取”文件的内容。
“w”表示您可以“写入”或修改文件的内容。
“x”表示您可以“执行”该文件。仅当文件是程序时才授予此权限。
如果任何“rwx”字符被“-”替换,则该权限已被撤销。

用户、组和其他

user – 用户权限仅适用于文件或目录的所有者,不会影响其他用户的操作。
group – 组权限仅适用于已分配给文件或目录的组,它们不会影响其他用户的操作。
其他 - 其他权限适用于系统上的所有其他用户,这是您最想观看的权限组。



读取安全权限

例如,考虑用户对某些文件的权限是“rw-”作为前三个字符。这意味着文件的所有者(“aditya314”,即我)可以“读”它(查看它的内容)和“写”它(修改它的内容)。我无法执行它,因为它不是程序;它是一个文本文件。

如果“rx”是第二组 3 个字符,则表示“aditya314”组的成员只能读取和执行文件。

最后三个字符显示在此 Linux 系统上拥有用户 ID 的任何人所允许的权限。假设我们有权限(“r-”)。这意味着我们 Linux 世界中的任何人都可以读取,但他们不能修改文件的内容或执行它。

更改安全权限

用于更改文件安全权限的命令称为“chmod”,代表“更改模式”,因为九个安全字符统称为文件的安全“模式”。

  1. 您给“chmod”命令的第一个参数是“u”、“g”、“o”。我们用:
    u 为用户
    g 团体
    o 对于其他人,
    您也可以使用它们的组合 (u,g,o)。
    这指定要修改三个组中的哪一个。
  2. 本次使用后
    '+' 用于添加
    '-' 用于删除
    和一个“=”用于分配权限。
  3. 然后指定要更改的权限 r、w 或 x。
    在这里,您也可以使用 r、w、x 的组合。
    这指定了您要修改的三个权限“rwx”中的哪一个
  4. use 可以使用逗号修改更多权限
  5. 最后,您要更改其权限的文件的名称

一个例子将更清楚地说明这一点。
例如,如果您想为文件“xyz.txt”向世界(“其他”)授予“执行”权限,您可以首先键入

chmod o

现在,您将键入一个“+”来表示您正在“添加”一个权限。

chmod o+

然后你会输入一个“x”来表示你正在添加“执行”权限。



chmod o+x

最后,指定要更改的文件。

chmod o+x xyz.txt

您可以在下图中看到变化。

chmod o+x xyz.txt

您还可以一次更改多个权限。例如,如果您想取消所有人的所有权限,您可以输入

chmod ugo-rwx xyz.txt

上面的代码撤销了所有用户(u)、组(g)和其他人(o)对文件 xyz.txt 的所有读取(r)、写入(w)和执行(x)权限,这导致了这个结果。

多次使用

另一个例子可以是这样的:

chmod ug+rw,o-x abc.mp4

上面的代码为 user(u) 和 group(g) 添加了 read(r) 和 write(w) 权限,并撤销了其他人 (o) 对文件 abc.mp4 的执行 (x) 权限。

像这样的东西:

chmod ug=rx,o+r abc.c

为 user(u) 和 group(g) 分配 read(r) 和 execute(x) 权限,并向其他人添加文件 abc.c 的读取权限。

您可以调用、撤销和分配多种文件权限组合。您可以在您的 linux 系统中尝试一些。

八进制符号

您也可以像这样使用八进制符号。

八进制表

使用八进制符号表代替 'r'、'w' 和 'x'。每个数字八进制符号可以用于组“u”、“g”、“o”中的任何一个。

因此,以下工作相同。

chmod ugo+rwx [file_name]
chmod 777 [file_name]

它们都为所有组提供完整的读写和执行权限(代码=7)。

这个也是一样。。

chmod u=r,g=wx,o=rx [file_name]
chmod 435 [file_name]

这两个代码都为用户提供了读取(代码= 4)权限,为组提供了写入和执行(代码= 3)权限,并为其他人提供了读取和执行(代码= 5)权限。

甚至这个……

chmod 775 [file_name]
chmod ug+rwx,o=rx [file_name]

这两个命令都向用户和组授予所有权限(代码 = 7),为其他人读取和执行(代码 = 5)。

进一步学习

默认的 Linux 安全模型有点不灵活。要向一组人授予特殊访问权限(例如修改权限),您必须让系统管理员创建一个包含这些人的组。此外,如果您想向另一组人授予一组不同的访问权限(例如读取访问权限),则不能这样做,因为您只能为每个文件或目录分配一个组所有者。要解决这个问题,您可以使用 ACL(访问控制列表)。您可以从此链接了解有关它们的更多信息:ACL

参考资料:askubuntu
linuxcommand.org