如何检查分区是否安装为“noexec”?

如何检查分区是否安装为“noexec”?

目前,我正在使用grep '\s/location/\s.*noexec' /proc/mounts.
(这是检查这个的正确方法吗?)

答案1

您应该使用 mount(8) 命令,该命令在所有 Linux 和 UNIX 系统上都可用。

如果您mount在没有任何其他参数的情况下运行,它将列出系统上当前安装的所有分区、文件系统类型和任何安装选项,例如noexecrwnosuid

例如:

% mount
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
/dev/sda1 on /boot type ext4 (rw,relatime,data=ordered)
/dev/mapper/basement-root on / type ext4 (rw,relatime,data=ordered)

答案2

假设您在 Linux 上运行它,是的,这没问题。检查noexec逗号之间或列的开头或结尾处的会更可靠一些。

grep -Eq '^[^ ]+ /location [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts

这在 awk 中可能更清楚:

awk -v location="/location" '$2 == location {exit(!($4 ~ /(^|,)noexec($|,)/))} END {exit(2)}'

相关内容