การเมานต์โฟลเดอร์ Windows ด้วยสิทธิ์การเขียนใน Ubuntu


17

เห็นได้ชัดว่าคำตอบอยู่ที่นี่: /superuser/251537/mount-specific-ntfs-directory-on-linuxอย่างไรก็ตามมันไม่ทำงานตามที่คาดไว้

ฉันมีระบบบูทคู่กับ Windows 7 และ Ubuntu 13.04 (อัพเกรดจาก 12.10) และฉันต้องการเข้าถึงโฟลเดอร์ส่วนบุคคลของ Windows 7 สำหรับการอ่านและการเขียน ฉันทำตามคำแนะนำตามลิงก์ที่ระบุและ/etc/fstabไฟล์ของฉันมีลักษณะดังนี้:

/dev/sda1 /media/windows ntfs ro,umask=0222,defaults 0 0
/media/windows/Users/MyUser/    /home/myuser/Windows    ntfs-3g rbind,user,umask=0222,defaults 0 0
/media/windows/Users/OtherUser/ /home/otheruser/Windows ntfs-3g rbind,user,umask=0222,defaults 0 0

มันใช้งานได้ตามที่คาดไว้ พาร์ทิชันของ Windows ของฉันอยู่บน/media/windows/ที่มีสิทธิ์ในการอ่านอย่างเดียวและโฟลเดอร์ส่วนตัวของฉัน Windows ~/Windowsอยู่ใน อย่างไรก็ตามโฟลเดอร์ส่วนบุคคลนี้เป็นแบบอ่านอย่างเดียว

หมายเหตุฉันกำลังกำหนดค่าสิ่งนี้ในสภาพแวดล้อมที่หลากหลายดังนั้นฉันต้องการสิ่งนี้เพื่อใช้งานกับเซสชันของฉันและสำหรับเซสชันของผู้ใช้รายอื่น ฉันต้องการให้ผู้ใช้แต่ละคนสามารถเข้าถึงและสามารถเขียนและอ่านโฟลเดอร์ Windows ของพวกเขาจาก Linux


มีวิธีใดบ้างที่ฉันสามารถเปลี่ยนและทดสอบการกำหนดค่าโดยไม่ต้องรีสตาร์ทระบบทั้งหมด จนถึงตอนนี้ฉันได้ลองเปลี่ยน umask (เป็น 0002) เพิ่มพารามิเตอร์ uid และ gid ฯลฯ โดยไม่มีผลลัพธ์ที่เป็นบวก แต่การเปลี่ยนแปลงแต่ละครั้งต้องปิดระบบ
— Carlos Eugenio Thompson Pinzón

ฉันได้รับรางวัล 100 รางวัลให้กับ totti สำหรับแนวคิดหรือติดตั้งพาร์ทิชันภายใต้/root/(ซึ่งใช้งานได้) โซลูชันปัจจุบันของฉันใช้คำแนะนำที่มีให้โดย falconer, ajThapa, totti และ yilmi ไม่มีคำตอบใดในคำถามเดิม (การป้องกันไม่เพียงพอ) แต่ก็ใช้งานได้ (ผู้ใช้สามารถเข้าถึงข้อมูลของพวกเขาได้) คำตอบที่กล่าวถึงเหล่านี้ทั้งหมดถูกยกระดับขึ้น
— Carlos Eugenio Thompson Pinzón

คำตอบ:


6

คำถามผู้ใช้ขั้นสูงที่ลิงก์ข้างต้นมีไว้สำหรับการติดตั้งพาร์ติชันและไดเรกทอรีย่อยในโหมดอ่านอย่างเดียว คุณต้องการเพียงไดเรกทอรีย่อย (โฟลเดอร์ส่วนบุคคล) ที่จะอ่าน - เขียน

ก่อนอื่นให้ตรวจสอบว่าระบบของคุณสามารถเมาท์พาร์ทิชันntfsในโหมดอ่าน - เขียน

mount -t ntfs-3g  -o rw /dev/sda1 /media/windows

ตอนนี้ทดสอบว่าเมานต์ fs สามารถเขียนได้หรือไม่ ถ้าไม่หยุดที่นี่และถามคำถามอื่นในไซต์นี้

ปัญหาคือไดเรกทอรีย่อยของพาร์ติชันที่เมาท์ RO ไม่สามารถอยู่ใน RW ได้ ดังนั้นทางออกคือเมาท์พาร์ติชัน windows ใน RW ในที่ซ่อนและไม่สามารถเข้าถึงได้ ลองเมาท์บน/ root / winซึ่งไม่สามารถเข้าถึงได้โดยผู้ใช้ที่ไม่ใช่รูท (โดยไม่ต้องsudo)

ในฐานะผู้ใช้รูทให้ทำตาม
ขั้นตอนที่
1 ติดตั้งพาร์ติชัน windows ใน RW

mount -t ntfs-3g -o rw /dev/sda1 /root/win  

2. ผูกมัน

mount --bind /root/win/Users/MyUser/  /home/myuser/Windows  

3. ผูกอินสแตนซ์ของพาร์ติชัน windows แบบอ่านอย่างเดียว

mount --bind /root/win /media/windows  
mount -o remount,ro /media/windows

ตอนนี้ทุกอย่างควรจะตกลง นอกจากนี้คุณสามารถยกเลิกการต่อเชื่อมพาร์ติชัน windows ได้ แต่ฉันเตือนคุณในบางระบบว่าจะทำให้การเชื่อมโยง (@home) เข้าไม่ถึง รหัสคือumount /root/win

หรือคุณสามารถติดตั้งพาร์ติชัน windows ใน RW ที่/ media / windows (แทน / root / win) และผูกติดไว้ที่จุดเมานท์เดียวกัน (/ media / windows) ทันทีเพื่อให้ไม่มีใคร (แม้แต่ root) สามารถเขียนบน พาร์ติชัน (แต่ในโฟลเดอร์ผู้ใช้)


ใช้งานได้หรือไม่ ปัญหาอะไร
— totti

ส่วนแรกการติดตั้ง rw ใน / media / windows ดูเหมือนว่าจะทำงานแม้ว่ามันจะไม่รายงานการอนุญาต w ฉันสามารถสัมผัสและแก้ไขไฟล์ได้
— Carlos Eugenio Thompson Pinzón

เมื่อติดตั้งใหม่ฉันได้รับข้อผิดพลาดต่อไปนี้:Remounting is not supported at present. You have to umount volume and then mount it once again.
— Carlos Eugenio Thompson Pinzón

ฉันคิดว่ามันเป็นปัญหาของระบบของคุณ ฉันได้ทำการทดสอบนี้เรียบร้อยแล้วใน ubuntu 12.10 ฉันไม่เคยเห็นข้อผิดพลาดดังกล่าวแม้แต่ใน Ubuntu 10.04 คุณอาจลองใช้งานในระบบจริง (เพราะคุณดูเหมือนจะอัปเดตระบบปฏิบัติการ)
— totti

ขอบคุณ +1 จากฉันเช่นกันสำหรับโซลูชันที่สวยงามและคำอธิบายที่ชัดเจนมาก ฉันชอบเคล็ดลับในการติดตั้งโฟลเดอร์ผู้ใช้เพื่อให้หนึ่ง (แม้แต่รูท) สามารถเขียนบนอื่นนอกเหนือจากโฟลเดอร์ผู้ใช้ นั่นเป็นทางออกที่ดีที่สุดเนื่องจากไม่มีอินสแตนซ์ของระบบปฏิบัติการที่นอกเหนือจากอินสแตนซ์ของ Windows 8.1 ซึ่งไฟล์ระบบอยู่ในนั้นมีธุรกิจที่เข้าถึงไฟล์ระบบเหล่านั้น อย่างไรก็ตามข้อมูลที่แชร์เป็นเรื่องที่แตกต่าง
— Bill The Ape

5

ฉันสงสัยว่าคำตอบ superuser ที่เชื่อมโยงนั้นเป็นคำตอบที่ใช้ได้ (แม้ว่าฉันไม่สามารถลองได้) จากman mount:

โปรดทราบว่าตัวเลือกการเมานต์ระบบไฟล์จะยังคงเหมือนเดิมในจุดเมานท์ดั้งเดิมและไม่สามารถเปลี่ยนแปลงได้โดยผ่านตัวเลือก -o พร้อมกับ --bind / - rbind ตัวเลือกการเมาท์สามารถเปลี่ยนแปลงได้โดยคำสั่ง remount แยกต่างหากตัวอย่างเช่น:

mount --bind olddir newdir
mount -o remount,ro newdir

ฉันยังสงสัยว่ามันเป็นไปได้ที่จะ --rbindเป็นส่วนหนึ่งของระบบไฟล์ที่มีไดรเวอร์ระบบไฟล์ที่แตกต่างกัน (ntfs vs ntfs-3g)

เมื่อคุณrbindคำสั่ง mount ละเว้นทุกตัวเลือกดังนั้นจะไม่มีอะไรเป็นอ่าน - เขียน และเนื่องจากไดรเวอร์เคอร์เนล ntfs ไม่รองรับการเขียนrwตัวเลือกจะไม่ช่วยสิ่งนั้น ใช้ไดรเวอร์ ntfs-3g

โดยทั่วไปสิ่งที่คุณควรทำคือ (ในเทอร์มินัล):

mount -t ntfs-3g -o ro /dev/sda1 /media/windows
mount --bind /media/windows/Users/MyUser/    /home/myuser/Windows
mount -o remount,rw /home/myuser/Windows

(ฉันคิดว่านั่น--rbindไม่จำเป็นด้วย--bindก็ควรจะเพียงพอ)

และเกี่ยวกับความคิดเห็นภายใต้คำถาม: แน่นอนคุณไม่ต้องรีสตาร์ทระบบเพื่อทดสอบเพียงแค่ใช้mountคำสั่งตามที่ฉันทำข้างต้น (และยกเลิกการต่อเชื่อมกับumountคำสั่ง)

หลังจากที่คุณยืนยันว่าใช้งานได้ตามที่ตั้งใจไว้คุณเพียงแค่ปรับเปลี่ยนการเมานต์และเพิ่มตัวเลือกที่คุณต้องการ: uid, gid, umask ฯลฯ


ฉันสามารถทดสอบการใช้mountงานได้ แต่เมื่อฉันพบการกำหนดค่าการทำงานฉันจะต้องการทำมันโดยอัตโนมัติไม่ว่าจะด้วย/etc/fstabวิธีใดก็ตาม (ด้วยคำถาม Ob: ฉันจะแปลmountคำสั่งเป็นfstabพารามิเตอร์ได้อย่างไร)
— Carlos Eugenio Thompson Pinzón

@ CarlosEugenioThompsonPinzón fstabเป็นเพียงไฟล์ที่มีการแยกวิเคราะห์ตามลำดับโดยmountคำสั่งเมื่อเริ่มต้น แต่ฉันคิดว่า Ubuntu ไม่ได้ใช้mountแต่mountallตอนเริ่มต้นซึ่งอาจไม่เรียกใช้คำสั่งตามลำดับ fstab ใช่แล้วการใส่พารามิเตอร์คำสั่งเหล่านี้ลงไปfstabอาจไม่ทำงาน แต่คุณสามารถใส่คำสั่ง mount ที่ใช้งานได้ในสคริปต์เริ่มต้น (เช่น/etc/rc.local) หรือสร้างงานที่พุ่งพรวดจากสิ่งเหล่านั้น สิ่งที่สำคัญกว่าในกรณีของคุณคือการหารูปแบบการเมานต์ที่ใช้งานได้ทำให้การเริ่มทำงานอัตโนมัติเป็นเรื่องง่าย
— falconer

@ CarlosEugenioThompsonPinzónโอ๊ะฉันพลาดคำถามสุดท้ายจากคุณแสดงความคิดเห็น ดังนั้นคำสั่ง mount แปลเป็น fstab อย่างไร คุณสามารถดูมันได้ในman mountหรือที่นี่ เรื่องสั้น: ฟิลด์แรก: อุปกรณ์ที่จะเมาท์, ฟิลด์ที่สอง: จุดเมานต์, ฟิลด์ที่สาม: fs-type (ไดรเวอร์ fs ที่แม่นยำยิ่งขึ้น), ฟิลด์ที่สี่: ตัวเลือกการเมาท์, ฟิลด์อื่น ๆ ที่มีการนำเข้าน้อยลงในขณะนี้ ดังนั้นในรูปแบบคำสั่ง mount สตริงที่เราเขียน-tไปในฟิลด์ที่สามสตริงที่เราเขียนไว้-oจะเข้าไปในฟิลด์ที่สี่
— falconer

3

ดูว่าสิ่งนี้จะช่วย ...

หากsda1ติดตั้งไว้แล้ว/media/windowsคุณสามารถยกเลิกการต่อเชื่อมกับ:

sudo umount /media/windows

สร้างไดเรกทอรีwindowsใน/media/:

sudo mkdir /media/windows

แก้ไข/etc/fstabดังต่อไปนี้:

/dev/sda1  /media/windows ntfs-3g  rw,nodev,noexec,auto,nouser,async,locale=en_US.utf8,uid=1000,gid=1000,umask=0002 0 0

/media/windows/Users/MyUser/  /home/myuser/Windows  ntfs-3g rbind,user,rw,nodev,noexec,auto,async,uid=1000,gid=1000,umask=0002 0 0

/media/windows/Users/OtherUser/  /home/otheruser/Windows  rbind,user,rw,nodev,noexec,auto,async,uid=1001,gid=1001,umask=0002 0 0

( หมายเหตุ : เปลี่ยนค่าuidและgidสำหรับผู้ใช้ในการรับ uid และ gid ของผู้ใช้คุณสามารถใช้คำสั่งid -u usernameและการตอบid -g usernameสนอง)

ตอนนี้คุณสามารถเมานต์เหล่านี้ได้โดยใช้คำสั่ง:

sudo mount -a

ตอนนี้ไปที่ไดเรกทอรีrebindedและดูว่าคุณสามารถแก้ไขไฟล์ และคุณควรจะทำ


โอเคฉันมีสิทธิ์ rw ใน/media/windows(ไม่ได้รายงานlsแต่ฉันสามารถแก้ไขไฟล์) เป็น root ได้ แต่ในไดเรกทอรีท้องถิ่นที่ฉันต้องใช้sudoเพื่อแก้ไขไฟล์
— Carlos Eugenio Thompson Pinzón

... และตอนนี้ไดเรกทอรีติดตั้งทั้งหมดจะอยู่กับฉัน (ผู้ใช้ 1000) จากการ/media/windows /home/someotheruser/Windows
— Carlos Eugenio Thompson Pinzón

ฉันเดาว่าตอนนี้คุณและผู้ใช้รายอื่นสามารถสร้างและบันทึกผลงานได้ในทันที Mount-points ใน $ HOME ของผู้ใช้ ... หากผู้ใช้ที่เหลือยังไม่สามารถเข้าถึง RW ได้ให้เพิ่มพวกเขาในกลุ่มของคุณ (อาจมี gid 1,000)
— แม่นยำ

ขณะนี้ฉันมีกลุ่มที่แนบผู้ใช้ภายในเครื่องทั้งหมดและฉันให้สิทธิ์การเขียนกับกลุ่มนั้น สิ่งนี้จะแก้ปัญหา“ ผู้ใช้แต่ละคนสามารถเข้าถึงข้อมูลของตนเองได้” แต่พาร์ติชันทั้งหมดและข้อมูลผู้ใช้อื่นไม่ได้รับการปกป้อง
— Carlos Eugenio Thompson Pinzón

3

ทำการทดสอบทั้งหมดก่อนที่จะแก้ไขไฟล์การกำหนดค่า fstab ของคุณ

คุณคงทราบดีว่าระบบไฟล์ ntfs ติดตั้งโดยอัตโนมัติในแบบอ่านอย่างเดียวหากระบบไฟล์ถูกตั้งค่าสถานะว่าสกปรก สิ่งที่คุณต้องทำก่อนลองคำตอบใด ๆ คือติดดิสก์ใน windows และเรียกใช้ chkdsk ก่อนที่จะลองติดตั้งอีกครั้ง

นอกจากนี้หากการติดตั้งใน rw ยังคงล้มเหลวคุณควรลองติดตั้งด้วยตัวเลือกประเภทการยึดต่าง ๆ เช่นsudo mount -t ntfsหรือsudo mount -t ntfs-3g

เมื่อติดตั้ง fs ใน rw แล้วคุณสามารถทำสิ่งต่อไปนี้:

mount --bind /media/MOUNTPOINT/TARGETFOLDER /home/SHAREDDIRECTORY/ mount -o remount,ro /home/SHAREDDIRECTORY/

หรือ

sudo gksu nautilusหรือsudo gksu dolphinเปิดนักสำรวจที่มีสิทธิ์ su


chkdskขอบคุณสำหรับ มีแน่นอนความเสียหายบางส่วนในพาร์ติชัน NTFS sudoและตอนนี้ฉันสามารถเขียนไปติดตั้งไดรฟ์
— Carlos Eugenio Thompson Pinzón

2

ทำไมไม่ลองเมาท์ด้วยคุณสมบัติการอ่านและเขียน: rw ?

/ dev / sda1 / สื่อ / windows ntfs rw , umask = 0222, ค่าเริ่มต้น 0 0


ฉันจะตรวจสอบ แต่ฉันต้องการมีทั้งพาร์ติชันแบบอ่านอย่างเดียวและมีเฉพาะโฟลเดอร์บางส่วนเป็นอ่าน - เขียน
— Carlos Eugenio Thompson Pinzón

ใช้งานไม่ได้ ทั้งพาร์ติชันและโฟลเดอร์ยังคงเป็นแบบอ่านอย่างเดียว ข้อแตกต่างคือ chmod และ chown จะไม่ล้มเหลวในการรายงานข้อผิดพลาดแบบอ่านอย่างเดียว: พวกเขาไม่ทำงาน
— Carlos Eugenio Thompson Pinzón

2

อย่างไรก็ตามฉันไม่แน่ใจนักคุณสามารถลองสิ่งนี้ได้ไหม หลังจากติดตั้งไดรฟ์แล้วให้ใช้คำสั่งต่อไปนี้บนเทอร์มินัล

sudo gksu nautilus

ป้อนรหัสผ่านผู้ดูแลระบบของคุณและในหน้าต่างกราฟิกที่เปิดขึ้นคุณควรจะสามารถคลิกที่ไดรฟ์และเปลี่ยนสิทธิ์การอ่าน / เขียน

แจ้งให้เราทราบหากงานนี้ มีความช่วยเหลือสำหรับการใช้ nautilus พร้อมส่วนต่อประสานกราฟิกกับสิทธิ์พิเศษรูท


นี้จะช่วยให้การเข้าถึงไฟล์และพวกเขาสามารถคัดลอกออกเช่นกัน แต่สิทธิ์อ่านอย่างเดียวอาจไม่สามารถเปลี่ยนแปลงได้เนื่องจากระบบไฟล์ที่ไม่ใช่ยูนิกซ์ติดตั้งเป็นแบบอ่านอย่างเดียว ...
— Wilf

1

ฉันจะแนะนำให้ใช้ sudo chmod.666 ~ / Windows

https://help.ubuntu.com/community/FilePermissions


1
ฉันไม่สามารถเปลี่ยนการอนุญาตหรือเจ้าของ (แม้จะมีsudo) มันปฏิเสธคำสั่งที่บอกว่าระบบเป็นแบบอ่านอย่างเดียว ไม่แม้แต่ใน/media/windows/พาร์ทิชันทั้งหมด (ซึ่งจะไม่เป็นพฤติกรรมที่คาดหวัง)
— Carlos Eugenio Thompson Pinzón

ฉันอาจผิด แต่บางครั้ง sudo ไม่มีสิทธิ์ที่ root จะมี ลองใช้ sudo su แล้ว chmod
— virtualxtc

0

วิธีที่ง่ายที่สุดในการเมานต์ Windows แบบอ่าน - เขียนคือการรีบูทใหม่หรือปิดเครื่องโดยสมบูรณ์ พาร์ติชัน NTFS จะไฮเบอร์เนตเมื่อใช้ "fast shut down" หลักการนี้มีรายละเอียดมากขึ้นในลิงค์นี้

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