Answers:
谁是“其他”,如果我们为服务器上的所有服务提供用户,则“其他”不存在吗?例如,如果我们将Apache放在一个用户上,并且将
/var/www
chown 设置为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系统中的目录的使用目的。您几乎可以根据您要对目录执行的操作来“猜测”权限应基于的内容。
.php
文件通常是不可执行的。简而言之,当您将浏览器指向例如时,它们仅由Apache读取,而http://example.com/file.php
在Apache能够显示输出之前,必须由您的PHP安装来解释它们,但是Apache会处理这些。从理论上讲,您可以使PHP文件成为可执行文件,并像脚本一样运行它-与处理test
文件一样,但这很少使用。
至少要给您一个关于问题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) | +--------------------------------------------------+
要记住的重要一点是,这不是用户将文件文件读入内存以执行文件,而是内核代表用户执行该文件。
如果要排除所有其他选项,可能会很棘手。从我的/ 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根)读取/写入/执行,但我不确定是否已尝试过。
执行是运行代码的权限。阅读是仅允许查看(和复制?)的权限。