Як я можу зробити відображення UID NFSv4 для систем з невідповідністю UID?


11

Я працюю в лабораторії з трьома системами Ubuntu, і я хотів би перекреслити деякі файлові системи через NFS. Однак, хоча системи мають одні і ті ж імена користувачів, UID та GID не відповідають, оскільки три системи були налаштовані окремо. Коли я монтую файлову систему NFS з однієї системи в іншу, право власності виявляється неправильним. Наприклад, якщо UID 1000 є alice на server1, а той самий UID, 1000, є bob на server2, тоді, коли server1 монтує експортовану файлову систему server2, файли bob виявляються у власності alice.

Так чи є спосіб змусити NFS (v4) конвертувати UID між серверами через пов'язані з ними імена користувачів? Гуглюючи для цього, я бачив багато посилань на Kerberos, LDAP або NIS, що здається масовим надмірним набором для такого простого завдання, і це може бути неможливим, оскільки ці системи не керуються централізовано. Здається, це посилання вказує на те, що те, що я прошу, неможливо. Це правильно?

Редагувати: Я намагався будь-яку конфігурацію, /etc/idmapd.confяку я можу придумати або знайти в Інтернеті, і хоча процес idmapd явно працює, досі я не бачив жодних доказів того, що NFS робить будь-яку спробу використовувати її, і він ніколи не мав жодного ефекту на повідомлення користувача про монтажі NFS.


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

Так, саме це я нарешті і зробив.
Райан Ч. Томпсон

Відповіді:


5

Без централізованого адміністрування користувачів "найкращий" спосіб, який я бачу, - це змусити всіх серверів використовувати однаковий GID та UID для кожного користувача. Тепер ... я говорю лише про файли та / або каталоги.

Що я б робив у цьому випадку:

  • Зареєструйте кожен UID та GID, який зараз використовується.
  • Редагування /etc/passwdі /etc/groupі відповідають групам на всіх серверах. Переважно до нових UID та GID, тому наступний крок буде швидшим
  • Виконайте це (це займе певний час):

    find / -group <OLD_GID> -exec chgrp <NEW_GID> '{}' \+
    find / -user  <OLD_UID> -exec chown <NEW_UID> '{}' \+
    

Гмммм, оператор «знайти» починається з кореневого каталогу. Команда змінює право власності на кожен каталог у системі. Запропоновані зміни до цих команд включатимуть кожен файл у системі. Я пропоную вам обмежити, до яких каталогів працює ця команда, або у вас буде дуже поганий день.

2
Від find man: -group gname Істинно, якщо файл належить до імені групи. Якщо gname є числовим і не відображається в базі даних групи (4), воно приймається як ідентифікатор групи.
BitsOfNix

1

NFSv4 підтримує ідентифікацію ідентифікаторів. Якщо включено, NFS буде передавати імена користувачів замість числових ідентифікаторів. Хости, що мають різний числовий uid для одного користувача, не є проблемою, оскільки імена користувачів відображаються на uids на хості.

Повторне відображення завжди використовується в режимах безпеки Kerberos ( sec=krb5).

Повторне відображення також можна використовувати в режимі AUTH_UNIX (за замовчуванням sec=sys). Я пояснив деталі конфігурації у відповідь на: Як змусити NFSv4 idmap працювати з sec = sys .

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