Сетевое монтирование NFS: установите владельца для определенной учетной записи

Хорошо, я серьезно запутался в этих вещах, поэтому действительно описательные ответы будут оценены, особенно если они сделают весь этот монтажный материал менее волшебным и более предсказуемым.

Я пытаюсь смонтировать свой NAS Drobo-FS с помощью nfs, чтобы получить лучшую производительность, чем с cifs.

На дробо работает какой-то урезанный дистрибутив Linux.

Внутри /etc/fstab на клиентской машине (Ubuntu с IP: 192.168.1.150)

# Mount Drobo
192.168.1.100:/mnt/DroboFS/Shares/public /media/drobonfs nfs rw,soft,proto=tcp,users 0 0

У меня на дробо установлен unfsd и доступ по ssh. Это файл экспорта на серверной машине (Drobo-FS с IP 192.168.1.100):

# Allow access for client machine
/mnt/DroboFS/Shares 192.168.1.150(rw,no_root_squash)

Монтирование работает нормально, за исключением того, что все смонтированные файлы принадлежат пользователю root, а для большинства файлов установлены права доступа 744. Права доступа к файлам, показанные при монтировании на клиенте, соответствуют фактическим разрешениям на сервере. Например:

client$ sudo chmod 123 /media/drobonfs/somefile
client$ ls -l /media/drobonfs/somefile
---x-w--wx 1 root root 0 2012-01-04 14:15 /media/drobonfs/somefile

drobo$ ls -l /mnt/DroboFS/Shares/public/somefile
---x-w--wx    1 root     root            0 Jan  4 14:15 /mnt/DroboFS/Shares/public/somefile

Написание sudo перед каждой командой — это перетаскивание, и я хочу понять, что происходит, так что я могу сделать, чтобы смонтировать его на клиентской машине с владельцем/группой, установленной для моей учетной записи, а не root?


person Matthew    schedule 04.01.2012    source источник


Ответы (3)


При подключении общего ресурса идентификатор пользователя (UID) хост-системы сопоставляется с идентификатором пользователя (UID) клиента.

На клиенте сопоставленный пользователь (на основе идентификатора пользователя) станет владельцем подключенного общего ресурса.

Ваша проблема вызвана тем, что хост использует другой UID, чем клиент.

Вы можете решить эту проблему, определив файл /etc/nfs.map:

/etc/nfs.map

Это будет выглядеть так:

# remote local gid 500 1000 # drobo client uid 500 2003 # drobo client

Поэтому при использовании NFS вам необходимо убедиться, что между пользователями хоста и клиента совпадают UID/GID. Прочтите также следующую статью: http://www.kernelcrash.com/blog/nfs-uidgid-mapping/2007/09/10/

Еще один отличный способ решить эту проблему - просмотреть UID как на хосте, так и на клиенте, просмотрев этот файл /etc/passwd в обеих системах.

или набрав:

id tom

изменить UID с помощью:

usermod -u 10000 tom

Удачи!

person Pieter1973    schedule 04.01.2015
comment
map_static, предназначенный для настройки nfs.map, не распознается на centos 7 x86_64 с установленным по умолчанию nfs-сервером. unknown keyword "map_static=/etc/nfs.map" - person Nick Dong; 27.05.2017
comment
У меня работает изменение UID/GID, чтобы сервер и клиент имели одинаковый номер UID/GID. linux-change-uids-and-gids-for-user - person Nick Dong; 27.05.2017

Похоже, это должно работать при экспорте на Drobo:

/mnt/DroboFS/Shares 192.168.1.150(rw,all_squash,anonuid=NNN)

где NNN — ваш числовой идентификатор пользователя на клиенте.

person Kyle Jones    schedule 05.01.2012
comment
К сожалению, нет, это не сработало. Он все еще монтировался, но владелец/группа по-прежнему были установлены как root. - person Matthew; 06.01.2012

Измените /etc/exports на:

/mnt/DroboFS/Shares 192.168.1.150(rw,insecure)

а затем на сервере NFS запустите:

$ sudo exportfs -a

Теперь, когда вы монтируете каталог как пользователь без полномочий root на клиенте NFS, он будет монтироваться с соответствующим владельцем и группой.

person Adrian    schedule 14.01.2014
comment
Почему здесь должен помочь вариант insecure...? - person some-non-descript-user; 18.01.2016