LINUX.ORG.RU

Маппинг uid и gid при монтировании nfs

 ,


1

3

Всем привет!

Имеется NAS с расшареными по nfs каталогами. Имеется десктоп (а точнее несколько), который эти шары монтирует. Проблема в том, что uid и gid на NAS и на десктопе не совпадают.

Как можно сделать маппинг uid и gid при работа с nfs?

До. информация:
- Gentoo (к вопросу о конфигах, но по идее от дистра не должно силно зависеть)
- nfs3, но, если нужно, могу включить nfs4.
- монтирую на десктопе так:

$ cat /etc/fstab | grep nfs
1.2.3.4:/volume/dir    /mnt/mountpoint nfs     rw,users,noauto,_netdev 0 0
- На клиенте запущен /etc/init.d/rpc.statd , прописан fstab, больше ничего не настраивал.

★★★★★

Я увидел в /etc файл idmapd.conf, он длинный и хорошо комментированный. Как я понял, там прописывается, дословно, маппинг gid и uid.

А ещё увидел rpc.idmapd.
man idmapd:

NAME
     rpc.idmapd — NFSv4 ID <-> Name Mapper
...
Сам я нуб полный, потому и комментарий такой неподробный.

yura_ts ★★ ()
Последнее исправление: yura_ts (всего исправлений: 2)
Ответ на: комментарий от yura_ts

Я это видел. Но там 10000 нюансов. В и-нете везде рядом упоминается nfs4, LDAP - непонятно нужно ли оно, потом там несколько translation методов, потом есть конфиг на сервере и на клиенте и т. п. Ни одного хотябы близкого конфига я не нашел кроме маппанга nobody, но там другое. Вот я и думаю, наверняка кто-то сталкивался.

Kroz ★★★★★ ()
Ответ на: комментарий от yura_ts

P. S.

$ rpc.idmapd -f -vvv
rpc.idmapd: libnfsidmap: Unable to determine the NFSv4 domain; Using 'localdomain' as the NFSv4 domain which means UIDs will be mapped to the 'Nobody-User' user defined in /etc/idmapd.conf

rpc.idmapd: libnfsidmap: using (default) domain: localdomain
rpc.idmapd: libnfsidmap: Realms list: 'LOCALDOMAIN' 
rpc.idmapd: libnfsidmap: loaded plugin /usr/lib/libnfsidmap/nsswitch.so for method nsswitch

rpc.idmapd: Expiration time is 600 seconds.
rpc.idmapd: nfsdopenone: Opening /proc/net/rpc/nfs4.nametoid/channel failed: errno 2 (No such file or directory)
rpc.idmapd: main: open(/var/lib/nfs/rpc_pipefs//nfs): No such file or directory

Kroz ★★★★★ ()

Так...
Если на сервере включить nfs4, то все файлы видятся на клиенте как root:root. Если выключить nfs4 (оставить nfs3), то на клиенте все файлы 1024:users . На сервер эти файлы admin:users . Ерунда какая-то...

Kroz ★★★★★ ()

DNS-домен у всех машин должен быть одинаковым иначе он должен быть настроен одинаковым в idmapd.conf

Далее, как ты будешь соблюдать консистентноть uid-ов - дело твоё. Если у тебя 3,5 клиента и 1 сервер - можно всё синхронизировать руками. Если больше - без LDAP и/или Kerberos будет туго.

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Далее, как ты будешь соблюдать консистентноть uid-ов - дело твоё. Если у тебя 3,5 клиента и 1 сервер - можно всё синхронизировать руками. Если больше - без LDAP и/или Kerberos будет туго.

Так, погоди.
Зачем нужен idmapd? Если я правильно понял, то он делает соответствие uid1@host1 <=> uid2@host2. Если так, то должно быть все равно какие у меня ID на своей машине и на удаленной. На своей машине я просто указываю, что, при подключении серверу host2 транслируй его uid=1003 (который соответствует там пользователю vasya) в 1001 (который соответствует здесь пользователю vasya). То есть это должно избавить от необходимости синхронизировать uid между машинами. Или как?

Kroz ★★★★★ ()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от Kroz

Если я правильно понял, то он делает соответствие uid1@host1 <=> uid2@host2

Да, если ты предоставишь ему карту соответствий. По умолчанию он маппит удаленного юзера ololo в локального юзера ololo. UID-ы у них могут быть разные, а имя должно быть одинаковое.

Все что сложнее этого требует карту маппинга. Откуда ты ее достанешь: пропишешь локально - static, предоставишь напрямую из ldap - umich_ldap, или доставишь через nsswitch - дело твоё.

То есть если юзера ololo локально у тебя на машине нет и карты маппинга тоже - то будет пичалька.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Kroz

решил проблему за 15 минут.
* на сервере и клиентах установить libnss-extrausers, поправить /etc/nsswitch.com как в README
* на сервере вынести всех юзеров из /etc/{passwd,group,shadow}, в /var/lib/extrausers/{passwd,group,shadow}; на клиенте просто удалить юзеров из /etc/{passwd,group,shadow}
* на сервере расшарить /var/lib/extrausers/ , на клиентах подмонтировать
* юзеров создавать на сервере, редактируя оные 3 файла
* PROFIT!

Bers666 ★★★★★ ()
Ответ на: комментарий от Bers666

На CentOS не получилось сделать такую манипуляцию. Система не видит юзеров из /var/lib/extrausers/

Sargas ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.