Làm cách nào tôi có thể có quyền truy cập đọc / ghi vào chia sẻ NFS của Synology NAS?


11

Tôi chỉ đọc quyền truy cập vào chia sẻ NFS được gắn kết.

Với 'không có ánh xạ squash' được đặt trên NAS, người dùng Ubuntu thường nhận được Permission deniedkhi cố gắng cdchia sẻ và chỉ có thể có quyền truy cập đọc bằng cách sử dụng sudo.
Sử dụng squash 'ánh xạ tất cả người dùng vào cài đặt của quản trị viên, người dùng thông thường của khách hàng có thể cdvào và chỉ đọc quyền truy cập vào chia sẻ. Sử dụng sudokhông cho phép viết.


Synology NAS:
DS214> id username
uid=1026(username) gid=100(users) groups=100(users),101(administration)

không bí (không ánh xạ)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)

all squash (ánh xạ tất cả người dùng vào admin)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)

Máy khách Ubuntu:
$ cat /etc/fstab
10.1.1.214:/volume1/Files /mnt/nfs/Files nfs rw,user,auto 0 0

$ id username
uid=1000 gid=1000(username) groups=1000(username), <etc>

$ ls -n /mnt/nfs
drwxrwxrwx 9 0 0 4096 Sep 25 01:28 Files

$ ls -n /mnt/nfs/Files
drwxr-xr-x 11 1026 100 4096 Sep 24 22:05 Data


(Ban đầu tôi đã đăng lỗi do sử dụng sudoquyền truy cập ghi) Tôi có thể mở tệp trong chia sẻ NFS được gắn với sudo vi /mnt/nfs/Files/Data/test.filenhưng không thể ghi các thay đổi vào tệp ngay cả với sudo. Thông báo lỗi vi khi :w!lệnh là:
"test.file" E212: Can't open file for writing


NFS kiểm tra quyền truy cập đối với id người dùng (UID). UID của người dùng trên máy cục bộ của bạn cần khớp với UID của chủ sở hữu các tệp mà bạn đang cố truy cập trên máy chủ . Đi đến máy chủ và xem các quyền của tập tin. Những UID nào (tìm hiểu với id username) chúng thuộc về và quyền nào được đặt?
Nepeavere

Bạn thậm chí có thể cdvào mount như một người dùng thông thường? Nếu có, tôi đề nghị như sau. Để xác nhận hoặc bác bỏ sự nghi ngờ của tôi, hãy làm như sau: Trên máy khách cdvào mount và làm ls -n. Điều đó sẽ liệt kê chủ sở hữu tệp và nhóm với ID tương ứng của họ. Bạn sẽ phải làm điều đó với sudotôi đoán. Nối một hoặc hai dòng đầu ra cho câu hỏi của bạn, cùng với đầu ra của id (không sudo!) Nếu bạn thậm chí không thể cdgắn kết như một người dùng thông thường, bạn sẽ phải kiểm tra các quyền của thư mục bạn đang xuất trên máy chủ.
Nepeavere

Tôi không thể cdvào mount như một người dùng thông thường. Sử dụng Squash trên máy chủ để buộc các quyền hoạt động như một sửa chữa tạm thời để cấp quyền. Điều tra quyền máy chủ và id username.
đầm lầy

Cảm ơn, tôi nghĩ sẽ tốt hơn nếu sử dụng nfs đúng cách thay vì chỉ dùng vũ lực với Squash: 'Ánh
xạ

Nó phụ thuộc. Bạn có tin tưởng khách hàng và người dùng? Nếu bạn không, NFSv3 hoàn toàn không phù hợp, vì bất kỳ ai có quyền truy cập root vào máy khách, đều có thể giả mạo UID. Nếu bạn cần xác thực phù hợp, bạn nên sử dụng SMB. Xác thực với NFSv4 yêu cầu chạy Kerberos khá phức tạp. Nhưng tuy nhiên, đầu ra của bạn gây trở ngại cho tôi ... Tôi giả sử điểm gắn kết là /mnt/nfs/Files. Mặc dù Filesthuộc về root, cho phép bất cứ ai để làm bất cứ điều gì. Không có nghĩa gì với tôi tại sao bạn gặp khó khăn khi nhập thư mục đó với tư cách là bất kỳ người dùng nào. Có thể gửi các dòng có liên quan từ /etc/exports?
Nepeavere

Câu trả lời:


11

NFSv2 / 3 xử lý các quyền chỉ dựa trên UID và GID. Quyền truy cập tệp trên máy chủ được đối sánh với id người dùng và nhóm trên máy khách. Đó là lý do tại sao NFSv <4 không an toàn trong thiết kế trong môi trường nơi người dùng có quyền truy cập root vào máy khách; Giả mạo UID là tầm thường trong trường hợp đó.

Lưu ý rằng NFSv4 cung cấp xác thực ứng dụng khách và người dùng thông qua Kerberos5. Nếu cần xác thực bằng tên người dùng và mật khẩu, mặc dù việc sử dụng Samba (SMB / CIFS) thường dễ dàng hơn nhiều so với việc thiết lập Kerberos, ngay cả trong môi trường Linux thuần túy.

Để ít nhất ngăn chặn sự leo thang đặc quyền root, chia sẻ NFS được xuất khẩu theo mặc định với tùy chọn root_squash, mà sẽ lập bản đồ tất cả các yêu cầu của khách hàng đến từ root (uid=0, gid=0)đến anonuidanongid. Hành vi này có thể được ghi đè bằng no_root_squash, cấp quyền truy cập root cho xuất.

Ở đây, chúng ta thấy một nhược điểm khác. Để hoạt động chính xác, NFS về cơ bản yêu cầu bạn phải có cùng UID / GID trên tất cả các máy. Các tệp bạn muốn truy cập thuộc 1026và có quyền 755. Bạn là người dùng trên máy khách uid=1000. Các GID không khớp, vì vậy bạn chỉ nhận được quyền trên thế giới. Do đó không có quyền truy cập ghi.

Để giải quyết vấn đề này, bạn có thể thực hiện một trong nhiều điều sau:

  • Trên NAS, thay đổi chủ sở hữu của các tệp thành 1000. Bạn có thể cần phải tạo tài khoản cụ thể đó. Làm thế nào điều này sẽ ảnh hưởng đến các dịch vụ khác, tôi không thể nói.

  • Thay đổi UID của người dùng cục bộ của bạn thành 1026.

  • Vì bạn là người duy nhất truy cập các tệp trên máy chủ, bạn có thể khiến máy chủ giả vờ rằng tất cả yêu cầu đến từ UID thích hợp. Cho rằng, NFS có tùy chọn all_squash. Nó báo cho máy chủ ánh xạ tất cả yêu cầu tới người dùng ẩn danh, được chỉ định bởi anonuid,anongid.

    Thêm các tùy chọn all_squash,anonuid=1026,anongid=100để xuất trong /etc/exports.

Mặc dù vậy, hãy thận trọng , vì điều này sẽ khiến bất cứ ai gắn kết xuất khẩu trở thành chủ sở hữu của các tệp đó một cách hiệu quả!

Nếu bạn chia sẻ mạng của mình với mọi người và khách hàng của họ mà bạn không tin tưởng hoàn toàn để không gây ra sự nghịch ngợm với các tệp của mình, bạn thực sự nên xem xét một phương pháp chia sẻ tệp cung cấp xác thực. Theo tôi, Samba là cách dễ nhất để đạt được điều đó.


Tôi đã chọn NFS vì tôi nghĩ rằng nó có thể có lợi thế cho Linux sang Linux, vì tôi muốn có thể sao lưu NAS bằng rsync vào ổ USB ngoài trên máy khách Ubuntu (hệ thống DSM của Synology không cung cấp đồng bộ hóa với ổ USB) , trong khi giữ quyền sở hữu tập tin và thông tin cho phép. Một câu trả lời thấu đáo, và cảm ơn đã hướng dẫn.
marsilea

0

Làm showmount -e 10.1.1.214để xem các tùy chọn xuất khẩu. Permission deniedlỗi đến từ chính máy chủ NFS. Cố gắng thay đổi tùy chọn từ rw,user,autosang defaults.

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.