Linux NFS tworzy maskę i wymusza równoważność użytkownika

11

Mam dwa serwery Linux:

serwer plików
Debian 5.0.3 (2.6.26-2-686)
Samba wersja 3.4.2

apache
Ubuntu 10.04 LTS (2.6.32-23-generic)
Apache 2.2.14

Mam wiele udziałów Samby na serwerze plików, dzięki czemu mogę uzyskać dostęp do plików z komputerów z systemem Windows. Eksportuję również /data/www-datana serwer Apache , gdzie mam go zamontowany jako /var/www.

Konfiguracja jest w porządku, z wyjątkiem sytuacji, gdy przychodzę tworzyć pliki na podstawie NFS. W rezultacie otrzymuję pliki, których Apache nie może odczytać lub których inni użytkownicy w moim systemie nie mogą modyfikować.

Z Sambą, mogę określić force user, force group, create maski directory mask, a to gwarantuje, że wszystkie pliki zostały utworzone z odpowiednimi uprawnieniami do mojego serwera WWW Apache. Nie mogę znaleźć sposobu, aby to zrobić za pomocą NFS. Czy istnieje sposób wymuszenia uprawnień i własności w NFS - czy brakuje mi czegoś oczywistego?

Mimo, że spędziłem sporo czasu z Linuksem i odsuwam się od systemu Windows, nadal nie mam do czynienia z uprawnieniami Linuksa ... Jeśli nie jest to właściwy sposób na zrobienie czegoś, jestem otwarty na alternatywne sugestie.

Mikrofon
źródło

Odpowiedzi:

12

Biorąc pod uwagę, że pochodzisz z systemu Windows, przekonasz się, że NFS jest .... inny.

Problem, na który napotykasz, jest dość powszechny. NFS przekazuje UID i GID plików / katalogów tam iz powrotem między komputerami przy założeniu, że identyfikatory użytkownika i grupy są identycznie odwzorowane na obu . Oznacza to, że można uzyskać sytuację, w której identyfikator UID / GID na serwerze jest przekazywany z powrotem do klienta NFS, ale nie można go dopasować do klienta /etc/passwdlub /etc/group, co oznacza brak dostępu.

W (odległej) przeszłości było to współorganizowane z NIS i NIS +, chociaż istnieją inne schematy, które zostały włączone do tego frameworka (jednym z nich jest Winbind Samby). Wymaga to jednak centralnego serwera ID, a następnie wielu uprawnień do ręcznego ustawiania.

Istnieją różne sposoby rozwiązania tego problemu, ale najtańszym / najszybszym jest utworzenie grupy o tym samym numerze identyfikacyjnym grupy na obu komputerach - powiedzmy, ID grupy 50000 - i ustawienie bitów grupy na serwerze plików, podczas dodawania odpowiedniego użytkownika do grupa na kliencie; następnie użyj uprawnień grupy do plików, aby kontrolować dostęp. Nie jest to świetne rozwiązanie, ale zadziała. Pamiętaj, że możesz mieć problemy z usługami, które jawnie zmieniają swoją grupę w czasie wykonywania (aka drop upublicznienia) i może być konieczna zmiana ustawienia kontrolującego, która grupa jest przyjmowana w czasie wykonywania, aby upewnić się, że jest to ta, którą utworzyłeś.

W przypadku plików przychodzących za pośrednictwem udziału Windows (aka Samba) po prostu wymuś, aby grupa była taka sama jak tworzony. W ten sposób wszystkie pliki automatycznie otrzymują „właściwy” identyfikator GID.

Avery Payne
źródło
Dziękuję za rozważaną odpowiedź. Przyjrzę się metodzie bitów grupowych i dam znać, jak sobie radzę.
Mike
Utworzyłem www-datagrupę na serwerze plików, przypisałem niezbędnych użytkowników, a następnie ustawiłem ten sam www-dataidentyfikator grupy na obu serwerach. Ustawiłem również bity grupy w /data/www-datafolderze za pomocą chmod -R g+s /var/www-data. Teraz działa idealnie. Dzięki za pomoc.
Mike
Miło to słyszeć!
Avery Payne,
Byłoby miło, gdyby NFS mógł to zrobić dla klientów Mac.
d -_- b
9

Możesz także skorzystać z all_squashopcji, która powoduje, że anonimowe (użytkownik i grupa) wszystkie eksportowane pliki i folder są dołączane do określonego identyfikatora GID i identyfikatora UID.

/data/www-data apache(rw,all_squash,anonuid=<your UID>,anongid=<your GID>,sync)

Problem polega na tym, że wszyscy użytkownicy na apacheserwerze zobaczą twój punkt montowania nobody nobodyjako użytkownik i grupa i mogą pisać w mount (ale tak czy inaczej, na serwerze Samba pliki zostaną utworzone jako <your UID>/ <your GID>).

Anthony O.
źródło
To rozwiązało mój problem!
Luciano Andress Martini