Linux权限中的“其他人”是谁,“执行”是什么意思?

Linux权限中的“其他人”是谁,“执行”是什么意思?

我找不到以下三个问题的答案:

  • “其他”是谁?如果我们为服务器上的所有服务都指定一个用户,“其他”就不存在了,对吧?例如,如果我们将 Apache 指定为一个用户,并将/var/wwwchowned 设置为apache,然后输入chmod 700它应该可以工作,对吧?

  • “执行”和“读取”有什么区别?

  • 全新安装(例如在 Ubuntu 中)后整个系统的默认文件权限是什么?

答案1

“其他”是谁?如果我们为服务器上的所有服务都指定一个用户,“其他”就不存在了,对吧?例如,如果我们将 Apache 指定为一个用户,并将/var/wwwchowned 设置为apache,然后输入chmod 700它应该可以工作,对吧?

权限的工作方式如下,简要解释一下:

  • 第一位数字是文件的实际所有者(使用检查谁拥有文件ls -l并使用修改文件chown

  • 第二位数字表示文件所属组(尽管文件所有者不一定与文件所有者属于同一组)

  • 第三位数字还有其他人吗?意思是不是文件所有者和不在该组中的所有人。

因此,如果您将chmod文件权限设置为 700,并且该文件的所有者为apache,那么即使是您的“普通”用户也无法读取、写入或执行它。这是非常严格的,仅在极少数情况下才需要 - 例如,当您想要保护 SSH 私钥时,它会获得600权限。对于 Apache,这甚至可能导致其他问题,除了使用您的普通用户帐户,您将无法再编辑 中的任何文件/var/www

因此,一般来说,您不需要删除x00其他人的读取权限()。

您可以让其apache拥有该/var/www目录,但644可以(对其他人只读)。我经常使用的另一种方法是添加您自己的用户将 Apache 用户添加到新www-users组,然后将文件 chmodding 到/var/www775这样,您和 Apache 都可以写入文件。有关更多信息,请参见此处:Apache 的组权限


“执行”和“读取”有什么区别?

可执行文件可由用户直接运行 - 直接从 shell 运行。为了演示这一点,我们编写一个简短的文件并将其命名为“test”。添加以下内容:

echo "I am executable"

保存文件。现在,在你的 shell 中尝试输入./test。你将得到一个“-bash:./test:权限被拒绝“错误。这是因为默认情况下,新创建的文件不具有执行权限。如果添加执行权限,它就可以正常工作。

$ chmod +x test
$ ./test
I am executable

现在,这只是一个测试脚本,但通常情况下,所有二进制文件(如编译后的程序)也需要执行权限集,因此您实际上可以跑步并对他们做些什么,而不是仅有的读。

例如,这些是 中最常见的系统程序/bin。运行ls -l /bin以检查它们的权限。如您所见,它们归 拥有root,您无法更改它们,但您始终可以执行它们。

所以,这在某种程度上也是一个安全功能,因为您可以限制某些用户执行某些脚本和二进制文件。

要了解有关 Unix 权限的更多信息,请阅读维基百科文章。您所知的“读写执行”等基本权限已经存在很长时间了,但它们只是所谓的访问控制列表的一部分 - 访问控制列表提供的功能远不止这些。


全新安装(例如在 Ubuntu 中)后整个系统的默认文件权限是什么?

它们因目录和所有者而异。有些文件和目录是系统保留的,所有者是root。在大多数情况下,您仍然可以使用普通用户帐户读取它们。

其他目录(例如您的主文件夹)显然属于您的用户。如果一台计算机由多人共享,则拒绝其他用户读取该计算机的权限是合理的 - 毕竟,您不想让您的私人资料暴露。

最后,一些文件默认是可执行的(例如,中/bin),但其他文件则不是(例如,中的配置文件/etc)。

文件系统层次标准指定 Linux 系统中目录的预期用途。您几乎可以根据要对目录执行的操作“猜测”权限应该是什么。

答案2

只想补充一点,执行权限对于目录具有不同的有效含义:

为了文件

  • 读取:如果文件内容可以读取
  • 写入:如果用户或进程可以写入文件(更改其内容)
  • 执行:如果文件可以执行

为了文件夹

  • 阅读:如果可以获取目录列表
  • 写入:如果用户或进程可以以某种方式更改目录内容:则在目录中创建新文件或删除现有文件或重命名文件。
  • 执行:如果用户或进程可以访问该目录,即进入该目录(使其成为当前工作目录)

不,目录没有单独的删除权限。

(得到此信息这里

答案3

我不是 Linux 专家,但我还是尝试回答。

每个文件系统条目都有一个关联的用户和组。用户的权限由“用户”标志处理。属于同一组的用户的用户权限由“组”标志处理。所有其他用户均由“其他”标志处理。

“读取”的意思就是它所说的。“执行”意味着您可以启动文件(例如命令)或列出目录。

至于默认权限,我不太清楚。我猜,它可以以某种方式配置,因此每个用户的权限可能都不同。

答案4

如果你想排除所有其他用户,这可能会有点棘手。请查看我的 /etc/passwd 文件中的以下列表(为清楚起见,删除了权限和其他内容):

根守护进程 bin sys 同步游戏 man lp 邮件新闻 uucp 代理 www-data 备份列表 irc gnats libuuid syslog messagebus usbmux haldaemon nobody

a {这是我的,下面是我安装的东西,以上都是系统自带的}

avahi mysql pulse rtkit saned timidity didiwiki

因此,例如,从 lp 或 uucp 中删除权限,您将无法打印。从 bin、sys 或 daemon 中删除权限,可能很多东西都会被破坏。irc、游戏、邮件、新闻和备份可能可以安全删除(除非您通过系统而不是浏览器使用它们)。其余的我留给您的搜索引擎技能。

虽然这是 ubuntu/bodhi linux,其他系统可能有较少的附加功能。然而,所有这些都是为了防止必须以 root 身份运行所有内容。我想可以创建一个系统,其中每个文件只能由一个系统用户(bar root)读取/写入/执行,但我不确定是否尝试过。

执行是运行代码的权限。读取是仅查看(和复制?)的权限。

相关内容