我正在将测试服务器安装到工作中的共享文件系统。这是一个 cifs 安装,因此我查看了此参考页面:https://linux.die.net/man/8/mount.cifs
我想尝试以“尽可能少地了解”的方式进行挂载,以防止人们篡改测试服务器的共享文件系统。因此在文档中我看到:
当服务器不提供所有权信息时,uid=arg 会设置挂载文件系统上所有文件或目录的所有者 uid。可以将其指定为用户名或数字 uid。如果未指定,则默认为 uid 0。mount.cifs 帮助程序必须是 1.10 或更高版本,才能支持以非数字形式指定 uid。有关更多信息,请参阅下面有关文件和目录所有权和权限的部分。
听起来不错。但我的问题是:
- 我如何检查服务器是否提供所有权信息,如果是,我如何找到它实际上是什么?
附加问题:
- 当您可以覆盖权限时,提供权限有什么意义呢
file_mode=0777,dir_mode=0777
?
答案1
您正在查看 CIFS,而不是 NFS。我从未遇到过使用 Linux 工具从 Windows CIFS 共享中提取所有权信息的方法(如果有人知道如何 - 请证明我错了!)。它的工作原理如下:
- 在服务器上,您提供的凭据决定了您的访问权限。您无法使用 来“否决”只读访问权限
file_mode=0777
,在这种情况下,当您尝试写入文件时,访问权限将被拒绝。 - 由于默认 CIFS 共享不导出任何所有权信息,因此
uid
、gid
、umask
、file_mode
选项dir_mode
提供了一种将 Linux 文件安全性置于已安装共享之上的方法。这样,您可以说只有特定的本地 Linux 用户/组才能读取/写入已安装的共享。如果您在安装期间未提供这些选项,则使用默认值(最有可能uid=0, gid=0, umask=0
适用于该共享内的所有目录和文件) - 看看官方文档,可以看到有“unix extensions for CIFS”允许导出uid / gid所有权信息。但我不知道是否有办法确定服务器是否支持这些扩展。