Bỏ qua quyền mặc định khi gắn khối lượng HFS + trong linux


8

Tôi có một macbook pro khởi động kép với Snow Leopard và Kubfox 11.10 và muốn đọc (không quan tâm đến việc viết) thư mục nhà Mac của tôi khi tôi đang chạy Kubfox.

Tôi có thể gắn kết nó mà không gặp vấn đề gì, nhưng người dùng của tôi trên Kubfox không thể xem các tệp trên HFS + do người dùng mac sở hữu, do uid khác nhau (502 trên Mac, 1000 trên Kubfox).

Nhìn vào tài liệu kernel về HFS + tôi đọc rằng:

When mounting an HFSPlus filesystem, the following options are accepted:
[CUT]
    uid=n, gid=n
        Specifies the user/group that owns all files on the filesystem
        that have uninitialized permissions structures.
        Default:  user/group id of the mounting process.

Vì vậy, tôi đã thử sử dụng các tùy chọn sau:

$ sudo mount -t hfsplus -o uid=1000,gid=1000 /dev/sda2 /mnt/Mac

Nhưng họ dường như không làm gì cả: Tôi vẫn thấy các quyền tương tự khi tôi nhìn xung quanh bằng ls -l. Tôi có thể thiếu một cái gì đó, bất kỳ đầu mối?

Tôi biết rằng tôi có thể thay đổi id người dùng của mình trên Ubuntu để khớp với Mac Os X, nhưng tôi muốn tránh nó nếu có thể.

Câu trả lời:


9

bindfslà câu trả lời. Nó sẽ có một hệ thống tập tin đã được gắn kết và cung cấp một cái nhìn về nó với bất cứ điều gì bạn muốn:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo

Biên tập:

Ngoài ra, đọc tài liệu tôi nhận ra rằng maptùy chọn (1.10 trở lên) có thể phù hợp hơn:

sudo bindfs --map=502/1000 /media/diskFoo ~/myUIDdiskFoo

Giải pháp rất tuyệt. Nó giải quyết vấn đề mà không thay đổi các hành vi mặc định của các HĐH và có thể có nhiều tùy chọn hơn. Chỉ cần cẩn thận nếu hệ thống được chia sẻ với người dùng khác, điều này có thể làm lộ các tệp riêng tư cho đối tượng bất ngờ.
gerlos

1
Vâng. Tôi đã rất ngạc nhiên khi tiện ích gắn kết hệ thống không cung cấp khả năng này. Ngoài ra, bạn có thể sử dụng mapchức năng của bindfs để chỉ ánh xạ người dùng 502 đến 1000, có thể an toàn hơn và nhiều hơn những gì bạn đã dự định.
Catskul

Vì tôi không có tiếng tăm để bình luận, tôi chỉ lưu ý rằng có một lỗi nhỏ trong câu trả lời của Catskul, an = mất tích, nên là: sudo bindfs --map = 502/1000 / media / đĩaFoo ~ / myUIDdiskFoo
J. Simon van der Walt

1

Cuối cùng, tôi đã tạo một người dùng linux có cùng UID của người dùng mac os x của tôi, nhưng nó không thể duyệt mọi thư mục trong nhà của tôi trên mac hfs + volume vì rất nhiều tệp được sở hữu bởi người dùng mac "không xác định", UID 99 (xem http://googlemac.blogspot.com/2007/03/user-99-unknown.html ).

Có vẻ như họ đã làm như vậy để cho phép bạn gắn kết và đọc âm lượng của bạn khi bạn kết nối nó với một máy tính khác. Khi một người dùng thông thường nhìn vào các tệp thuộc sở hữu của UID 99, anh ta thấy chúng là chủ sở hữu của họ. Khá lạ. Chỉ root nhìn thấy chúng như chúng là.

Vì vậy, tôi đã khởi động lại trong Mac Os X, đăng nhập với một người dùng khác với quyền quản trị và sử dụng chown -R 502: 20 / Users / gerlos / * để thay đổi chủ sở hữu của mọi tệp trong nhà tôi. Bây giờ tôi có thể đọc mọi thứ mà không có vấn đề gì.

Nhận xét:

  • công cụ gui kubfox mặc định để tạo người dùng mới trên Kubfox 11.10 không thể tạo người dùng có UID dưới 1000. Thay vào đó, hãy sử dụng trình bổ sung trên thiết bị đầu cuối.
  • bạn có thể biết UID người dùng của mình bằng lệnh "id" trên thiết bị đầu cuối.
  • trên mac os x, bạn cần phải root để xem chủ sở hữu thực sự của các tệp. Vì vậy, mong đợi kết quả khác nhau nếu bạn nhập "ls -n / Users / gerlos" và "sudo ls -n / Users / gerlos".

Sự khác biệt về OSX giữa người dùng unix "thực" và người dùng được Finder nhận ra đã khiến tôi rất đau đầu ... nó thậm chí có thể khiến một số ứng dụng trên OSX hoạt động kỳ lạ (ví dụ: Dropbox sẽ không đồng bộ hóa các tệp của bạn). Để tránh mọi vấn đề, hãy đăng nhập vào hệ thống OSX của bạn, mở một thiết bị đầu cuối và đảm bảo người dùng unix của bạn sở hữu mọi thứ mà người dùng OS X của bạn đã sở hữu. Có thể tôi không hiểu điều gì đó, nhưng theo kinh nghiệm của tôi, sử dụng GUI là không đủ.
gerlos

1

Thật ra tôi đang muốn làm điều gì đó tương tự khi tôi gặp câu hỏi này. Theo hiểu biết của tôi, nhìn từ bài đăng đầu tiên của bạn, rằng tùy chọn gắn kết được yêu cầu là hỏi người dùng nên sử dụng uid nào thay vì mặc định của hệ thống linux của bạn (ví dụ: uid 1000). Vì vậy, thay vào đó, bạn nên sử dụng 502, chủ sở hữu kỳ vọng của hệ thống tệp bạn đang cố gắn kết.

Tôi đã thử nghiệm điều này trong tình huống của riêng tôi và nó hoạt động rất tốt, với 99 hệ thống tập tin được chia sẻ giữa các hệ thống của tôi. Với điều này, tôi sẽ không cần phải đi xung quanh thay đổi uids. Cảm ơn đã chia sẻ. Điều này có thể không còn nhiều cho bạn nữa nhưng có thể giúp đỡ người khác. Chúc mừng


1
Đúng. Giải pháp tốt nhất là để lại các UID và quyền riêng lẻ, gắn hệ thống tệp HFS + của bạn như bình thường và sau đó gắn kết nhà của bạn dưới hệ thống tệp HFS + bằng bindfs, do đó mọi thứ dường như thuộc sở hữu của người dùng linux của bạn. Bằng cách này, bạn sẽ không bao giờ cần sử dụng UID tùy chỉnh, không thay đổi quyền trong hệ thống tệp HFS +, do đó bạn giữ nguyên hành vi mặc định trong cả hai hệ thống. Vì bạn có thể kết nối với các ràng buộc của mỗi nhà của người dùng, bạn có thể giữ các tệp riêng tư ngay cả trong các hệ thống được chia sẻ, vẫn giữ cho người dùng có thể truy cập chúng.
gerlos
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.