![在 RHEL 上挂载目录时 NOEXEC 标志是什么意思?](https://linux22.com/image/1401135/%E5%9C%A8%20RHEL%20%E4%B8%8A%E6%8C%82%E8%BD%BD%E7%9B%AE%E5%BD%95%E6%97%B6%20NOEXEC%20%E6%A0%87%E5%BF%97%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%EF%BC%9F.png)
我试图了解安装时的 NOEXEC 标志。
我在别人的机器上遇到了 /tmp 目录的执行问题,我无法访问,因为 /tmp 目录安装在除“/”之外的其他驱动器上,并且存在 NOEXEC。我想尝试在我的计算机上重现这种情况,但我没有第二个硬盘驱动器。我尝试执行以下命令:
mount --bind /test1 /test2
然后我删除了该bind
标志并将其添加NOEXEC
到 /etc/fstab 中。然后,我在 /test2 中创建了一个名为 test.sh 的文件,它只显示“hello world”。我尝试运行它,它显示“权限被拒绝”。然后我运行chmod 777 test.sh
并能够正常执行该文件。我认为 NOEXEC 标志不应该允许我执行任何操作?
mount --bind /test1 /test2
这和从完全不同的物理驱动器安装不一样吗?就像 /test1 和 /test2 位于不同的驱动器上一样?
答案1
命令中的选项“NOEXEC”标志mount
不允许在已安装的文件系统中执行可执行二进制文件1。但是,当将脚本(以 she-bang 行开头的文本文件;即以 开头的行#!
)提供给某些 shell(bash)时,它将运行该行上命名的可执行文件(例如 )/usr/bin/perl
并将 shell 脚本的路径作为第一个参数传递。实际解释器可能不在该安装点上。__________ 1该命令通常安装
mount
文件系统. (可以说,环回或bind
挂载可能被视为这一普遍性的例外。)在某些情况下(例如/tmp
),该文件系统将只包含一个目录。