目前,我正在使用grep '\s/location/\s.*noexec' /proc/mounts
.
(这是检查这个的正确方法吗?)
答案1
您应该使用 mount(8) 命令,该命令在所有 Linux 和 UNIX 系统上都可用。
如果您mount
在没有任何其他参数的情况下运行,它将列出系统上当前安装的所有分区、文件系统类型和任何安装选项,例如noexec
、rw
或nosuid
。
例如:
% 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)}'