Як я можу отримати доступ для читання / запису на частку NFS Synology NAS?


11

Я читав доступ лише до змонтованої загальної NFS.

Якщо в NAS не встановлено "відсутність сквош-карти", постійний користувач Ubuntu отримує Permission deniedпри спробі cdввійти в спільний доступ і отримати доступ для читання лише за допомогою sudo.
Використовуючи налаштування "карта всіх користувачів для адміністрування", звичайний клієнт може cdотримувати доступ до спільної доступу та лише читати. Використання sudoне дозволяє писати.


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

без сквош (без картографування)
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)

всі сквош (карта всіх користувачів для адміністратора)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)

Клієнт 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


(Я спочатку розмістив помилку, що використовуючи sudoвключений доступ для запису) Я можу відкрити файл у змонтованому спільному доступі до NFS, sudo vi /mnt/nfs/Files/Data/test.fileале не можу записати зміни у файл навіть із sudo. Повідомлення vi про помилку при :w!команді:
"test.file" E212: Can't open file for writing


NFS перевіряє дозволи доступу на ідентифікаційні дані користувачів (UID). UID користувача на вашій локальній машині повинен відповідати UID власника файлів, до яких намагається отримати доступ на сервері . Зайдіть на сервер і подивіться дозволи на файли. До якого UID (з’ясуйте id username) вони належать та які дозволи встановлені?
Nephente

Чи можете ви навіть cdперейти на гору як звичайний користувач? Якщо так, то пропоную наступне. Щоб підтвердити або спростувати мою підозру, виконайте наступне: На клієнті cdперейдіть на кріплення та зробіть ls -n. Тут буде вказано список власників файлів та груп із відповідними ідентифікаторами. Вам доведеться це зробити, sudoя думаю. Додайте до свого запитання рядок або два висновку разом із висновком id (ні sudo!) Якщо ви навіть не можете cdперейти на версію як звичайний користувач, вам доведеться перевірити дозволи редактора, на який ви експортуєте сервер.
Nephente

Я не міг cdувійти в версію як звичайний користувач. Використання сквош на сервері для примусового дозволу працює як тимчасове виправлення для надання дозволів. Дослідження дозволів сервера та id username.
marsilea

Дякую, я думаю, що було б краще використовувати nfs правильним способом, а не просто грубою силою за допомогою Squash: '
Позначте

Це залежить. Чи довіряєте ви клієнтам та користувачам? Якщо цього не зробити, NFSv3 зрештою не підходить, оскільки кожен, хто має кореневий доступ до клієнта, може підробляти UID. Якщо вам потрібна належна автентифікація, краще використовувати SMB. Автентифікація з NFSv4 вимагає запуску Kerberos, що є досить складним. Але, тим не менш, ваш результат мене бентежить ... Я припускаю, що це місце кріплення /mnt/nfs/Files. Хоча Filesналежить root, дозвіл дозволяє будь-кому робити що-небудь. Для мене немає сенсу, чому б ти не мав проблем із вступом до цього режисура як будь-якого користувача. Можливо, опублікуйте відповідний рядок /etc/exports?
Нефенте

Відповіді:


11

NFSv2 / 3 обробляє дозволи виключно на основі UID та GID. Дозволи файлів на сервері порівнюються з ідентифікаторами користувачів та груп клієнта. Ось чому NFSv <4 є незахищеним дизайном у середовищах, де користувачі мають кореневий доступ до клієнтських машин; У цьому випадку підробка UID є тривіальною.

Зауважте, що NFSv4 пропонує аутентифікацію клієнта та користувача через Kerberos5. Якщо потрібна автентифікація з ім'ям користувача та паролем, часто набагато простіше вдатися до Samba (SMB / CIFS) замість того, щоб налаштувати Kerberos, навіть у чистому середовищі Linux.

Для того, щоб по крайней мере , запобігти ескалації привілеїв суперкористувача, акції NFS експортується за замовчуванням з параметром root_squash, який буде зіставити всі прохання клієнта приходячи від root (uid=0, gid=0)до anonuidі anongid. Таку поведінку можна відмінити no_root_squash, надаючи кореневий доступ до експорту.

Тут ми бачимо ще один недолік. Щоб правильно функціонувати, NFS вимагає, щоб ви мали однаковий UID / GID на всіх машинах. Файли, до яких ви хочете отримати доступ, належать 1026і мають дозволи 755. Ви користувач у клієнта uid=1000. Ідентифікатори GID не збігаються, тому ви отримуєте лише світові дозволи. Отже, немає доступу до запису.

Щоб вирішити це, ви можете зробити одну з кількох речей:

  • У NAS змініть власника файлів на 1000. Вам може знадобитися створити саме цей обліковий запис. Як це вплине на інші служби, я не можу сказати.

  • Змініть UID вашого місцевого користувача на 1026.

  • Оскільки ви єдиний, хто має доступ до файлів на сервері, ви можете змусити сервер робити вигляд, що всі запити надходять із належного UID. Для цього NFS має можливість all_squash. Він повідомляє серверу зіставити весь запит на анонімного користувача, вказаний користувачем anonuid,anongid.

    Додайте опцію all_squash,anonuid=1026,anongid=100для експорту в /etc/exports.

Однак будьте обережні , оскільки це зробить власником цих файлів кожного, хто монтує експорт!

Якщо ви ділитесь своєю мережею з людьми та їх клієнтами, яким ви повністю не довіряєте, щоб не робити помилок зі своїми файлами, ви дійсно повинні вивчити метод обміну файлами, який пропонує аутентифікацію. На мою думку, Самба - це найпростіший спосіб досягти цього.


Я вибрав NFS, тому що думав, що це може мати переваги для Linux для Linux, так як я хотів би мати можливість резервного копіювання NAS за допомогою rsync на зовнішній USB-накопичувач на клієнті Ubuntu (DSM-система Synology не пропонує синхронізацію з USB-накопичувачем) , зберігаючи інформацію про право власності на файл та дозвіл. Ретельна відповідь та дякую за вказівки.
marsilea

0

Зробіть, showmount -e 10.1.1.214щоб переглянути варіанти експорту. Permission deniedпомилка надходить від самого сервера NFS. Спробуйте змінити варіант з rw,user,autoна defaults.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.