我找不到以下三个问题的答案:
“其他”是谁?如果我们为服务器上的所有服务都指定一个用户,“其他”就不存在了,对吧?例如,如果我们将 Apache 指定为一个用户,并将
/var/www
chowned 设置为apache
,然后输入chmod 700
它应该可以工作,对吧?“执行”和“读取”有什么区别?
全新安装(例如在 Ubuntu 中)后整个系统的默认文件权限是什么?
答案1
“其他”是谁?如果我们为服务器上的所有服务都指定一个用户,“其他”就不存在了,对吧?例如,如果我们将 Apache 指定为一个用户,并将
/var/www
chowned 设置为apache
,然后输入chmod 700
它应该可以工作,对吧?
权限的工作方式如下,简要解释一下:
这第一位数字是文件的实际所有者(使用检查谁拥有文件
ls -l
并使用修改文件chown
)这第二位数字表示文件所属组(尽管文件所有者不一定与文件所有者属于同一组)
这第三位数字还有其他人吗?意思是不是文件所有者和不在该组中的所有人。
因此,如果您将chmod
文件权限设置为 700,并且该文件的所有者为apache
,那么即使是您的“普通”用户也无法读取、写入或执行它。这是非常严格的,仅在极少数情况下才需要 - 例如,当您想要保护 SSH 私钥时,它会获得600
权限。对于 Apache,这甚至可能导致其他问题,除了使用您的普通用户帐户,您将无法再编辑 中的任何文件/var/www
。
因此,一般来说,您不需要删除x00
其他人的读取权限()。
您可以让其apache
拥有该/var/www
目录,但644
可以(对其他人只读)。我经常使用的另一种方法是添加您自己的用户和将 Apache 用户添加到新www-users
组,然后将文件 chmodding 到/var/www
。775
这样,您和 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)读取/写入/执行,但我不确定是否尝试过。
执行是运行代码的权限。读取是仅查看(和复制?)的权限。