Linux 中的文件权限是什么,我如何确保我的文件权限是安全的?Linux 中的文件权限是什么,我如何确保我的文件权限是安全的?Linux 中的文件权限是什么,我如何确保我的文件权限是安全的?Linux 中的文件权限是什么,我如何确保我的文件权限是安全的?
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

Linux 中的文件权限是什么,我如何确保我的文件权限是安全的?

在 Linux 中,文件权限决定了文件所有者和其他人的特权级别。确保任何面向 Web 的文件都正确设置了权限非常重要,这样受感染的进程就无法写入不应写入的位置。

什么是文件权限?

文件权限跟踪三个不同组的权限。每个组由三个位表示:

  • r:“读取”权限允许进程将该文件的内容读入内存。
  • w:“写入”权限授予进程覆盖磁盘上存储该文件的物理位置的权限。
  • x:“执行”权限适用于程序并允许执行该文件。

在终端中,权限显示如下:

第一个“d”表示文件是否是目录。第一组三个是文件所有者。在这种情况下,文件所有者具有完整的读取、写入和执行访问权限。下一组三个是“组所有者”,表示文件所属组的访问权限,在本例中为只读。下一组是其他人,这是只读的。

通常,打开“所有人”权限的文件不是很安全。您需要确保最后一组设置为只读或大多数文件无访问权限。

在幕后,这些以二进制形式存储,每个权限代表一个位。例如,rw- 在二进制中是 110,在十进制中是 6。所以,权限字符串:

rwxrw-r--

…可以存储为“764”。文件权限通常以这种方式提及; “777”表示完全访问,“700”是私有的,“644”是只读的。从技术上讲,这称为八进制,而不是十进制,因为每个数字有八个可能的值。

对于目录,权限使用相同的字符,但有一点不同:

  • r: 列表权限。允许打开目录,并允许使用 ls。需要设置 x 属性。
  • w: 写权限。允许创建新文件、删除文件和重命名文件。不会阻止更改目录中现有的可写文件的内容。
  • x:可进入性。允许使用 cd。这在系统范围内得到尊重,并且会阻止文件夹在 GUI 文件资源管理器中打开。

在某些系统上,尤其是 macOS,文件权限字符串后可能有一个“@”。这意味着该文件具有扩展属性,您可以使用 ls -l@ 检查这些属性。例如,com.apple.quarantine 属性被分配给尚未打开的可执行文件,这样 Gatekeeper 就可以阻止您双击它,强制您右键单击 > 打开,然后如果您真的确定要打开它,则不必要地提示您。

什么是文件所有者和组?

文件所有者只是一个特定的用户,但 Unix 系统中的用户不像在 Windows 中那样工作。 Unix 可以为单独的进程设置不同的用户,例如 mysql 和 nginx。这可以使权限非常详细;例如,在 mysql 用户下运行的 MySQL 实例可以访问其自己的数据库,但 nginx 用户不能。

用户组以类似的方式工作,但支持具有相同权限的多个用户。可以在组中添加和删除用户,并且他们对于设置文件权限是可选的。

如何检查目录的文件权限

您可以通过在终端中运行 ls -l 查看文件和目录权限。文件权限显示在最右侧:

如果您想显示特定文件或目录的文件权限,您需要将 ls 输出通过管道传输到 grep:

ls -la | grep filename

请注意,当使用 -a 标志时,当前文件夹和父文件夹的权限显示为 . 和 ..。但是,即使这样也只显示两个级别的权限。要显示每个父文件夹的权限,您需要使用 namei 命令:

namei -l `pwd`

此命令可能不会安装在每个 Linux 发行版上。在 macOS 上,你必须从 brew 安装它。

要在这些文件夹中搜索可能具有错误权限的单个文件,您可以使用带有 -perm 标志的 find 命令:

find ~ -type f -perm 777

这会递归搜索,如果您在根目录上运行它可能需要一些时间。

如何更改文件权限和所有权

使用 chmod 命令更改文件权限很简单:

chmod 700 filename

您还可以在不指定完整权限字符串的情况下添加权限。这是一条捷径,但可以节省一些时间。例如,如果您无法打开脚本文件,您可以为所有者添加执行权限:

chmod u+x filename

这为当前所有者(u,表示“用户”)添加了执行 (x) 权限。

更改所有者的工作方式与 chown 命令类似:

chown owner:group filename

“:group” 是可选的。 chmod 和 chown 都可以在目录上递归运行,以更改这些目录中所有内容的文件权限。为此,请使用大写的 -R 标志:

chmod 700 -R directory

您还可以使用 chmod 作为 find 的 -exec 选项,这样您就可以更改整个系统的文件权限。例如,此命令将查找具有开放写入权限的文件,并将它们设置为只读:

find / -type f -perm 777 -print -exec chmod 744 {} ;
©2015-2025 艾丽卡 support@alaica.com