Fstab exec noexec 参数如何影响 samba 共享

Fstab exec noexec 参数如何影响 samba 共享

我已经安装了多个数据驱动器并使用了noexec参数。认为既然这只是我不需要的数据exec。现在我遇到了一些权限问题,希望排除此原因并更好地理解该选项。

exec参数in是否/etc/fstab与赋予挂载系统中所有目录和文件执行权限具有相同的效果?

它如何影响.exe通过 samba 共享或其他网络协议访问的 Windows 可执行文件 ( )?

已安装的驱动器将与aufs或合并在一起mhddfs,并通过 中的中央安装点进行访问/mnt/virtual。然后将通过网络(现在是 samba)访问它。也会有一些本地访问(xbmc)。我不确定是否应该向其提供文件的直接链接或 samba 链接?

在这种情况下,最佳实践是什么?

答案1

浏览手册页

如果您查看其手册页,mount.cifs其中将用于安装其中列出的任何共享,/etc/fstab则有一条注释提到noexec

摘录 - mount.cifs 手册页

该命令只能由 root 使用,除非安装了 setuid,在这种情况下,启用了 noeexec 和 nosuid 安装标志。当作为 setuid 程序安装时,该程序遵循 mount 程序为用户挂载规定的约定,并附加限制,即用户必须能够在挂载之前 chdir() 进入挂载点,以便能够挂载到它。

一些 samba 客户端工具(例如 smbclient(8))遵循 smb.conf 中存在的客户端配置参数。与那些客户端工具不同,mount.cifs 完全忽略 smb.conf。

鉴于此,如果它包含在任何安装尝试中,我希望它能够执行 exec/noexec 选项。另外查看mount.cifs用法可以了解如何使用该选项。

摘录 - mount.cifs 用法
Less commonly used options:
    credentials=<filename>,guest,perm,noperm,setuids,nosetuids,rw,ro,
    sep=<char>,iocharset=<codepage>,suid,nosuid,exec,noexec,serverino,
    mapchars,nomapchars,nolock,servernetbiosname=<SRV_RFC1001NAME>
    directio,nounix,cifsacl,sec=<authentication mechanism>,sign,fsc

查看fstab手册页解释了 exec/noexec 的预期用途,但没有指定它是适用于所有可执行文件还是仅适用于 Unix 可执行文件。

摘自 fstab 手册页

执行/不执行

exec 允许您执行该分区上的二进制文件,而 noexec 不允许您这样做。 noexec 对于不包含二进制文件(如 /var)的分区可能很有用,或者包含您不想在系统上执行的二进制文件,或者甚至无法在系统上执行的二进制文件(例如 Windows 分区)。

exec/noexec 是否使所有内容都可执行?

不, exec/noexec 属性只是简单地控制通过其权限位标记为可执行的事物的允许,它不会直接影响权限。

Windows 的二进制文件怎么样?

但是,exec/noexec 设置无法控制 Windows 可执行文件,只能控制也可以驻留在这些共享上的 Unix 可执行文件。

另外,我什至不确定如果您通过挂载 CIFS/Samba 共享/etc/fstab,这些将如何发挥作用,Windows 操作系统何时会在这种情况下混合使用。 Windows 会/可以直接挂载此共享,甚至不需要通过 Linux。

测试一下

来自 Unix 的示例

mount.cifs您可以像这样直接通过命令行进行测试。假设我们在 CIFS/Samba 共享上有一个文件如下:

$ cat cmd.bash 
#!/bin/bash

echo "hi"

$ chmod +x cmd.bash

现在我们像这样安装它,并尝试运行脚本cmd.bash

$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser,noexec

$ cd /path/to/cifsmnt
$ ./cmd.bash
bash: ./cmd.bash: Permission denied

如果我们省略该选项,noexec

$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser

$ cd /path/to/cifsmnt
$ ./cmd.bash
hi
从 Windows

我在这里能想到的唯一场景是,如果我使用 Virtualbox 之类的东西,并且我在 Windows VM 可以使用的目录内安装了 CIFS/Samba 共享。

当我对此进行测试时,我成功地能够.exe通过此安装设置运行文件。

笔记:我使用\\vboxsrvVirtualbox 中的共享机制来挂载系统本地的主目录/home/saml。然后我运行此命令,将 CIFS/Samba 共享安装为/home/saml.

$ mkdir /home/saml/cifsmnt
$ mount //server/cifsshare cifsmount -o user=joeuser,noexec

结论

执行上述操作似乎表明 exec/noexec 没有限制 Windows 对文件的访问。

相关内容