(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

Hệ thống file mạng

Thông tin RPC

Hệ thống file mạng (Network File System – NFS) dùng để chia sẻ các hệ thống file qua mạng. Bạn có thể gắn (mount) một partition trên máy từ xa như thể trên đĩa cục bộ của mình. Máy khách truy cập hệ thống file từ xa dựa vào bảng hệ thống file chứa trong file cấu hình /etc/exports trên máy chủ NFS.

Mỗi dòng của file cấu hình exports bao gồm một điểm xuất khẩu và một danh sách các khách (client) ngăn cách bởi khoảng trắng mà được chỉ định cho phép gắn hệ thống file tại điểm đó. Mỗi khách trong danh sách có thể có các tùy chọn đằng sau nó, là một danh sách trong ngoặc đơn các tùy chọn xuất khẩu ngăn cách bởi dấu phẩy (,). Không có khoảng trắng được phép giữa khách và danh sách tùy chọn.

Có thể tạo một danh sách tùy chọn mặc định cho tất cả các khách trên một dòng bằng cách đặt danh sách này trước tiên (sau điểm xuất khẩu) với một dấu gạch ngang (-) đằng trước nó. Như thế các khách liệt kê phía sau có thể không cần danh sách tùy chọn vì chúng sử dụng tùy chọn mặc định; nếu khách nào có danh sách tùy chọn riêng thì danh sách tùy chọn này sẽ đè ý nghĩa lên các giá trị mặc định.

Quy định về dòng trống, dấu #, và nối tiếp nhiều dòng cho một mục cấu hình tương tự như file cấu hình nhật ký.

Khách có thể được chỉ ra theo một số cách như sau:

  • Host đơn

    Tên host, tên miền đầy đủ hoặc địa chỉ IP (IPv4 hoặc IPv6).

  • Mạng IP

    Bạn có thể chỉ ra một mạng con, biểu diễn bởi một cặp địa chỉ/mặt nạ mạng (address/netmask). Trong đó netmask ở dạng chấm-thập phân hoặc chiều dài mặt nạ liền kề. Ví dụ 192.168.0.0/255.255.255.192 hoặc 192.168.0.0/26 là biểu diễn tương đương cho một mạng con dựa trên địa chỉ IPv4 với 6 bit của host.

  • Ký tự đại diện

    Tên máy có thể chứa ký tự đại diện như dấu hoa thị (*), dấu hỏi (?) hoặc danh sách các lớp ký tự trong ngoặc vuông. Ví dụ *.local.domain khớp tất cả các host trong miền local.domain. Vì * cũng khớp cả dấu chấm nên mẫu đó cũng khớp tất cả các host trong mọi miền con của local.domain.

  • Nhóm mạng

    Nhóm mạng NIS (Network Information Service) có thể được đưa ra dưới dạng @group. Chỉ phần host của mỗi thành viên nhóm mạng được xem xét. Phần host rỗng hoặc chứa dấu gạch ngang (-) sẽ được bỏ qua.

  • Nặc danh (anonymous)

    Một dấu hoa thị (*) khớp tất cả các khách.

Nếu một khách khớp nhiều hơn một trong các kiểu kể trên thì khớp đầu tiên trong thứ tự danh sách kể trên sẽ được chọn, bất kể thứ tự chúng xuất hiện trong dòng xuất khẩu. Tuy nhiên, nếu một khách khớp nhiều hơn một lần với các kiểu cùng loại thì khớp đầu tiên xuất hiện trong dòng xuất khẩu sẽ được chọn.

An ninh rpcsec_gss

Giao thức rpc trong NFS bao hàm hỗ trợ chung cho các cơ chế xác thực: mỗi cuộc gọi rpc có hai trường, chứng nhận và xác minh. Mỗi trường bao gồm một số nguyên 32 bit chỉ định một “hương vị an ninh” (security flavor), tiếp theo là 400 byte dữ liệu không rõ ràng có cấu trúc phụ thuộc vào hương vị được chỉ định.

Hương vị an ninh trước đây và vẫn còn là mặc định trong NFS chấp nhận truy cập dựa trên tên host hay địa chỉ, cho qua định danh người sử dụng (uid) và định danh nhóm (gid). Kiểu an ninh này chỉ thỏa đáng trong một mạng tin cậy và nói chung là không an toàn.

RFC 2203 định nghĩa giao thức rpcsec_gss, sử dụng phần dữ liệu không rõ ràng của rpc để mang thông tin mật mã. Các dịch vụ mật mã được cung cấp bởi GSS_API (Generic Security Service Application Program Interface) cho phép sử dụng nhiều cơ chế an ninh, trong đó điển hình là Kerberos.

Có ba hương vị an ninh ứng với ba mức an ninh được cung cấp bởi rpcsec_gss:

  • krb5

    Chỉ xác minh; tiêu đề rpc của mỗi yêu cầu và phản hồi được ký.

  • krb5i

    Toàn vẹn thông tin liên lạc; cả tiêu đề và thân của mỗi yêu cầu và phản hồi được ký.

  • krb5p

    Bảo mật thông tin, tính riêng tư; bao hàm các mức trên, tiêu đề của mỗi yêu cầu được ký và thân được mã hóa.

NFS có tùy chọn xuất khẩu sec=, theo sau bởi một danh sách các hương vị an ninh ngăn cách bởi dấu hai chấm (:). Các hương vị an ninh cho tùy chọn này bao gồm ba hương vị an ninh Kerberos phiên bản 5 kể trên và sys, là tên của hương vị mặc định vốn không sử dụng biện pháp an ninh mật mã.

Các hương vị an ninh được thu xếp theo trật tự: cái nào ưa thích được xếp lên đầu. Vì các cách thức an ninh mang ý nghĩa hương vị, chỉ cần một cách thức hợp vị trong danh sách là được chấp nhận truy cập, dù các cách thức an ninh khác có thể thất bại. Thứ tự của tùy chọn sec= đối với các tùy chọn khác không thành vấn đề, trừ khi bạn muốn một số tùy chọn truy cập có hương vị riêng. Trong trường hợp đó bạn có thể đưa ra nhiều tùy chọn sec=, các tùy chọn truy cập phía sau chỉ được áp dụng đối với tùy chọn sec= đứng ngay trước nó. Chỉ những tùy chọn truy cập được thay đổi theo cách này là ro, rw, no_root_squash, root_squash, và all_squash.

Các tùy chọn chung

Một số tùy chọn thường dùng được liệt kê dưới đây:

  • rw

    Cho phép cả đọc và viết trên thư mục chia sẻ. Mặc định là tùy chọn ro (chỉ đọc), không cho phép bất cứ yêu cầu nào mà thay đổi hệ thống file.

  • async

    Tùy chọn này cho phép máy chủ NFS vi phạm giao thức NFS và trả lời các yêu cầu trước khi bất kỳ thay đổi nào được thực hiện bởi yêu cầu đó đã được cam kết tới lưu trữ ổn định (ví dụ ổ đĩa).

    Tùy chọn này thường cải thiện tốc độ thực hiện, nhưng với phí tổn kèm theo khi máy chủ khởi động lại không sạch (bị sập), có thể gây mất hoặc hỏng dữ liệu.

  • sync

    Đáp lại yêu cầu chỉ sau khi các thay đổi đã được cam kết tới lưu trữ ổn định.

  • no_subtree_check

    Tùy chọn này vô hiệu hóa việc kiểm tra cây con, có ảnh hưởng bảo mật nhẹ, nhưng lại cải thiện độ tin cậy trong một số trường hợp.

    Kiểm tra cây con được tiến hành như sau: nếu một thư mục con của một hệ thống file được xuất ra, nhưng toàn bộ hệ thống file không xuất, thì bất cứ khi nào một yêu cầu NFS đi tới, máy chủ phải kiểm tra xem, không chỉ file được truy cập có ở trong hệ thống file thích hợp hay không mà còn phải xem xem nó có ở trong cây xuất khẩu hay không.

    Kiểm tra cây con có thể gây vấn đề truy cập các file mà bị đổi tên trong khi một khách đã mở chúng.

    Kiểm tra cây con cũng được sử dụng để đảm bảo rằng các file bên trong thư mục mà chỉ root có quyền truy cập, sẽ chỉ truy cập được nếu hệ thống file được xuất khẩu với no_root_squash (xem bên dưới), ngay cả khi chính file đó cho phép truy cập nhiều hơn.

    Về khía cạnh thực hành, một hệ thống file thư mục home (/home, không phải thư mục nhà của một người sử dụng nào đó) mà thường được xuất khẩu toàn bộ hệ thống file và hay thay đổi tên file, thì nên được xuất khẩu với no_subtree_check. Một hệ thống file mà hầu như chỉ đọc và ít thay đổi tên file (ví dụ /usr), trong đó các thư mục con có thể xuất khẩu thì hầu như chắc chắn nên xuất khẩu với subtree_check.

    Mặc định là no_subtree_check. Tuy nhiên, bạn cần đặt tường minh no_subtree_check hoặc subtree_check, nếu không, NFS (chương trình exportfs) sẽ gửi một thông điệp cảnh báo.

Ánh xạ định danh người sử dụng

NFS điều khiển truy cập các file trên máy chủ dựa trên uid và gid được cung cấp trong mỗi yêu cầu NFS từ xa. Bình thường những người sử dụng mong muốn truy cập các file trên máy chủ cũng giống như trên hệ thống file cục bộ của họ. Muốn vậy thì các uid và gid trên máy khách và máy chủ phải giống nhau. Nhưng trong ngữ cảnh mạng, máy khách truy cập tùy ý các file trên máy chủ là không an toàn. Do đó định danh của người sử dụng root (là 0) trên máy khách cần được ánh xạ tới giá trị khác, thường là uid nặc danh hoặc nobody (uid của người sử dụng nobody trên Omarine 3.0 là 99). Chế độ hoạt động này là mặc định, gọi là root squashing, và có thể được tắt với no_root_squash.

Theo mặc định, NFS chọn uid và gid là 65534 cho truy cập squashing. Các giá trị này có thể được ghi đè với các tùy chọn anonuid và anongid. Bạn cũng có thể ánh xạ tất cả các yêu cầu người sử dụng tới uid nặc danh bằng cách chỉ ra tùy chọn all_squash.

Danh sách đầy đủ các tùy chọn ánh xạ như sau:

  • root_squash

    Ánh xạ uid/gid 0 tới uid/gid nặc danh. Tùy chọn này không áp dụng tới uid/gid nhạy cảm, chẳng hạn người sử dụng bin.

  • no_root_squash

    Tắt chế độ root squashing. Tùy chọn này chủ yếu hữu ích cho máy khách không có đĩa, muốn thao tác quan trị trực tiếp tới máy chủ.

  • all_squash

    Ánh xạ tất cả các uid và gid tới người sử dụng nặc danh. Hữu ích trong một vài tình huống, chẳng hạn đối với các thư mục ftp công cộng mà xuất khẩu NFS. Tùy chọn ngược lại là no_all_squash, là đặt mặc định.

  • anonuid và anongid

    Tùy chọn này đặt uid và gid một cách tường minh cho tài khoản nặc danh. Tùy chọn này chủ yếu hữu ích cho các khách PC/NFS, trong đó bạn có thể muốn tất cả các yêu cầu đều đến từ một người dùng. anonuid và anongid được đặt tới uid và gid của người dùng đó, và anh/chị ta có thể truy cập đọc-viết vào thư mục xuất khẩu trên máy chủ như thư mục nhà của mình trên mạng.

Các bảng xuất khẩu phụ

Sau khi đọc file /etc/exports, chương trình exportfs sẽ đọc các file trong thư mục /etc/exports.d như các bảng xuất khẩu phụ. Các file này cần có đuôi .exports. Các file bắt đầu với một dấu chấm (.) bị bỏ qua. Định dạng của các bảng phụ giống như /etc/exports.

Ví dụ

/               adm(rw,no_subtree_check,no_root_squash,sec=krb5p:krb5i)
/usr            *.local.domain(ro,subtree_check)
/home/emin      piggy(rw,no_subtree_check,all_squash,anonuid=1000,anongid=999)
/srv/httpd      -sync,rw,no_subtree_check server @trusted @external(ro)

Dòng đầu tiên xuất khẩu toàn bộ hệ thống file tới máy adm với truy cập đọc-viết và tắt chế độ root squashing, không kiểm tra cây con, hương vị an ninh ưa thích ở mức cao nhất. Dòng thứ hai xuất khẩu /usr chỉ đọc tới tất cả các máy trong miền local.domain và các miền con của nó, có kiểm tra cây con. Dòng thứ ba chỉ ra mục nhập cho khách PC/NFS, không kiểm tra cây con. Dòng thứ tư xuất khẩu thư mục /srv/httpd đọc-viết tới máy server và nhóm mạng @trusted, chỉ đọc tới nhóm mạng @external. Nhóm mạng @external có tùy chọn viết đè lên tùy chọn mặc định. Cả ba đều sử dụng đồng bộ file và không kiểm tra cây con.

Chạy server

server trong Omarine 3.0 được chạy với các lệnh sau:

systemctl enable nfs
systemctl start nfs

Nếu thay đổi cấu hình, bạn chạy lệnh dưới đây để áp dụng cấu hình mới:

systemctl restart nfs

Sử dụng phía khách

Máy khách piggy muốn truy cập thư mục trên máy chủ (giả sử tên là kale) như dòng thứ ba của ví dụ trên, có thể chạy lệnh sau:

sudo mount kale:/home/emin /mnt

Nếu muốn gắn hệ thống file tự động tại boot, bạn có thể thêm một dòng vào file /etc/fstab của máy khách như dưới đây:

kale:/home/emin    /mnt    nfs    rw,_netdev    0    0
Advertisements

Gửi phản hồi

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

%d bloggers like this: