Làm cách nào để đặt quyền cho thư mục NFS? Quyền bị từ chối khi kết thúc gắn kết.


46

Tôi đang cố gắng kết nối với một thư mục NFS trên máy chủ dev của tôi. Chủ sở hữu của thư mục trên máy chủ dev là darren và darren nhóm.

Khi tôi xuất và gắn nó vào máy Mac của mình bằng Disk Utility, nó sẽ gắn kết, nhưng khi tôi cố mở thư mục thì tôi không có quyền. Tôi đã đặt rw, đồng bộ hóa và no_subtree_check. Người dùng trên Mac rất yêu thích các nhóm.

Tôi có cần phải đặt cùng nhóm và người dùng để truy cập thư mục không?


2
Cảm ơn câu hỏi của bạn, chủ đề này đã giải quyết vấn đề cho tôi! Nhưng xin vui lòng chấp nhận câu trả lời với hầu hết các upvote.
mamiu

Câu trả lời:


61

NFS được xây dựng dựa trên xác thực RPC. Với NFS phiên bản 3, cơ chế xác thực phổ biến nhất là AUTH_UNIX. Id người dùng và id nhóm của hệ thống máy khách được gửi trong mỗi cuộc gọi RPC và các quyền mà các ID này có trên tệp đang truy cập được kiểm tra trên máy chủ. Để làm việc này, UID và GID phải giống nhau trên máy chủ và máy khách. Tuy nhiên, bạn có thể buộc tất cả quyền truy cập xảy ra dưới dạng một người dùng và nhóm bằng cách kết hợp các tùy chọn xuất all_squash, anonuid và anongid. all_squash sẽ ánh xạ tất cả các UID và GID tới người dùng ẩn danh và anonuidanongid đặt UID và GID của người dùng ẩn danh. Ví dụ: nếu UID và GID trên máy chủ dev của bạn đều là 1001, bạn có thể xuất thư mục chính của mình với một dòng như

/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)

Tôi ít quen thuộc với NFS phiên bản 4, nhưng tôi nghĩ bạn có thể thiết lập rpc.idmapd trên máy khách để thay đổi uid và gid mà chúng gửi đến máy chủ.


7
Tôi đã chạy qua câu trả lời này khi cố gắng giải quyết vấn đề nfs của Apple OS X Yosemite. Câu trả lời này phù hợp và chính xác hơn nhiều so với câu trả lời được chấp nhận. Không nên và cũng không khả thi khi kết hợp UID / GID trên các hệ thống. Người dùng root trên hệ thống A có thể không phải là người dùng root trên hệ thống B.
Allan

28

Khi bạn gắn NFS, các quyền của bạn đang gắn kết phải phù hợp với những gì bạn có trên máy chủ. Ví dụ: nếu người dùng của bạn chỉ có quyền truy cập chỉ đọc, việc gắn nó với đọc-ghi sẽ khiến bạn thấy các lỗi tương tự bạn đã đề cập trong bài đăng của mình khi bạn cố gắng thực sự tải mount. Thật không may, điều này sẽ CHỈ hiển thị khi truy cập vào thư mục, không phải khi bạn thực sự gắn kết nó.

Bạn cũng muốn đảm bảo rằng NFS người dùng đang chạy như trên máy chủ và người dùng trên máy khách đang sử dụng cùng một UID và GID. Bạn có thể kiểm tra các giá trị này bằng cách chạy id darrentrên cả máy chủ và máy khách. Nếu các giá trị UID và GID không khớp nhau, bạn có thể chỉnh sửa /etc/passwdđể làm như vậy - nhưng hãy đảm bảo bạn hiểu những gì bạn đang làm trước khi thay đổi giá trị tùy ý!

Một số nguồn tốt:

Tôi hi vọng cái này giúp được!


Vâng, tôi không nên cố gắng thay đổi UID mà tôi phải làm lại máy chủ của mình bây giờ. Làm thế nào một người bắt chước UID và GID? Nó thực sự phức tạp?
Darren

Thật không may, theo kinh nghiệm của tôi về việc sử dụng nó ở nơi làm việc, NFS cực kỳ mong manh và vâng - nó có thể phức tạp như vậy. Thông thường, bạn sẽ muốn một người dùng NFS chuyên dụng có UID / GID cụ thể trên mỗi máy chủ / máy khách để bạn không gặp phải vấn đề này. Nếu bạn có lựa chọn trong môi trường nhà phát triển của mình (nghĩa là không sử dụng NFS), việc sử dụng một cái gì đó như SSHFS sẽ khiến cơn đau đầu của bạn biến mất - nhưng sẽ không sao chép chức năng tương tự như máy chủ sản xuất bằng cách sử dụng NFS.
Andrew M.

Bạn có nghĩ Samba là một giải pháp khác? Tôi đã sử dụng nó với Windows mà không gặp vấn đề gì và tôi nghĩ đây là cách tôi sẽ phải đi mặc dù tôi đang sử dụng máy Mac để phát triển ứng dụng của mình.
Darren

Đó chắc chắn là một khả năng khác, nếu bạn sẵn sàng thiết lập nó.
Andrew M.

2
Tôi sẽ do dự để nói NFS là mong manh. Nó là một giao thức dịch vụ tập tin được thiết lập từ lâu. Thực sự chỉ có hai yêu cầu đối với NFS: UID / GID được đồng bộ hóa giữa các máy khách và thời gian được đồng bộ hóa giữa máy khách và máy chủ. Theo truyền thống, NIS được sử dụng để đồng bộ hóa thông tin người dùng, nhưng LDAP là lựa chọn an toàn hơn cho các triển khai mới trong thập kỷ qua.
Jeff Strunk

2

Các UID và GID của bạn có khớp trên cả hai máy chủ không? Đó là những gì nó đang sử dụng để kiểm soát truy cập và không phải tên đăng nhập và tên nhóm.


-2

Đối với tôi, vấn đề đã được khắc phục bằng cách cung cấp _netdevtùy chọn gắn trên máy khách.

Tức là thêm cái này vào /etc/fstab:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
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.