การเมานต์โฟลเดอร์ 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.