パーティションが「noexec」としてマウントされているかどうかを確認するには?

パーティションが「noexec」としてマウントされているかどうかを確認するには?

現在使用していますgrep '\s/location/\s.*noexec' /proc/mounts
(これを確認する方法は正しいですか?)

答え1

すべてのLinuxおよびUNIXシステムで使用可能なmount(8)コマンドを使用する必要があります。

他の引数なしで実行すると、mount現在システムにマウントされているすべてのパーティション、ファイルシステムの種類、およびマウントオプション(たとえばnoexecrwまたは)が一覧表示されます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)}'

関連情報