Murz 17.06.2009 18:36
Есть вопрос! — Настройка общей папки nfs с правами записи для всех
Имеется сеть из 8 компьютеров и 1 сервера (Debian). На каждом из компьютеров стоит Linux (Kubuntu 9.04) и прописаны какие-то пользователи, т.е. общей авторизации через сервак нет. Итого для юзера Murz на одном компе может быть uid 1002, на другом - 1007.Требуется: подмонтировать всем 1 общую папку, чтобы каждый имел полные права на все файлы в ней, т.е. чтение и запись, т.е. один создал новый файл, сохранил, а другой - может поправить.
Всё это конешно может и проще решить через Samba, но это вроде как не unix-way, да и пишут что nfs более удобен и надёжен в данном случае.
Пока добился того, что папка видна всем с правами на чтение и запись, но владельцем файлов является "левый" юзер, а надо бы чтобы владельцем был именно тот, кто сейчас читает файл.
На сервере прописано в /etc/exports:
1 |
|
На клиентах подключаю так в /etc/fstab:
1 |
|
Но в итоге на подключенной папке я вижу "левого" владельца, uid которого совпадает с uid юзера на текущем компе.
Т.е., например, на сервере у пользователя murz uid=1002.
На клиенте - uid=1002 - юзер vasya. А пытается записать в папку юзер petya с uid=1001. В итоге открываешь файл из папки, например OpenOffice-ом, он его читает а сохранить не может. Но зато можно сохранить в свою папку и потом ручками скопировать поверх старого.
Я вижу 2 пути выхода из данной проблемы:
1. Сделать чтобы все файлы всегда в этой папке создавались с правами записи для группы.
2. Заставить nfs-клиента подменять владельца файла на текущего владельца.
Но оба способа никак не заработают, т.к. не найду подходящих опций для nfs.
Поэтому прошу сообщество заспамить меня советами ;)
В первом варианте получится бардак из владельцев файлов, т.к. nfs работает с uid, а на сервере и на клиентах не совпадают эти uid у пользователей, т.е. создал файл Федя, а на серваке владельцем станет Вася. Так что тоже не особо незаплаточное решение.
Самое правильное из решений - сделать общую базу пользователей и аутентификацию через сервак, но проблема в том что у каждого компьютер свой и владельцы не захотят авторизовываться через сервак.
А вот где и как NFS может подменять или допроставлять права на файлы - я рылся долго, но ничего не нашёл.
Самое правильное из решений - сделать общую базу пользователей и аутентификацию через сервак, но проблема в том что у каждого компьютер свой и владельцы не захотят авторизовываться через сервак.
А вот где и как NFS может подменять или допроставлять права на файлы - я рылся долго, но ничего не нашёл.
Про acl тема была вот эта: http://welinux.ru/post/372/
Но в ней в итоге после всего сказанного остается та же проблема, цитирую:
Так что если найдётся решение через ACL, то оно поможет обоим топикам ;)
Но в ней в итоге после всего сказанного остается та же проблема, цитирую:
Вроде все, за исключением одного НО. Права автоматически не назначаются на копируемые и перемещаемые файлы. Я так и не смог разобраться почему. Похоже что так просто задумано.
Так что если найдётся решение через ACL, то оно поможет обоим топикам ;)
а нельзя сделать фиктивного сетевого юзера, права которого автоматом имеют все юзеры сети?
да, и самба - говно и не тру.
да, и самба - говно и не тру.
Ну фиксированный юзер уже впринципе есть на системах, например root или nobody, у всех систем (по крайней мере если дистриб из одной и той же ветки) uid этих пользователей должен совпадать.
Остается только как-то заставить систему чтобы активный пользователь мог читать, писать и создавать файлы с правами этого юзера. Не заставишь же всех сидеть под nobody ради общей шары :)
Остается только как-то заставить систему чтобы активный пользователь мог читать, писать и создавать файлы с правами этого юзера. Не заставишь же всех сидеть под nobody ради общей шары :)
nobody и рута как-то ну просто неправильно совсем было бы использовать
Строка из фалй аexports, приведённая Вами подменяет uid и gid только если удалённый пользователь - это root. Т.е. в данной конфигурации надо сдлеать так, чтобы в сеть все клиенты выходили от имени root'а(к примеру, поиграться на клиентских машинах с sudo). Но есть опция all_squash, которая должна подменять любые uid/gid на анонимный. Правда, это вариант я не проверял ни разу.
Ну а вообще, самый правильный способ - это, конечно централизованная аутентификация.
Ну а вообще, самый правильный способ - это, конечно централизованная аутентификация.
А первый путь как раз самый что ни на есть "unix-way". Нефиг на зверьё заморачиваться -- сразу пачками рулить надо.
Думаю, и этим оптимизация не закончится. Самому лень щас копать, но NFS должен что-то подобное уметь сам.