Як перевірити, чи встановлений розділ як "noexec"?


14

В даний час я використовую grep '\s/location/\s.*noexec' /proc/mounts.
(Це правильний спосіб перевірити це?)


1
Це добре, поки вам потрібно працювати лише над новішими версіями Linux.
Йорданм

1
Перевірте це питання
дауд

Відповіді:


13

Вам слід скористатися командою 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)

5
В Linux я рекомендую використовувати /proc/mountsперевагу mount. Якщо /etc/mtabне оновлюється (наприклад, /лише для читання), вихід mountможе не бути оновленим . Крім того, для деяких опцій (не noexec) mountдає вам відфільтрований вихід, який може ввести в оману для деяких комбінацій версій ядра та монтажу (наприклад, з параметрами, пов'язаними з atime).
Жил "ТАК - перестань бути злим"

Щоб знайти розділ, на якому кріпиться файл або каталог - df -P file / go / here | хвіст -1 | cut -d '' -f 1
brainLoop

4

Якщо припустити, що ви працюєте в Linux, так, це добре. Було б трохи надійніше перевірити, що noexecзнаходиться між комами або на початку чи в кінці його стовпця.

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

Це може бути зрозумілішим у див:

awk -v location="/location" '$2 == location {exit(!($4 ~ /(^|,)noexec($|,)/))} END {exit(2)}'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.