Làm cách nào để kiểm tra xem phân vùng có được gắn kết là 'noexec' không?


14

Hiện tại, tôi đang sử dụng grep '\s/location/\s.*noexec' /proc/mounts.
(Đó có phải là một cách đúng đắn để kiểm tra điều này?)


1
Điều đó tốt miễn là bạn chỉ cần làm việc trên các phiên bản Linux mới hơn.
jordanm

1
Kiểm tra này Q / A
Dawud

Câu trả lời:


13

Bạn nên sử dụng lệnh mount (8), có sẵn trên tất cả các hệ thống Linux và UNIX.

Nếu bạn chạy mountmà không cần bất kỳ đối số bổ sung, nó sẽ liệt kê tất cả các hiện gắn kết các phân vùng trên hệ thống của bạn, loại hệ thống tập tin và bất kỳ tùy chọn, chẳng hạn như gắn kết noexec, rwhoặc nosuid.

Ví dụ:

% 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
Trên Linux, tôi khuyên bạn nên sử dụng /proc/mountsưu tiên mount. Nếu /etc/mtabkhông được cập nhật (ví dụ vì /chỉ đọc), đầu ra của mountcó thể không được cập nhật. Ngoài ra, đối với một số tùy chọn (không noexec), mountcung cấp cho bạn đầu ra được lọc có thể gây hiểu nhầm cho một số kết hợp phiên bản của kernel và mount (ví dụ: với các tùy chọn liên quan đến atime).
Gilles 'SO- ngừng trở nên xấu xa'

Để tìm phân vùng, tập tin hoặc thư mục gắn kết trên - tập tin df -P / đi / đây | đuôi -1 | cut -d '' -f 1
brainLoop

4

Giả sử rằng bạn đang chạy cái này trên Linux, vâng, điều này tốt. Sẽ mạnh mẽ hơn một chút để kiểm tra xem noexecgiữa dấu phẩy hay ở đầu hoặc cuối cột.

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

Điều này có thể rõ ràng hơn trong awk:

awk -v location="/location" '$2 == location {exit(!($4 ~ /(^|,)noexec($|,)/))} END {exit(2)}'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.