Cách quản lý quyền trên một ổ đĩa chung cho OSX và ubfox


8

Trên máy mac của tôi, tôi đang sử dụng phân vùng HFS không được báo cáo để chia sẻ các tệp giữa OSX 10.8 và Ubuntu 12.04.

Đó là một suy nghĩ tốt lúc đầu, bởi vì Time Machine sẽ tự động sao lưu âm lượng trong OSX, nhưng tôi sớm nhận thấy rằng OSX và Ubuntu lộn xộn với sự cho phép theo cách khiến mọi thứ trở nên lộn xộn đối với tôi.

Vì vậy, để xem và thay đổi hoàn toàn các tệp, tôi tiếp tục sử dụng chmodđể áp dụng các quyền sẽ cho phép tôi sử dụng đầy đủ tài liệu. Nhưng tôi không hiểu tại sao tôi phải tiếp tục áp dụng thay đổi nhiều lần .

Có thể thiết lập một số loại quyền vĩnh viễn để cả hai hệ điều hành sẽ tôn trọng vĩnh viễn?

Tôi đoán 777 sẽ hoạt động, nhưng tôi nghĩ rằng đây không phải là một điều thông minh để làm. Nhưng miễn là 'người khác' không có quyền truy cập đầy đủ (bảy phần ba), tôi thấy một biểu tượng khóa trên tệp trong ubfox.


1
Bạn có cùng tên người dùng trong cả OS X và Ubuntu không? Nếu bạn có tên người dùng khác nhau, bạn có thể thử thêm tên người dùng Ubuntu vào nhóm của mình trong OS X và ngược lại . Bằng cách này, bạn sẽ chỉ cần 774cho phép.
edwin

@edwin Cảm ơn vì tiền boa. Làm cách nào để thêm tên người dùng vào nhóm của tôi? Là sử dụng 777 hợp lý hay không an toàn?

Câu trả lời:


12

Tên người dùng không liên quan. Quyền trong cả hai hệ thống tệp gốc HFS + và Linux được lưu trữ dưới dạng ID người dùng (UID), là các số được liên kết với tên người dùng. Trong Ubuntu, như trong hầu hết các bản phân phối Linux hiện đại, người dùng đầu tiên được cấp UID 1000 theo mặc định. Trong OS X, người dùng đầu tiên được cấp UID là 501 theo mặc định. Do đó, khi chia sẻ phương tiện mã hóa giá trị UID, các giá trị UID có thể không khớp.

Một cách để khắc phục điều này là bằng cách đặt các quyền lỏng lẻo (giá trị chế độ, như trong rwxr-xr-x, hoặc 755 theo số bát phân). Lưu ý rằng mã bát phân quyền không giống với giá trị UID. Trong cả hai hệ điều hành, bạn có thể đặt các quyền mặc định được sử dụng trên các tệp bằng umasklệnh, trong đó chỉ định giá trị bit sẽ bị xóa khỏi quyền truy cập tệp. Chẳng hạn, umask 022loại bỏ quyền ghi cho nhóm và các quyền khác, dẫn đến 755 (rwxr-xr-x) quyền trên các tệp mới (hoặc 644 nếu có gì đó loại bỏ bit quyền thực thi, đây là cách làm phổ biến đối với các tệp). Đây phần lớn là một công cụ dòng lệnh; nếu bạn phần lớn là người dùng GUI, bạn sẽ cần tìm một công cụ khác để thực hiện công việc, có thể liên quan đến các mặc định của môi trường máy tính để bàn của bạn. Điều này có thể tối nghĩa và tài liệu kém. Ngoài ra, thiết lập các quyền lỏng lẻo theo cách này có thể có những hạn chế về bảo mật, đặc biệt nếu hệ thống của bạn là một hệ thống nhiều người dùng.

Cách tiếp cận tốt hơn là đồng bộ hóa UID tài khoản của bạn trên Linux và OS X. Bạn có thể dễ dàng thay đổi giá trị UID trong Linux bằng usermodlệnh, như trong:

usermod -u 501 dale

Lệnh này đặt UID cho dale501. Mặc dù vậy, có một số cảnh báo quan trọng:

  • Bạn nên đăng xuất khỏi tài khoản bạn đang sửa đổi trước khi sửa đổi. Cố gắng sửa đổi một tài khoản đang sử dụng sẽ khiến tài khoản đó bắt đầu hành xử kỳ lạ.
  • usermodphải được sử dụng như root. Bạn có thể thực thi thông qua sudo, nhưng làm như vậy từ tài khoản bạn đang sửa đổi là điều không thể tránh khỏi. Do đó, bạn sẽ cần cung cấp rootmật khẩu và đăng nhập roottrực tiếp hoặc sử dụng sudotừ tài khoản người dùng thứ hai.
  • Các usermodlệnh sẽ không làm thay đổi quyền sở hữu của bất kỳ tập tin thuộc sở hữu của người sử dụng trong câu hỏi. Để điều chỉnh quyền sở hữu các tệp đó, bạn sẽ cần xác định vị trí của chúng và sau đó thay đổi quyền sở hữu của chúng chown. Hầu hết các tệp sẽ nằm trong thư mục chính của người dùng, do đó chown -R dale: /home/dale, được nhập như rootsau khi thay đổi daleUID, sẽ thay đổi hầu hết các daletệp để sử dụng số UID mới. Tuy nhiên, một số tệp của người dùng có thể được đặt ở nơi khác. Nhập find / -uid 1000sẽ tìm thấy tất cả các tệp sử dụng UID cũ (giả sử là 1000). Lưu ý rằng findlệnh này có thể sẽ mất vài phút để hoàn thành. Để tăng tốc, hãy ngắt kết nối bất kỳ hệ thống tệp nào mà bạn chắc chắn rằng nó sẽ không tìm thấy lần truy cập nào, chẳng hạn như khối lượng FAT hoặc NTFS.
  • Nếu bạn truy cập vào khối lượng FAT hoặc NTFS, giá trị UID của chúng được xác định bởi các tùy chọn tại thời điểm gắn kết. Nếu bạn sử dụng trình quản lý tệp GUI, rất có thể giá trị UID được đặt thành bất kỳ ai đang chạy trình quản lý tệp, do đó bạn không cần phải làm gì đặc biệt. Tuy nhiên, nếu bạn gắn âm lượng qua một /etc/fstabmục, bạn có thể cần điều chỉnh giá trị UID mà nó chỉ định.
  • Ubuntu lưu trữ giá trị tối thiểu mà nó sử dụng cho UID /etc/login.defs. Nếu bạn không thay đổi UID_MINgiá trị trong tệp này, bạn có thể sẽ phát hiện ra rằng tài khoản của bạn dường như sẽ "biến mất" khỏi màn hình đăng nhập GUI và có thể từ một số hệ thống khác. Vì vậy, bạn nên chỉnh sửa tập tin đó.

Về lý thuyết, bạn có thể thay đổi UID của (các) tài khoản OS X của mình theo cách tương tự để đạt được cùng một mục tiêu. Tuy nhiên, tôi không quen với các công cụ bảo trì tài khoản OS X, vì vậy tôi không thể cung cấp hướng dẫn rõ ràng để làm việc đó. Điều chỉnh các giá trị OS X sẽ có lợi thế là bạn không phải điều chỉnh UID_MINtrong Linux.

Nếu bạn có nhiều tài khoản trên máy tính của mình, bạn nên điều chỉnh tất cả chúng để giữ cho tất cả chúng được đồng bộ hóa trên các cài đặt hệ điều hành của bạn.

Thêm một điểm nữa: Giá trị ID nhóm (GID) được lưu trữ theo cách tương tự. IIRC, Ubuntu gán giá trị GID cho mỗi tài khoản giống với giá trị UID của nó. Tôi không nhớ những gì OS X làm theo mặc định. Bạn có thể muốn điều chỉnh các giá trị GID cho hai HĐH theo cách tương tự với các thay đổi UID, nhưng điều này có thể không quan trọng bằng điều chỉnh các giá trị UID.

EDIT: Nếu bạn muốn thay đổi UID (và GID, nếu muốn) trong macOS / OS X thay vì trong Ubuntu, bạn có thể làm như vậy. Vì sửa đổi trong macOS nằm ngoài phạm vi của trang web này, tôi sẽ chỉ liên kết đến một vài trang cung cấp quy trình để thực hiện việc này trong macOS:


Ồ, cảm ơn bạn! Đây là một câu trả lời toàn diện bằng văn bản - giải thích toàn bộ bối cảnh của vấn đề! Giải pháp này đã giúp tôi có được một phân vùng chia sẻ hoàn hảo mà không có bất kỳ thỏa hiệp nào. Lúc đầu, vẫn còn vấn đề về quyền sở hữu tệp: "bỏ qua quyền sở hữu của ổ đĩa này" trong OSX sẽ không cho tôi quyền truy cập ghi vào các tệp OSX mới được tạo khi chạy dưới ubfox (biểu tượng khóa) và ngược lại. Vì vậy, tôi đã kết thúc việc thiết lập một tài khoản mới trong ubfox bằng cùng tên người dùng như trong OSX và thay đổi lại UID.

Bây giờ tôi có quyền truy cập đầy đủ từ cả hai hệ điều hành cho các tệp hiện có và mới được tạo mà không phải thay đổi các hạn chế truy cập. Vì đây là một câu trả lời mẫu mực, tôi sẽ đưa tiền thưởng cho bạn một khi câu hỏi đủ điều kiện nhận tiền thưởng. ;-)

Sau khi làm theo hướng dẫn của bạn, tôi đã cố gắng đăng nhập vào Ubuntu. Khi tôi nhấn enter, tôi thấy một màn hình đen trong một giây và sau đó quay lại màn hình đăng nhập. Sau khi đổi lại bất cứ thứ gì thành tiêu chuẩn 1000 từ tài khoản tạm thời của tôi, tôi có thể đăng nhập lại. Bất cứ ý tưởng tại sao tôi không thể đăng nhập với uid mới?
Boronomiakur

Nếu bạn bỏ qua việc thay đổi các quyền trên thư mục nhà riêng của mình, điều đó có thể giải quyết vấn đề. Nếu bạn đang sử dụng 13.10, có thể hiểu rằng một cái gì đó trong Ubuntu đã thay đổi gây ra sự cố nếu bạn không điều chỉnh UID_MIN.
Rod Smith

1
CẬP NHẬT: tôi vừa mới sử dụng hệ thống của mình và bằng cách nào đó, sự cho phép của thư mục nhà của tôi không phải thay đổi!? Tất cả mọi thứ hoạt động độc đáo chỉ sau usermod (như root).
krumpelstiltskin

0

Tôi đã thấy rằng đôi khi bạn có thể nhấp vào thư mục bạn muốn chia sẻ và nhấn lệnh + I. Sau đó nhấp vào khóa và nhập mật khẩu của bạn nếu nó không được mở khóa Tiếp theo, sau đó nó nói "mọi người" chọn đọc và viết.

Một việc khác hoạt động là thiết lập một thư mục dưới dạng "thư mục dùng chung", bạn có thể thực hiện việc này trong ngăn tùy chọn chia sẻ trong tùy chọn hệ thống.
Đi đến tùy chọn hệ thống> chia sẻ> chia sẻ tệp. Sau đó chia sẻ rằng hộp chia sẻ tệp được chọn và thêm thư mục bạn muốn chia sẻ bằng nút dấu cộng. Sau đó, bạn có thể thay đổi quyền để đọc một ghi.

MỘT LƯU Ý: sử dụng tùy chọn thứ hai cũng sẽ mở máy tính của bạn để cho phép truy cập vào thư mục bạn chọn qua internet (chỉ khi khởi động vào os x) !! Hãy chia sẻ rằng bạn có mật khẩu an toàn và có thể bạn sẽ vô hiệu hóa mật khẩu này ở những nơi công cộng (đừng quên lấy mũ tinfoil của bạn!)


Điều này hoạt động trong cả hai trường hợp, nhưng tôi sẽ chỉ sử dụng tùy chọn đầu tiên. Tuy nhiên, việc cho phép "mọi người" truy cập (tức là cho phép 777) dường như quá triệt để - hay không? Cái này có an toàn không?

1
Vâng, nó không được khuyến khích cho chắc chắn. "Mọi người" sẽ có thể sửa đổi và đọc các tài liệu với các quyền đó (nhưng tôi nghĩ đây không phải là công cụ unix). Nó chắc chắn một chút an toàn hơn để sử dụng 774.
edwin

0

Mở một thiết bị đầu cuối và:

Trong OS X, hãy thử điều này

sudo dscl / -create /Users/<ubuntu-username>
sudo dscl / -append /Groups/<os-x-username> GroupMembership <ubuntu-username>

Trong Ubuntu, chạy cái này

sudo adduser --system --no-create-home --ingroup <ubuntu-username> <os-x-username>

Bây giờ bạn sẽ có thể sử dụng 774hoặc thậm chí 770cho các quyền của tập tin.


Điều này không hoạt động. Lệnh OSX cũng không hoạt động. Nhưng tôi đã quản lý để thêm người dùng Ubuntu thông qua giao diện GUI trong OSX. Sau khi thêm người dùng của HĐH khác vào HĐH đang chạy và thay đổi quyền thành 774 trong cả hai hệ điều hành, Ubuntu vẫn không thể truy cập đầy đủ vào tất cả các tệp trên phân vùng dùng chung. Một số thư mục con chẳng hạn tôi không thể mở (quyền là 774). Vì vậy, tôi đã phải đổi nó thành 777 để mở nó. Là những sự cho phép duyên dáng?

Trong Ubuntu ít nhất, lệnh nên hoạt động tôi đã thử bản thân mình trước khi thêm câu trả lời. Bạn có chắc chắn bạn đã thay thế <ubuntu-username>bằng tên người dùng thực tế của mình trong Ubuntu (idem for <os-x-usernanme>) không? Và bạn có thể nói cụ thể hơn về những lỗi mà OS X mang lại cho bạn khi thử chạy lệnh này không?
edwin

Tôi chỉ nói rằng lệnh không hoạt động trong OSX. Nếu tôi nhớ chính xác, lệnh adduserkhông thoát.

Tôi đã chỉnh sửa câu trả lời cho điều này. Thử nó. Tôi không chắc vì tôi không quen với quản lý người dùng OS X. Trong OS X, bạn cũng có thể sử dụng GUI để tạo người dùng Ubuntu (với tên người dùng bạn sử dụng trong Ubuntu) và sau đó thêm nó vào nhóm người dùng OS X thực tế của bạn.
edwin

Không quan trọng. OSX cung cấp một GUI đơn giản khi sử dụng CMD + I nơi bạn có thể tạo và thêm người dùng rất dễ dàng. Nhưng điều này đã không giải quyết vấn đề sau tất cả. Tôi đã kết thúc bằng cách sử dụng quyền 777.
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.