谁是Linux许可中的“其他”,“执行”是什么意思?


13

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

  • 谁是“其他”,如果我们为服务器上的所有服务提供用户,则“其他”不存在吗?例如,如果我们将Apache放在一个用户上,并且将/var/wwwchown 设置为apache,然后输入chmod 700它应该起作用,对吗?

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

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

Answers:


16

谁是“其他”,如果我们为服务器上的所有服务提供用户,则“其他”不存在吗?例如,如果我们将Apache放在一个用户上,并且将/var/wwwchown 设置为apache,然后输入chmod 700它应该起作用,对吗?

权限的工作方式,以非常简短的方式进行了说明:

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

  • 第二个数字是该组的文件的(尽管一个文件的所有者不一定必须在拥有该文件相同的基团)

  • 第三个数字是其他任何人,这意味着不是不能在该组的文件所有者和每个人。

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

因此,通常来说,您不需要删除其他用户的读取权限(x00)。

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


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

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

echo "I am executable"

保存文件。现在,在您的shell中,尝试输入./test。您将收到“ -bash:./test:权限被拒绝 ”错误。这是因为默认情况下,新创建的文件不具有执行权限。如果添加执行权限,它将起作用。

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

现在,这只是一个测试脚本,但是通常,所有二进制文件(如编译的程序)也需要执行权限集,因此您可以实际运行它们并对其执行某些操作,而不仅仅是读取。

例如,这些是大多数在中找到的系统程序/bin。运行ls -l /bin以检查其权限。如您所见,它们是的所有者root,您无法更改它们,但是您始终可以执行它们。

因此,这也有点安全性,因为您可以限制某些用户执行某些脚本和二进制文件。

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


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

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

其他目录(例如您的主文件夹)显然属于您的用户。如果计算机是由多个人共享的,则拒绝对计算机上其他用户的读取权限可能很有意义-毕竟,您不希望公开您的私人物品。

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

文件系统层次标准规定了在Linux系统中的目录的使用目的。您几乎可以根据您要对目录执行的操作来“猜测”权限应基于的内容。


谢谢你,真的给我很大帮助!我再也谢谢你了,还有一个问题,“文件”和“可执行文件”之间的界线在哪里?例如,Apache执行或读取了PHP文件?再次感谢!
randomKek 2012年

.php文件通常是不可执行的。简而言之,当您将浏览器指向例如时,它们仅由Apache读取,而http://example.com/file.php在Apache能够显示输出之前,必须由您的PHP安装来解释它们,但是Apache会处理这些。从理论上讲,您可以使PHP文件成为可执行文件,并像脚本一样运行它-与处理test文件一样,但这很少使用。
slhck

5

只需添加执行权限对目录具有不同的有效含义:

对于文件

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

对于文件夹

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

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

(得到这个信息在这里。)


0

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

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

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

关于默认权限,我不确定。我猜,它可以以某种方式进行配置,因此对于每个用户而言可能有所不同。


0

至少要给您一个关于问题2的体面回答,以下是一个汇总表,显示您可以/不能做的事情:

+--------------------------------------------------+
| Execute Yes (./file.sh) | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute Yes (./file.sh) | Read No (ERROR)        |
|--------------------------------------------------|
| Execute No (ERROR)      | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute No (ERROR)      | Read No (ERROR)        |
+--------------------------------------------------+

要记住的重要一点是,这不是用户将文件文件读入内存以执行文件,而是内核代表用户执行该文件。


0

如果要排除所有其他选项,可能会很棘手。从我的/ etc / passwd文件中查看以下列表(权限和为了清晰起见未删除的内容):

root守护程序bin sys同步游戏man lp邮件新闻uucp代理www数据备份列表irc gnats libuuid syslog messagebus usbmux haldaemon没有人

{这是我,下面是我安装的东西,首先是系统附带的}

avahi mysql脉搏rtkit胆怯的didiwiki

因此,例如,删除lp或uucp的权限,您将中断打印。从bin,sys或守护程序中删除权限,可能很多东西都会中断。irc,游戏,邮件,新闻和备份都可以安全地删除(除非您通过系统而不是浏览器使用这些文件)。其余的我留给您的搜索引擎技能。

但是,这是ubuntu / bodhi linux,其他系统可能没有这么多的功能。但是,所有其他这些都是为了避免必须以root用户身份运行所有内容。我想象有可能创建一个系统,其中每个文件只能由一个系统用户(bar根)读取/写入/执行,但我不确定是否已尝试过。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.