การตั้งค่าเริ่มต้นเมานท์สำหรับ mount / fstab คืออะไร?


18

ตัวเลือกการติดตั้งเริ่มต้นสำหรับพาร์ติชั่นที่ไม่ใช่รูทคืออะไร?

รายการคนสำหรับภูเขาพูดว่า ...

defaults - use default options: rw, suid, dev, exec, auto, nouser, and async.

... เพื่อที่อาจเป็นสิ่งที่เราคาดหวังที่จะเห็น แต่ถ้าฉันไม่มีอะไรหายไปนั่นก็ไม่ใช่สิ่งที่เกิดขึ้น

ฉันมีพาร์ติชัน ext3 ชื่อ "NewHome20G" ซึ่งถูกมองว่าเป็น / dev / sdc6 โดยระบบ เราเห็นได้จาก ...

root@john-pc1204:~# blkid | grep NewHome20G
/dev/sdc6: LABEL="NewHome20G" UUID="d024bad5-906c-46c0-b7d4-812daf2c9628" TYPE="ext3" 

ฉันมีรายการใน fstab ดังนี้ ...

root@john-pc1204:~# cat /etc/fstab | grep NewHome
LABEL=NewHome20G        /media/NewHome20G        ext3         rw,nosuid,nodev,exec,users     0  2

หมายเหตุการตั้งค่าตัวเลือกที่ระบุไว้ในบรรทัด fstab นั้น

ตอนนี้ฉันมาดูวิธีการติดตั้งพาร์ติชั่นจริง ๆ หลังจากบู๊ต ...

root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,noexec,nosuid,nodev) [NewHome20G]

... ดังนั้นเมื่อระบบไฟล์ได้รับการเมานท์ตัวเลือก exec และผู้ใช้ที่ฉันระบุดูเหมือนจะถูกละเว้น

เพียงเพื่อให้แน่ใจว่าฉันเลิกเมานท์ sdc6 แล้วติดตั้งใหม่และดูตัวเลือกการเมานท์อีกครั้ง ...

root@john-pc1204:~# umount /dev/sdc6
root@john-pc1204:~# mount /dev/sdc6
root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,noexec,nosuid,nodev) [NewHome20G]

.... ผลลัพธ์เดียวกัน

ตอนนี้ฉันยกเลิกการต่อเชื่อมพาร์ติชั่นอีกครั้งให้กำหนดมันใหม่โดยระบุตัวเลือก exec และดูผลลัพธ์

root@john-pc1204:~# umount /dev/sdc6
root@john-pc1204:~# mount /dev/sdc6 -o exec
root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,nosuid,nodev) [NewHome20G]

... และที่นี่ตัวเลือก exec มีผลในที่สุดและการตั้งค่า noexec ได้หายไป

เพื่อความสนใจฉันจะติดตั้งพาร์ติชันใหม่โดยใช้ตัวเลือกค่าเริ่มต้น

root@john-pc1204:~# umount /dev/sdc6
root@john-pc1204:~# mount /dev/sdc6 -o defaults
root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,noexec,nosuid,nodev) [NewHome20G]

noexec กลับมาแล้วดังนั้นมันจึงดูเหมือน rw, noexec, nosuid, nodev เป็นตัวเลือกเริ่มต้นซึ่งไม่ใช่สิ่งที่ผู้ชายพูด

เหตุใดเรื่องนี้

ฉันมีโฟลเดอร์ที่เต็มไปด้วยสคริปต์ที่มีประโยชน์ที่เก็บไว้ในดิสก์ข้อมูล เนื่องจากดิสก์นั้นติดตั้ง noexec สคริปต์เหล่านั้นจะไม่ทำงานแม้ว่าพวกเขาทั้งหมดจะถูกตั้งค่าด้วย chmod 777 ฉันสามารถแก้ไขปัญหานี้ได้หลายวิธี แต่ก็น่าผิดหวังที่รายการมนุษย์ดูเหมือนจะผิด

ฉันพลาดอะไรบางอย่างที่นี่หรือมีตัวเลือกเริ่มต้นใน Ubuntu เปลี่ยนจากสิ่งที่พวกเขาเป็นรุ่นที่ผ่านมา?

คำตอบ:


18

คู่มือการใช้งานที่ถูกต้อง ปัญหาของคุณคือบางทีคุณอาจไม่ได้คำนึงถึง 3 รายละเอียดที่สำคัญ:

  • users(และuser) หมายถึงตัวเลือกnoexec, nosuidและ nodev

  • เว้นแต่จะถูกแทนที่ด้วยตัวเลือกที่ตามมา

  • เรื่องการสั่งซื้อตัวเลือก;)

ดังนั้นเมื่อคุณใช้rw,nosuid,nodev,exec,usersในfstabตัวเลือกสุดท้ายของusersคุณจะตั้งค่าnoexec,nosuid,nodevดังนั้นจึงปิดการใช้งานของคุณexec(และทำให้คุณnosuid,nodevซ้ำซ้อน)

rw,noexec,nosuid,nodevผลที่ตามมาเป็นไปตามคาดคือ

และไม่usersไม่ถูกละเว้นมันก็มักจะไม่แสดงในmountรายการผลลัพธ์ แต่ผู้ใช้สามารถยกเลิกการต่อเชื่อมและติดตั้งอีกครั้ง ลองมัน!

rodrigo@desktop ~ $ mount /dev/sda6                     # ordinary user
rodrigo@desktop ~ $ mount | grep /dev/sda6
/dev/sda6 on /mnt/mint10 type ext4 (rw,noexec,nosuid,nodev)
rodrigo@desktop ~ $ /mnt/mint10/bin/echo it works       # noexec will deny this
bash: /mnt/mint10/bin/echo: Permission denied

mountจะแสดงเฉพาะบางสิ่งที่เกี่ยวข้องกับผู้ใช้หากมีการใช้user( ไม่ใช่ users ) และผู้ใช้ทั่วไปที่ไม่ใช่รูทจะเมานต์ดังนี้:

rodrigo@desktop ~ $ mount /dev/sda6         # ordinary user
rodrigo@desktop ~ $ mount | grep /dev/sda6  # it will list current "owner"
/dev/sda6 on /mnt/mint10 type ext4 (rw,noexec,nosuid,nodev,user=rodrigo)
rodrigo@desktop ~ $ umount /dev/sda6
rodrigo@desktop ~ $ sudo mount /dev/sda6
rodrigo@desktop ~ $ mount | grep /dev/sda6  # since owner=root, it won't show
/dev/sda6 on /mnt/mint10 type ext4 (rw,noexec,nosuid,nodev)
rodrigo@desktop ~ $ umount /dev/sda6        # only mounter can unmount
umount: only root can unmount LABEL=MINT10 from /mnt/mint10

นอกจากนี้โปรดสังเกตว่าเมื่อใช้งานuserโดยไม่มีnoautoพาร์ติชันจะถูกเมาต์อัตโนมัติ (โดยรูท) ในการบู๊ต ดังนั้นจนกว่าจะถอนการติดตั้งมันจะไม่มีใครสามารถถอนการติดตั้งหรือ (ติดตั้งใหม่) ได้

ที่กล่าวว่าฉันคิดว่าคุณหาวิธีแก้ปัญหาของคุณแล้ว: เพียงแค่เปลี่ยนลำดับตัวเลือกของคุณและทุกอย่างจะทำงานได้ดี:

LABEL=NewHome20G  /media/NewHome20G  ext3  users,exec  0  2

แจ้งให้ทราบว่าexecเป็นหลัง usersและก็rw,nosuid,nodevไม่จำเป็น rwเป็นค่าเริ่มต้นแล้วและอื่น ๆ จะถูกเปิดโดยอัตโนมัติusers

และผลลัพธ์คือ:

rodrigo@desktop ~ $ mount /dev/sda6                  # user mount
rodrigo@desktop ~ $ mount | grep /dev/sda6
/dev/sda6 on /mnt/mint10 type ext4 (rw,nosuid,nodev)
rodrigo@desktop ~ $ /mnt/mint10/bin/echo it works    # exec works
it works
rodrigo@desktop ~ $ sudo umount /dev/sda6            # root unmount
rodrigo@desktop ~ $ sudo mount /dev/sda6             # root mount
rodrigo@desktop ~ $ mount | grep /dev/sda6
/dev/sda6 on /mnt/mint10 type ext4 (rw,nosuid,nodev)
rodrigo@desktop ~ $ umount /dev/sda6                 # user unmount
rodrigo@desktop ~ $

ความหมายของผู้ใช้ใด ๆ รูทหรือไม่ใช่รูทสามารถเมาต์และเลิกเมานต์ได้ และ executables ก็ทำงานเช่นกัน :)


คุณหมายถึง "... เมื่อใช้userโดยไม่มีautoพาร์ติชันจะถูกเมาท์อัตโนมัติ ... " หรือไม่
Andreas J.

@AndreasJ noautoไม่ฉันหมายถึง autoเป็นพฤติกรรมเริ่มต้นอยู่แล้วดังนั้นโดยไม่noautoเหมือนกับauto: พาร์ติชันจะถูกเมาต์อัตโนมัติ
MestreLion

ขออภัยฉันอ่านประโยคของคุณผิด มันทำให้รู้สึกสมบูรณ์แบบ!
Andreas J.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.