如何检查分区是否以“ noexec”挂载?


14

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


1
只要您只需要在较新版本的Linux上工作,就可以了。
jordanm 2013年

1
检查问题/
答案

Answers:


13

您应该使用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)

5
在Linux上,我建议/proc/mounts优先使用mount。如果/etc/mtab未更新(​​例如,因为/是只读的),则的输出mount可能不是最新的。另外,对于某些选项(不是noexec),mount会为您提供过滤后的输出,这对于某些版本的内核和安装组合可能会产生误导(例如,与atime相关的选项)。
吉尔(Gilles)“所以

要查找文件或目录挂载的分区-df -P file / goes / here | 尾巴-1 | cut -d''-f 1
brainLoop '19

4

假设您正在Linux上运行它,是的,这很好。检查noexec在逗号之间或在其列的开头或结尾处将更加健壮。

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

这在awk中可能更清楚:

awk -v location="/location" '$2 == location {exit(!($4 ~ /(^|,)noexec($|,)/))} END {exit(2)}'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.