Linux NFS створює еквівалент маски та сили користувача


11

У мене є два сервери Linux:

файловий сервер
Debian 5.0.3 (2.6.26-2-686)
версія Samba 3.4.2

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

У мене є кілька файлів Samba на файловому сервері, щоб я мав доступ до файлів з комп'ютерів Windows. Я також експортую /data/www-dataна сервер apache , де він встановлений як /var/www.

Установка нормальна, за винятком випадків, коли я приходжу створювати файли на кріпленні NFS. Я закінчую файли, які Apache неможливо прочитати або які не можуть бути змінені іншими користувачами в моїй системі.

З Samba, я можу вказати force user, force group, create maskі directory mask, і це гарантує , що всі файли , створені з допомогою відповідних дозволів на моєму веб - сервері Apache. Я не можу знайти спосіб зробити це з NFS. Чи є спосіб застосувати дозволи та права власності на NFS - я пропускаю щось очевидне?

Хоча я витратив зовсім небагато часу на Linux і відмовлявся від Windows, я все ще не дуже впорався з дозволами Linux ... Якщо це не правильний спосіб робити речі, я відкритий для альтернативні пропозиції.

Відповіді:


12

З огляду на те, що ви приїжджаєте з Windows, ви побачите, що NFS .... відрізняється.

Проблема, з якою ви стикаєтесь, досить поширена. NFS передає UID та GID файлів / каталогів назад і назад між машинами з припущенням, що ідентифікатори користувача та групи відображаються однаково на обох . Це означає, що ви можете отримати ситуацію, коли UID / GID на сервері передається клієнту NFS, але він не може відповідати клієнту /etc/passwdабо /etc/group, що означає відсутність доступу.

У минулому (далекому) минулому це було узгоджено з NIS та NIS +, хоча є й інші схеми, які були вписані в цю рамку (одна з них Winband Samba). Однак для цього потрібен центральний сервер ідентифікаторів з подальшим дозволом на встановлення вручну.

Існують різні способи виправити це, але найдешевший / найшвидший - створити групу з однаковим ідентифікаційним номером групи на обох машинах - скажімо, груповий ідентифікатор 50000 - і встановити біти групи на файловому сервері, додаючи відповідного користувача до група на клієнта; потім використовуйте групові дозволи на файли, щоб контролювати доступ. Не чудове рішення, але воно спрацює. Зауважте, що у вас можуть виникнути проблеми з службами, які явно змінюють свою групу під час виконання (також пріпас privledge), і вам може знадобитися змінити налаштування, яке контролює, яку групу передбачають під час виконання, щоб переконатися, що вона створена вами.

Для тих файлів, які надходять через папку Windows (він же Samba), просто змушуйте групу бути такою ж, як та, яку ви створюєте. Таким чином всі файли автоматично отримують «правильний» GID.


Дякуємо за розглянуту відповідь. Я вивчу метод групових бітів, і я дам вам знати, як я дію.
Майк

Я створив www-dataгрупу на файловому сервері, призначив необхідних користувачів, а потім встановив однаковий www-dataідентифікатор групи на обох серверах. Я також встановив групу бітів у /data/www-dataпапці за допомогою chmod -R g+s /var/www-data. Зараз він ідеально працює. Спасибі за вашу допомогу.
Майк

Радий це чути!
Avery Payne

Було б добре, якби NFS могла це зробити для клієнтів Mac.
d -_- b

9

Ви також можете скористатися all_squashпараметром, який робить анонімним (користувач та група) всі експортовані файли та папки та додає їх до певного GID та UID.

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

Проблема в тому, що всі користувачі на apacheсервері побачать вашу точку монтажу nobody nobodyяк користувач та групу та зможуть писати на кріпленні (але все одно, на сервері Samba файли створюватимуться як <your UID>/ <your GID>).


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