Как получить доступ на чтение / запись к общей папке 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)

all squash (отобразите всех пользователей на администратора)
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) они относятся и какие права доступа установлены?
Нефенте
Можете ли вы даже cdв монтирование как обычный пользователь? Если да, я предлагаю следующее. Чтобы подтвердить или опровергнуть мое подозрение, сделайте следующее: На клиенте cdв монтирование и сделайте ls -n. Это будет список владельцев файлов и групп с их соответствующими идентификаторами. Вы должны будете сделать это, sudoя думаю. Добавьте строку или две выходные данные к вашему вопросу вместе с выводом id (нет sudo!) Если вы не можете даже cdподключить монтирование как обычный пользователь, вам нужно будет проверить разрешения для каталога, на который вы экспортируете сервер.
Нефенте
Я не мог cdв гору как обычный пользователь. Использование Squash на сервере для принудительного разрешения разрешений работает как временное исправление для предоставления разрешений. Изучение разрешений сервера и id username.
Марсилия
Спасибо, я думаю, что было бы лучше использовать nfs правильным способом, а не просто перебором с помощью Squash: «Сопоставить всех пользователей с admin» на сервере ..
marsilea
По-разному. Вы доверяете клиентам и пользователям? Если вы этого не сделаете, NFSv3 в конце концов не подходит, так как любой, кто имеет root-доступ к клиенту, может подделать UID. Если вам нужна правильная аутентификация, вам лучше использовать SMB. Аутентификация с NFSv4 требует запуска Kerberos, что довольно сложно. Но тем не менее, ваш вывод сбивает меня с толку ... Я предполагаю, что точка монтирования есть /mnt/nfs/Files. Хотя Filesпринадлежит root, разрешение позволяет любому делать что угодно. Для меня не имеет смысла, почему у вас возникнут проблемы при входе в этот каталог, как у любого пользователя. Может опубликовать соответствующую строку от /etc/exports?
Нефенте

Ответы:

11

NFSv2 / 3 обрабатывает разрешения исключительно на основе UID и GID. Права доступа к файлам на сервере сопоставляются с идентификаторами пользователей и групп на клиенте. Вот почему NFSv <4 по своей конструкции небезопасен в средах, где пользователи имеют root-доступ к клиентским машинам; Подмена UID в этом случае тривиальна.

Обратите внимание, что NFSv4 предлагает аутентификацию клиента и пользователя через Kerberos5. Если требуется аутентификация с использованием имени пользователя и пароля, зачастую гораздо проще прибегнуть к Samba (SMB / CIFS) вместо настройки Kerberos даже в средах с чистым Linux.

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

Здесь мы видим еще один недостаток. Для правильной работы 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.

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

Если вы делитесь своей сетью с людьми и их клиентами, которым вы полностью не доверяете, чтобы не навредить вашим файлам, вам действительно следует изучить метод обмена файлами, который предлагает аутентификацию. На мой взгляд, Samba - самый простой способ достичь этого.

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

Делать, showmount -e 10.1.1.214чтобы увидеть варианты экспорта. Permission deniedошибка исходит от самого сервера NFS. Попробуйте изменить вариант с rw,user,autoна defaults.

Мухаммед Айзуддин
источник