Vagrant Up และถามรหัสผ่าน NFS ที่น่ารำคาญ


18

ขออภัยสำหรับความผิดพลาดทางภาษาที่ฉันทำ ฉันกำลังพยายามป้องกันคนจรจัดที่ถามรหัสผ่านเมื่อเมานต์โฟลเดอร์แชร์โดย NFS:

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

ฉันแดงแหล่งข้อมูลออนไลน์มากมายเช่น github และโพสต์ของผู้เขียนคนอื่น แต่ไม่มีอะไรทำงานให้ฉัน ...

ฉันพยายามคำแนะนำที่ถูกพบที่นี่ ฉันไม่มีความรู้ที่ลึกซึ้งในการทำงาน ดังนั้นใครสามารถให้ทางออกที่ถูกต้องสำหรับปัญหาของฉันได้อย่างไร


ฉันสามารถขอคำตอบที่ได้รับการยอมรับได้ไหม
Taytay

ก่อนอื่นคุณต้องตรวจสอบว่าบริการnfs-serverติดตั้งอยู่ในเครื่องของคุณหรือไม่
กลเม็ด

คำตอบ:


32

เอกสาร Vagrant อย่างเป็นทางการตอนนี้ครอบคลุม: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

คุณต้องเพิ่มรายการลงใน/etc/sudoersไฟล์และวิธีการแก้ไขที่จะพิมพ์สิ่งนี้ที่เทอร์มินัล:sudo visudo

พิมพ์รหัสผ่านของคุณและคุณกำลังแก้ไขไฟล์ คุณจะต้องวางบรรทัดเหล่านี้ด้านล่าง (ขึ้นอยู่กับว่าคุณใช้ Vagrant บน OS X หรือ Linux

หากคุณไม่คุ้นเคยกับเสียงเรียกเข้าที่เปิดอยู่หน้านี้จะช่วยได้ โดยทั่วไปให้คัดลอกบล็อกข้อความที่เหมาะสมด้านล่าง จากนั้นใน visudo ไปที่จุดที่คุณต้องการวางข้อความลงในไฟล์ (จุดสิ้นสุดของไฟล์ไม่เป็นไร) และกด "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 ทำงาน
Tgr

1
แทนที่จะแก้ไขไฟล์ sudoers หลักฉันแนะนำให้เพิ่มไฟล์นี้เป็นไฟล์ใหม่/etc/sudoers.dเพื่อหลีกเลี่ยงข้อขัดแย้งในอนาคตเมื่ออัปเดตระบบปฏิบัติการ บน Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfsหรือ OSX:sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
Emil Vikström

1
สิ่งนี้ช่วยได้ขอบคุณ! เพียงแค่แสดงความคิดเห็นอย่างรวดเร็วต่อคำแนะนำของคุณเพื่อรับเครื่องมือแก้ไขvim : เพียงเปิด visudo พร้อมsudo EDITOR=nano visudoคำสั่งซึ่งจะช่วยให้คุณข้ามกลุ่มวิดีโอได้อย่างสมบูรณ์
Petr Cibulka

2

คำสั่งที่แน่นอนสามารถเปลี่ยนแปลงได้ระหว่างเวอร์ชัน Vagrant ดังนั้นจึงไม่สามารถแสดงรายการคำสั่งที่ใช้งานได้เสมอ

อย่างไรก็ตามกฎ sudoers ในส่วนสำคัญนี้ควรยังคงค่อนข้าง ลองดู /var/log/auth.log ว่ามันแสดงคำสั่งจริงสำหรับเวอร์ชั่น Vagrant ของคุณหรือไม่และปรับกฎให้สอดคล้องกัน


ขอบคุณ แต่ฉันลองใช้วิธีนี้มานานแล้ว - มันไม่ได้ผลสำหรับฉัน
Timur Fayzrakhmanov

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-line ใน Vagrantfile ให้แก้ไขเพื่อฉัน

หากคุณมี nfs-config ที่ใช้งานได้อยู่และไม่ต้องการ Vagrant ของคุณเพื่อเขียนทับมันทุกครั้งที่เริ่มต้นคุณสามารถปิดการเขียนไปยังไฟล์ส่งออกได้

วิธีนี้จะช่วยแก้ปัญหาการชนกันของข้อมูลได้ถ้าคุณมี Vagrant มากกว่าหนึ่งพยายามที่จะเข้าถึงโฟลเดอร์เดียวกันเช่นมี Vagrant ที่เหมือนกันเกือบ 2 อันหนึ่งทำงานที่ php 5.6 และ php 7.2 ที่ทำงานอยู่หนึ่งตัว


0

TL&DR: เพิ่มoverride.vm.synced_folder ".", "/ vagrant"ต่อไปนี้, ถูกปิดใช้งาน: จริง

Rational: โดยค่าเริ่มต้น 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"! ไชโย
Luis Milanese เมื่อ

1
ขอบคุณ! อย่าลืม
โหวต

เพราะ "TL&DR" ของคุณคุณสมควรได้รับ upvotes ทั้งหมดที่คุณได้รับ แต่ความจริงก็คือคำตอบของคุณไม่ได้ช่วยฉัน ไม่ใช่เพราะมันไม่ดี แต่ปัญหาที่ฉันมีอยู่นั้นแตกต่างจากที่ถามในตอนแรกเล็กน้อย ยังคงขอบคุณสำหรับทัศนคติที่ดี :)
Luis Milanese
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.