Linux NFS tạo mặt nạ và buộc người dùng tương đương


11

Tôi có hai máy chủ Linux:

máy chủ tệp
Debian 5.0.3 (2.6.26-2-686)
Phiên bản Samba 3.4.2

apache
Ubuntu 10.04 LTS (2.6.32-23-chung)
Apache 2.2.14

Tôi có một số chia sẻ Samba trên máy chủ tệp để tôi có thể truy cập các tệp từ PC Windows. Tôi cũng đang xuất /data/www-datasang máy chủ apache , nơi tôi đã gắn kết nó /var/www.

Thiết lập vẫn ổn, ngoại trừ khi tôi đến để tạo các tệp trên ngàm NFS. Tôi kết thúc với các tệp mà Apache không thể đọc được hoặc những người dùng khác không thể sửa đổi trong hệ thống của tôi.

Với Samba, tôi có thể xác định force user, force group, create maskdirectory mask, và đảm bảo rằng tất cả các file này được tạo ra với các điều khoản phù hợp cho máy chủ web Apache của tôi. Tôi không thể tìm ra cách để làm điều này với NFS. Có cách nào để buộc các quyền và quyền sở hữu với NFS - tôi có thiếu điều gì rõ ràng không?

Mặc dù tôi đã dành khá nhiều thời gian với Linux và bỏ qua Windows, tôi vẫn chưa nắm bắt được các quyền của Linux ... Nếu đây không phải là cách đúng đắn để làm mọi thứ, tôi sẵn sàng đề nghị thay thế.

Câu trả lời:


12

Vì bạn đến từ Windows, bạn sẽ thấy NFS khác ....

Vấn đề bạn đang gặp phải là khá phổ biến. NFS đang truyền UID và GID của các tệp / thư mục qua lại giữa các máy với giả định rằng ID người dùng và nhóm được ánh xạ giống hệt nhau trên cả hai . Điều này có nghĩa là bạn có thể gặp tình huống UID / GID trên máy chủ được chuyển trở lại máy khách NFS, nhưng nó không thể phù hợp trong máy khách /etc/passwdhoặc /etc/groupcó nghĩa là không có quyền truy cập.

Trong quá khứ (xa xôi), điều này đã được kết hợp với NIS và NIS +, mặc dù có những kế hoạch khác đã được đưa vào khuôn khổ này (Winbind của Samba là một trong số họ). Tuy nhiên, điều này đòi hỏi một máy chủ ID trung tâm, theo sau là rất nhiều quyền sửa lỗi.

Có nhiều cách khác nhau để khắc phục điều này, nhưng cách rẻ nhất / nhanh nhất là tạo một nhóm có cùng số ID nhóm trên cả hai máy - giả sử, ID nhóm 50000 - và đặt các bit nhóm trên máy chủ tệp trong khi thêm người dùng thích hợp vào nhóm trên khách hàng; sau đó sử dụng quyền của nhóm trên các tệp để kiểm soát truy cập. Không phải là một giải pháp tuyệt vời nhưng nó sẽ làm việc. Lưu ý rằng bạn có thể gặp sự cố với các dịch vụ thay đổi rõ ràng nhóm của họ khi chạy (còn gọi là quyền riêng tư) và bạn có thể cần thay đổi cài đặt kiểm soát nhóm nào được giả định trong thời gian chạy để đảm bảo đó là nhóm bạn đã tạo.

Đối với những tệp được gửi đến thông qua chia sẻ Windows (còn gọi là Samba), chỉ cần buộc nhóm phải giống với tệp bạn tạo. Bằng cách đó, tất cả các tệp sẽ tự động nhận được GID "đúng".


Cảm ơn đã phản hồi. Tôi sẽ xem xét phương pháp bit nhóm và cho bạn biết làm thế nào tôi tiếp tục.
Mike

Tôi đã tạo một www-datanhóm trên Máy chủ tệp, chỉ định những người dùng cần thiết, sau đó đặt cùng một www-dataID nhóm trên cả hai máy chủ. Tôi cũng đặt các bit nhóm trên /data/www-datathư mục với chmod -R g+s /var/www-data. Bây giờ nó hoạt động hoàn hảo. Cảm ơn bạn đã giúp đỡ.
Mike

Vui mừng khi nghe nó!
Avery Payne

Sẽ thật tuyệt nếu NFS có thể làm điều này cho các máy khách Mac.
d -_- b

9

Bạn cũng có thể sử dụng all_squashtùy chọn ẩn danh (người dùng & nhóm) tất cả các tệp và thư mục đã xuất và đính kèm chúng vào một GID & UID cụ thể.

/data/www-data apache(rw,all_squash,anonuid=<your UID>,anongid=<your GID>,sync)

Vấn đề với điều đó là tất cả người dùng trên apachemáy chủ sẽ thấy điểm gắn kết của bạn với nobody nobodytư cách là người dùng & nhóm và có thể ghi vào giá trị gắn kết (nhưng dù sao, trên máy chủ Samba, các tệp sẽ được tạo thành <your UID>/ <your GID>).


Điều đó đã giải quyết vấn đề của tôi!
Luciano Andress Martini
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.