Почему root на одном компьютере не может сменить содержимое, смонтированное nfs, на другом компьютере?

14

На моем сервере NFS определен следующий экспорт:

#NFS exports Database
/shared -alldirs -network=192.168.1 -mask=255.255.255.0

На моем клиенте NFS:

192.168.1.7:/shared /shared nfs rw 0 0

Очевидно, что как root на сервере я могу делать все, что захочу. На клиенте мой обычный пользователь 'gabe' может вносить изменения в монтирование nfs (при условии, что у меня есть разрешения), но root не может.

Как мой постоянный пользователь:

gabe@client$ cd /shared
gabe@client$ ls -l
total 8
drwxrwxrwx  4 gabe  wheel   512 Mar 20 19:20 tmp
gabe@client$ cd tmp
gabe@client$ touch test.txt
gabe@client$ rm test.txt

Как корень:

# cd /shared/tmp
# touch test.txt
touch: test.txt: Permission denied

Опять же, это все на стороне клиента NFS , и я подозреваю, что, возможно, это как-то связано с опцией -maproot. Это первый раз, когда я настраиваю NFS, и я только что заметил эту особенность. Сейчас я собираюсь немного почитать, чтобы узнать, смогу ли я это выяснить, но если у кого-то есть понимание, я был бы признателен.

Гейб.
источник

Ответы:

18

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

Поэтому NFS обрабатывает root специально. По умолчанию root сопоставляется с nobodyпользователем, который обычно не имеет доступа для записи. -maprootОпция позволяет изменить способ обработки корня. BSD -maproot=rootсоответствует no_root_squashварианту Linux .

CJM
источник
Да, в самом деле. Это исправило мою проблему. Страница man, которую я читал, была немного загадочной (или, насколько я понимаю,) относительно того, что именно сделал maproot. Благодарность!
таращиться
Еще один нуб здесь. Мне было интересно, если вы, ребята, знаете способ узнать, настроен ли диск NFS для использования этой -maprootопции, не имея доступа к серверу NFS.
Джон
@ Джон, это достаточно отличается, поэтому вы должны задать новый вопрос вместо добавления комментария.
CJM
5

Это обычное поведение с традиционными реализациями NFS. Отображения пользователей NFS выполняются независимо от контекста, поэтому все обращения корневого клиента должны быть сопоставлены конкретному пользователю (обычно nobodyпо умолчанию). Отсюда и странное поведение, когда корень клиента не может получить доступ к вашим файлам напрямую, но может su gabeполучить к ним доступ.

(«Последние» версии NFS, то есть NFSv4 и, возможно, NFSv3, разрешают более разумное поведение, если поддерживаются обеими сторонами, но я не знаю деталей.)

Жиль "ТАК - перестань быть злым"
источник