我试图了解安装时的 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
),该文件系统将只包含一个目录。