Запитуючи і дратівливий запит пароля NFS


18

Вибачте за мовні помилки, які я допустив. Я намагаюся не допустити бродячого запитувати пароль, коли він змонтує спільні папки NFS:

 [server] Exporting NFS shared folders...
 Preparing to edit /etc/exports. Administrator privileges will be required...
 [sudo] password for timur: #!!!

Я червоний багато інтернет-ресурсів, таких як github та інші авторські публікації, але нічого не працює для мене ...

Я спробував інструкції знайдені тут . У мене немає глибоких знань із роботи з кліпами. Так хто-небудь міг дати правильне рішення для моєї проблеми?


Чи можу я просити прийняти відповідь зараз, коли це було висвітлено у документах Vagrant?
Тайтай

Перш за все, вам потрібно перевірити, чи nfs-serverвстановлена ​​на вашій машині служба .
Гамбіт

Відповіді:


32

Офіційні документи Vagrant тепер висвітлюють це: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

Вам потрібно додати записи до /etc/sudoersфайлу, а спосіб редагування - це набрати це в терміналі:sudo visudo

Введіть свій пароль і ви редагуєте файл. Ви хочете вставити ці рядки нижче (залежно від того, ви працюєте Vagrant в OS X або Linux.

Якщо ви не знайомі з vim , який він відкриває, ця сторінка допомогла . В основному скопіюйте відповідний блок тексту нижче. Потім у візуальному режимі перейдіть до місця, куди потрібно вставити текст у файл (кінець файлу добре), і натисніть «i», щоб перейти в режим вставки. CMD + V, щоб вставити текст. Потім натисніть клавішу ESC, а потім введіть, :wщоб зберегти зміни, а потім :qвийти.

З версії 1.7.3 , у файлі sudoers в OS X повинні бути такі записи:

Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE

І в Linux повинні бути такі записи:

Cmnd_Alias VAGRANT_EXPORTS_CHOWN = /bin/chown 0\:0 /tmp/*
Cmnd_Alias VAGRANT_EXPORTS_MV = /bin/mv -f /tmp/* /etc/exports
Cmnd_Alias VAGRANT_NFSD_CHECK = /etc/init.d/nfs-kernel-server status
Cmnd_Alias VAGRANT_NFSD_START = /etc/init.d/nfs-kernel-server start
Cmnd_Alias VAGRANT_NFSD_APPLY = /usr/sbin/exportfs -ar
%sudo ALL=(root) NOPASSWD: VAGRANT_EXPORTS_CHOWN, VAGRANT_EXPORTS_MV, VAGRANT_NFSD_CHECK, VAGRANT_NFSD_START, VAGRANT_NFSD_APPLY

Зауважте, що вони змінюються від однієї версії Vagrant до іншої, тому вищезазначене може бути застарілим. Важливо те, що документи зараз це висвітлюють.


Дивно, що це не працює для мене, хоча /var/log/auth.logмістять лише команди, які там перераховані, і я можу вручну перевірити, чи працюють дозволи sudo.
Тгр

1
Замість редагування основного файлу sudoers я рекомендую додати це як новий файл, /etc/sudoers.dщоб уникнути майбутніх конфліктів під час оновлення ОС. У Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfsабо OSX:sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
Еміль Вікстрьом

1
Це допомогло, дякую! Просто короткий коментар до вашої поради, щоб обійти редактор vim : Просто відкрийте візуально sudo EDITOR=nano visudoкоманду, яка дозволяє вам повністю обійти vim .
Петро Цибулька

2

Точні команди можуть змінюватися між версіями Vagrant, тому неможливо перерахувати ті, які завжди працювали.

У будь-якому випадку правила судорів у цій суті повинні бути ще досить близькими. Перевірте /var/log/auth.log, якщо він виявляє фактичні команди для вашої версії Vagrant і адаптуйте правила відповідно.


Дякую, але я спробував це рішення давно - це не працює для мене.
Тимур Файзрахманов

2

Для тих, хто робить це для OSX (я перебуваю на MacOS Sierra Версії 10.12.6), мені було важко з дозволами навіть після додавання цих рядків. Ця публікація справді допомогла:

https://github.com/cogitatio/vagrant-hostsupdater/issues/50

По суті, це те, що у вас немає дозволів, встановлених для цієї папки самостійно. Тому вам потрібно запустити:

sudo chmod +a "$USER allow write,append" /etc/hosts

1

додавши , nfs_export: falseнаприкінці config.vm.synced_folderрядків у Vagrantfile, вирішив це для мене.

Якщо у вас вже є працюючий nfs-config і вам не потрібен ваш Vagrant, щоб перезаписати його кожного разу, коли ви запустили, ви можете просто відключити запис у файл-експорт.

Це також вирішує проблему зіткнення, якщо у вас є більше одного Vagrant, який намагається отримати доступ до тієї ж папки, як, наприклад, є 2 майже однакових Vagrants, один запущений php 5.6 та один запущений php 7.2.


0

TL&DR: додайте наступний override.vm.synced_folder ".", "/ Vagrant", вимкнено: true

Раціональний: За замовчуванням Vagrant намагається виявити будь-які папки NFS / SMB. Хоча я можу зрозуміти, чому розробники додали цю функцію, для мого використання це дуже дратує. Рішення полягає в простому відключенні синхронізації папок NFS.

Це можна зробити, змінивши параметр синхронізованої папки VM. Я додав для розгляду наступний конфігурацію цифрового океану, щоб ви могли побачити всю конфігурацію.

 config.vm.define "droplet1" do |config|
 config.vm.provider :digital_ocean do |provider, override|
    override.vm.synced_folder ".", "/vagrant", disabled: true
        override.ssh.private_key_path = '~/.ssh/id_rsa'
        override.vm.box = 'digital_ocean'=
        override.vm.box_url = "https://github.com/devopsgroup-io/vagrant- 
 digitalocean/raw/master/box/digital_ocean.box"
    override.nfs.functional = false
            provider.image = 'ubuntu-14-04-x64'
            provider.region = 'nyc1'
            provider.size = '512mb'
       end
      end
    end

Треба любити людей "TL&DR"! Ура.
Луїс

1
Спасибі! Не забудьте подати заявку;)
FlyingV

Через ваш "TL&DR" ви заслуговуєте на всі надбавки, які можна отримати, але правда, ваша відповідь не допомогла мені. Не тому, що це не добре, але проблема, яку я мав, трохи відрізнялася від заданої в першу чергу. Все-таки дякую за гарне ставлення. :)
Луїс Міланезе
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.