Gắn kết thư mục Windows với quyền viết trong Ubuntu


17

Rõ ràng câu trả lời là ở đây: /superuser/251537/mount-specific-ntfs-directory-on-linux tuy nhiên nó không hoạt động như mong đợi.

Tôi có một hệ thống khởi động kép với Windows 7 và Ubuntu 13.04 (được nâng cấp từ 12.10) và tôi muốn truy cập các thư mục cá nhân Windows 7 của mình để đọc và viết. Tôi đã làm theo hướng dẫn theo liên kết đã cho và /etc/fstabtệp của tôi trông như thế này:

/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

Nó gần như hoạt động như mong đợi. Phân vùng Windows của tôi được bật /media/windows/với quyền chỉ đọc và thư mục cá nhân Windows của tôi nằm trong ~/Windows. Tuy nhiên thư mục cá nhân này cũng chỉ đọc.

Lưu ý Tôi đang định cấu hình này trong môi trường đa luồng, vì vậy tôi cần nó để hoạt động cho phiên của tôi và cho các phiên của người dùng khác. Tôi cần mỗi người dùng có thể truy cập và có thể viết và đọc các thư mục Windows của họ từ Linux.


Có cách nào tôi có thể thay đổi và kiểm tra cấu hình mà không phải khởi động lại toàn bộ hệ thống. Cho đến nay tôi đã thử thay đổi umask (thành 0002), thêm các tham số uid và gid, v.v. không có kết quả tích cực, nhưng mỗi thay đổi đều yêu cầu tắt hệ thống.
Carlos Eugenio Thompson Pinzón

Tôi đã trao 100 tiền thưởng cho totti cho ý tưởng hoặc gắn phân vùng bên dưới /root/(đang hoạt động). Giải pháp hiện tại của tôi sử dụng các gợi ý được cung cấp bởi falconer, ajThapa, totti và yilmi, không ai trong số họ làm việc như mong đợi trong câu hỏi ban đầu (bảo vệ là không đủ), nhưng nó vẫn hoạt động (người dùng có quyền truy cập vào dữ liệu của họ). Tất cả những câu trả lời được đề cập đã được nâng cao.
Carlos Eugenio Thompson Pinzón

Câu trả lời:


6

Câu hỏi siêu người dùng được liên kết ở trên là để gắn phân vùng và thư mục con trong chế độ chỉ đọc . Bạn chỉ cần thư mục con (thư mục cá nhân) để được đọc-ghi.

Trước tiên hãy kiểm tra hệ thống của bạn có thể gắn phân vùng ntfs ở chế độ đọc-ghi

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

Bây giờ kiểm tra nếu fs gắn kết có thể ghi. Nếu không dừng lại ở đây và đặt một câu hỏi khác trong trang web này.

Vấn đề là thư mục con của phân vùng được gắn RO không thể ở RW. Vì vậy, giải pháp là gắn kết phân vùng windows trong RW ở một nơi khuất và không thể truy cập. Vì vậy, hãy gắn kết nó trên / root / win mà người dùng không phải root không thể truy cập được (không có sudo)

Là người dùng root, hãy làm theo các
bước
1. Gắn phân vùng windows trong RW

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

2. Ràng buộc nó

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

3. Ràng buộc một phiên bản chỉ đọc của phân vùng windows

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

Bây giờ mọi thứ sẽ ổn. Ngoài ra, bạn có thể ngắt kết nối phân vùng windows nhưng tôi cảnh báo bạn trong một số hệ thống, nó sẽ làm cho không thể truy cập được liên kết (@home). Mã làumount /root/win

Ngoài ra, bạn có thể gắn phân vùng cửa sổ trong RW tại / media / windows (thay vì / root / win) và ngay lập tức liên kết gắn kết nó tại cùng một điểm gắn kết (/ media / windows) để không ai (thậm chí root) có thể viết trên phân vùng (nhưng trên thư mục người dùng).


Nó có hoạt động không? Có vấn đề gì?
totti

Phần đầu tiên, gắn rw trong / media / windows dường như hoạt động mặc dù nó không báo cáo quyền w Tôi thực sự có thể chạm và chỉnh sửa tệp.
Carlos Eugenio Thompson Pinzón

Khi kể lại, tôi gặp phải lỗi sau:Remounting is not supported at present. You have to umount volume and then mount it once again.
Carlos Eugenio Thompson Pinzón

Tôi nghĩ đó là vấn đề hệ thống của bạn. Tôi đã thử nghiệm thành công trong Ubuntu 12.10. Tôi chưa bao giờ thấy lỗi như vậy ngay cả trong Ubuntu 10.04. Bạn có thể thử nó trong một hệ thống trực tiếp (dường như bạn đã được cập nhật HĐH).
totti

Cảm ơn +1 từ tôi cũng vậy, cho một giải pháp tao nhã và một lời giải thích rất rõ ràng. Tôi đặc biệt thích thủ thuật gắn thư mục người dùng để một người (thậm chí root) có thể ghi trên thư mục người dùng. Đó thực sự là giải pháp tốt nhất vì không có phiên bản HĐH nào ngoài phiên bản Windows 8.1 mà tệp hệ thống thuộc về có bất kỳ doanh nghiệp nào truy cập vào các tệp hệ thống đó. Dữ liệu chia sẻ, tuy nhiên, là một câu chuyện khác nhau.
Bill Ape

5

Tôi nghi ngờ rằng câu trả lời siêu người dùng được liên kết là một câu trả lời. (Mặc dù tôi không thể thử.) Từ man mount:

Lưu ý rằng các tùy chọn gắn kết hệ thống tệp sẽ vẫn giống như các tùy chọn trên điểm gắn kết ban đầu và không thể thay đổi bằng cách chuyển tùy chọn -o cùng với --bind / - rbind. Các tùy chọn gắn kết có thể được thay đổi bằng lệnh remount riêng, ví dụ:

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

Tôi cũng nghi ngờ rằng có thể --rbindmột phần của hệ thống tệp có trình điều khiển hệ thống tệp khác (ntfs so với ntfs-3g).

Khi bạn rbindlệnh mount bỏ qua mọi tùy chọn, vì vậy không có gì sẽ trở thành đọc-ghi. Và vì trình điều khiển ntfs kernel không hỗ trợ ghi, rõ ràng rwtùy chọn này sẽ không giúp với cái đó. Sử dụng trình điều khiển ntfs-3g.

Về cơ bản những gì bạn nên làm là điều này (trong một thiết bị đầu cuối):

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

(Tôi nghĩ rằng điều đó --rbindcũng không cần thiết, --bindnên là đủ.)

Và liên quan đến nhận xét dưới câu hỏi: Tất nhiên bạn không phải khởi động lại hệ thống để kiểm tra, chỉ cần sử dụng mountlệnh như tôi đã làm ở trên. (Và ngắt kết nối với umountlệnh.)

Sau khi bạn xác nhận rằng điều này hoạt động như dự định, bạn chỉ cần sửa đổi gắn kết và thêm các tùy chọn bạn muốn: uid, gid, umask, v.v.


Chà, tôi có thể kiểm tra bằng cách sử dụng mount, tuy nhiên khi tôi tìm thấy cấu hình hoạt động, tôi sẽ muốn thực hiện nó một cách tự động, bằng /etc/fstabhoặc bằng bất kỳ phương tiện nào khác. (Với Câu hỏi Ob: làm cách nào để dịch mountlệnh thành fstabtham số?)
Carlos Eugenio Thompson Pinzón

@ CarlosEugenioThndryPinzón Đây fstabchỉ là một tệp được phân tích cú pháp tuần tự bằng mountlệnh khi khởi động. Nhưng tôi nghĩ Ubuntu không sử dụng mountnhưng mountallkhi khởi động, có thể không chạy các lệnh trong fstab một cách tuần tự. Vì vậy, có, đặt các tham số lệnh này chỉ đơn giản là fstabcó thể không hoạt động. Nhưng bạn luôn có thể đặt các lệnh mount hoạt động đơn giản vào tập lệnh khởi động (ví dụ /etc/rc.local) hoặc thực hiện một công việc mới từ những lệnh đó. Điều quan trọng hơn trong trường hợp của bạn là tìm ra sơ đồ gắn kết hoạt động, làm cho nó tự động khi khởi động là một công việc dễ dàng.
chim ưng 22/12/13

@ CarlosEugenioThndryPinzón Rất tiếc Tôi đã bỏ lỡ câu hỏi cuối cùng từ bình luận của bạn. Vậy làm thế nào các lệnh mount dịch sang fstab? Bạn có thể tìm nó trong man mounthoặc ở đây . Truyện ngắn: trường thứ nhất: thiết bị để gắn kết, trường thứ hai: điểm gắn kết, trường thứ ba: loại fs (chính xác hơn là trình điều khiển fs), trường thứ tư: tùy chọn gắn kết, trường khác hiện ít nhập hơn. Vì vậy, hình thành lệnh mount chuỗi mà chúng ta đã viết phía sau -tđi vào trường thứ ba, chuỗi chúng ta đã viết phía sau -ođi vào trường thứ tư.
chim ưng

3

Xem nếu điều này giúp ...

Nếu sda1đã được gắn kết /media/windows, bạn có thể ngắt kết nối với:

sudo umount /media/windows

Tiếp theo tạo thư mục windowstrong /media/:

sudo mkdir /media/windows

Chỉnh sửa /etc/fstabnhư dưới đây:

/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

( Lưu ý : thay đổi giá trị uidgid như đối với người dùng. Để lấy uid và gid của người dùng, bạn có thể sử dụng lệnh id -u usernameid -g usernameresp.)

Bây giờ bạn có thể gắn kết chúng với lệnh:

sudo mount -a

Bây giờ đi đến các thư mục rebinded và xem nếu bạn có thể chỉnh sửa các tập tin. Và bạn nên được thực hiện.


Được rồi, tôi có quyền rw trên /media/windows(không được báo cáo ls, nhưng tôi có thể chỉnh sửa tệp) dưới dạng root, tuy nhiên trong các thư mục cục bộ tôi cần sudođể sửa đổi các tệp.
Carlos Eugenio Thompson Pinzón

... và bây giờ tất cả các thư mục được gắn đều thuộc về tôi (người dùng 1000), từ /media/windowsđến /home/someotheruser/Windows.
Carlos Eugenio Thompson Pinzón

Tôi đoán bây giờ bạn và những người dùng khác có thể thực hiện và lưu các tác phẩm trong sự tôn trọng. điểm gắn kết trong $ HOME của người dùng ... nếu những người dùng còn lại vẫn không thể có quyền truy cập RW, hãy thêm họ vào nhóm của bạn (có thể với gid 1000)
chính xác là

Hiện tại tôi có một nhóm mà tất cả người dùng cục bộ được đính kèm và tôi đang cấp quyền ghi cho nhóm đó. Điều này giải quyết được mỗi người dùng có quyền truy cập vào dữ liệu riêng của họ nhưng toàn bộ phân vùng và dữ liệu của người dùng khác không được bảo vệ.
Carlos Eugenio Thompson Pinzón

3

Thực hiện tất cả các thử nghiệm của bạn trước khi chỉnh sửa tệp cấu hình fstab của bạn.

Chà, có lẽ bạn biết rằng hệ thống tập tin ntfs được tự động gắn vào chỉ đọc nếu hệ thống filess bị gắn cờ là bẩn. Điều bạn phải làm trước tiên trước khi thử bất kỳ câu trả lời nào là gắn đĩa vào windows và chạy chkdsk trước khi thử gắn lại.

Ngoài ra, nếu việc gắn kết trong rw vẫn không thành công, bạn nên thử gắn kết với các tùy chọn loại gắn kết khác nhau như sudo mount -t ntfshoặcsudo mount -t ntfs-3g

Khi fs được gắn vào rw, bạn có thể làm như sau:

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

hoặc là

sudo gksu nautilushoặc sudo gksu dolphinđể mở một nhà thám hiểm với quyền su


Cảm ơn bạn đã chkdsk. Thực sự có một số lỗi trong phân vùng NTFS và bây giờ tôi có thể ghi vào ổ đĩa được gắn với sudo.
Carlos Eugenio Thompson Pinzón

2

Tại sao không cố gắng để gắn nó với thuộc tính đọc và ghi: rw ?

/ dev / sda1 / media / windows ntfs rw , umask = 0222, mặc định 0 0


Tôi sẽ kiểm tra, tuy nhiên tôi muốn có toàn bộ phân vùng chỉ đọc và chỉ một số thư mục cụ thể là đọc-ghi.
Carlos Eugenio Thompson Pinzón

Không hoạt động. Cả phân vùng và các thư mục vẫn chỉ đọc. Sự khác biệt duy nhất là chmod và chown không báo cáo lỗi chỉ đọc: chúng chỉ không hoạt động.
Carlos Eugenio Thompson Pinzón

2

Tôi không chắc lắm, tuy nhiên, bạn có thể thử cái này không. Sau khi ổ đĩa được gắn kết, đưa ra lệnh sau trên thiết bị đầu cuối

sudo gksu nautilus

nhập mật khẩu quản trị của bạn và trong cửa sổ đồ họa mở, bạn sẽ có thể nhấp vào ổ đĩa và thay đổi quyền đọc / ghi.

Hãy cho tôi biết nếu các công trình này. Có trợ giúp để sử dụng nautilus với giao diện đồ họa với quyền root.


Điều này sẽ cho phép truy cập vào các tệp và chúng cũng có thể được sao chép, nhưng các quyền chỉ đọc có thể không bị thay đổi, vì các hệ thống tệp không phải là unix được gắn kết chỉ đọc ...
Wilf

1

Tôi khuyên bạn nên sử dụng sudo chmod.666 ~ / Windows

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


1
Tôi không thể thay đổi quyền hoặc chủ sở hữu (ngay cả với sudo). Nó từ chối lệnh nói rằng hệ thống chỉ đọc. Thậm chí không phải /media/windows/là toàn bộ phân vùng (và đó sẽ không phải là hành vi được mong đợi)
Carlos Eugenio Thompson Pinzón

Tôi có thể sai, nhưng đôi khi sudo không có quyền mà root sẽ có. Thử chạy sudo su sau đó chmod
virtualxtc

0

Cách dễ nhất để gắn Windows dưới dạng đọc-ghi là chỉ cần khởi động lại hoặc tắt hoàn toàn. Phân vùng NTFS ngủ đông khi "tắt nhanh" được sử dụng. Nguyên tắc này được đề cập chi tiết hơn tại liên kết này.

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.