วิธีการตรวจสอบว่าพาร์ทิชันถูกเมาท์เป็น 'noexec' หรือไม่


14

grep '\s/location/\s.*noexec' /proc/mountsปัจจุบันผมใช้
(นั่นเป็นวิธีที่ถูกต้องในการตรวจสอบสิ่งนี้หรือไม่?)


1
ไม่เป็นไรตราบใดที่คุณต้องทำงานกับ Linux เวอร์ชันใหม่กว่าเท่านั้น
จอร์แดน

1
ตรวจสอบนี้ Q /
Dawud

คำตอบ:


13

คุณควรใช้คำสั่ง mount (8) ซึ่งมีให้บริการในทุกระบบ Linux และ UNIX

หากคุณทำงานmountโดยไม่ขัดแย้งใด ๆ เพิ่มเติมก็จะแสดงรายการทั้งหมดในขณะนี้ติดตั้งพาร์ทิชันในระบบของคุณชนิดของระบบไฟล์และตัวเลือกใด ๆ ติดเช่นnoexec, หรือrwnosuid

เช่น:

% 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 / go / here | หาง -1 | cut -d '' -f 1
brainLoop

4

สมมติว่าคุณกำลังใช้งานบน Linux ใช่ก็ไม่เป็นไร มันจะมีประสิทธิภาพมากขึ้นเล็กน้อยในการตรวจสอบว่าnoexecอยู่ระหว่างเครื่องหมายจุลภาคหรือที่จุดเริ่มต้นหรือจุดสิ้นสุดของคอลัมน์

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

นี่อาจชัดเจนกว่าใน awk:

awk -v location="/location" '$2 == location {exit(!($4 ~ /(^|,)noexec($|,)/))} END {exit(2)}'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.