Yêu cầu mật khẩu và mật khẩu NFS khó chịu


18

Xin lỗi vì những lỗi ngôn ngữ tôi đã mắc phải. Tôi đang cố gắng ngăn chặn việc hỏi mật khẩu khi nó gắn kết các thư mục được chia sẻ bởi NFS:

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

Tôi đã tô đỏ nhiều tài nguyên trực tuyến như github và các bài đăng của tác giả khác, nhưng không có gì phù hợp với tôi ...

Tôi đã thử các hướng dẫn đã được tìm thấy ở đây . Tôi không có kiến ​​thức làm việc sâu sắc. Vì vậy, bất cứ ai có thể đưa ra giải pháp chính xác cho vấn đề của tôi?


Tôi có thể vui lòng yêu cầu có câu trả lời được chấp nhận ngay bây giờ vì điều này đã được đề cập trong các tài liệu của Vagrant không?
Taytay

Trước hết bạn cần kiểm tra Là dịch vụ nfs-serverđược cài đặt trên máy của bạn.
Gambit

Câu trả lời:


32

Các tài liệu Vagrant chính thức hiện bao gồm điều này: https://www.vagrantup.com/docs/synced- Folders / nfs.html#root-privilege-requirement

Bạn cần thêm các mục vào /etc/sudoerstệp và cách để chỉnh sửa đó là nhập mục này vào thiết bị đầu cuối:sudo visudo

Nhập mật khẩu của bạn và bạn đang chỉnh sửa tệp. Bạn sẽ muốn dán các dòng này bên dưới (tùy thuộc vào việc bạn đang chạy Vagrant trên OS X hay Linux.

Nếu bạn không quen thuộc với vim , nó mở ra, trang này đã giúp . Về cơ bản, sao chép khối văn bản thích hợp bên dưới. Sau đó, trong visudo, đi đến vị trí bạn muốn dán văn bản vào tệp (phần cuối của tệp vẫn ổn) và nhấn "i" để chuyển sang chế độ chèn. CMD + V để dán văn bản của bạn. Sau đó, nhấn ESC, sau đó nhập :wđể lưu các thay đổi của bạn và sau đó :qthoát.

Kể từ phiên bản 1.7.3 , tệp sudoers trong OS X sẽ có các mục sau:

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

Và Linux nên có những mục sau:

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

Lưu ý rằng những thay đổi này từ một phiên bản của Vagrant sang một phiên bản khác, vì vậy những điều trên có thể đã lỗi thời. Điều quan trọng là các tài liệu bây giờ bao gồm nó.


Điều kỳ lạ là nó không hoạt động với tôi, mặc dù /var/log/auth.logchỉ chứa các lệnh được liệt kê ở đó và tôi có thể xác minh thủ công rằng các quyền sudo đang hoạt động.
Tgr

1
Thay vì chỉnh sửa tệp sudoers chính, tôi khuyên bạn nên thêm tệp này dưới dạng tệp mới /etc/sudoers.dđể tránh xung đột trong tương lai khi cập nhật HĐH. Trên Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfshoặc OSX:sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
Emil Vikström

1
Điều này đã giúp, cảm ơn bạn! Chỉ cần một nhận xét nhanh cho lời khuyên của bạn để có được xung quanh trình soạn thảo vim : Chỉ cần mở visudo bằng sudo EDITOR=nano visudolệnh, cho phép bạn bỏ qua hoàn toàn vim .
Petr Cibulka

2

Các lệnh chính xác có thể thay đổi giữa các phiên bản Vagrant, vì vậy không thể liệt kê các phiên bản luôn hoạt động.

Dù sao, các quy tắc sudoers trong ý chính này vẫn còn khá gần gũi. Hãy xem /var/log/auth.log nếu nó tiết lộ các lệnh thực tế cho phiên bản Vagrant của bạn và điều chỉnh các quy tắc phù hợp.


Cảm ơn, nhưng tôi đã thử giải pháp này từ lâu - nó không hiệu quả với tôi.
Timur Fayzrakhmanov

2

Đối với bất kỳ ai làm điều này cho OSX (Tôi đang dùng MacOS Sierra Phiên bản 10.12.6), tôi đã gặp khó khăn với các quyền ngay cả sau khi thêm các dòng đó. Bài đăng này thực sự hữu ích:

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

Về cơ bản, thực tế là bạn không có quyền đặt cho thư mục đó. Vì vậy, bạn cần phải chạy:

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

1

thêm , nfs_export: falsevào cuối dòng config.vm.synced_foldertrong Vagrantfile, đã giải quyết nó cho tôi.

Nếu bạn đã có nfs-config đang hoạt động và không cần Vagrant ghi đè lên mỗi lần bạn bắt đầu, thì bạn có thể vô hiệu hóa ghi vào tệp xuất.

Điều này cũng giải quyết vấn đề va chạm, nếu bạn có nhiều hơn thì một Vagrant đang cố truy cập vào cùng một thư mục, ví dụ như có 2 Vagrant gần như giống hệt nhau, một chạy php 5.6 và một chạy php 7.2.


0

TL & DR: Thêm ghi đè sau.vm.synced_folder ".", "/ Vagrant", bị vô hiệu hóa: true

Rational: Theo mặc định, Vagrant cố gắng phát hiện bất kỳ thư mục NFS / SMB nào. Mặc dù tôi có thể hiểu tại sao các nhà phát triển thêm tính năng này, nhưng trong trường hợp sử dụng của tôi, điều này rất khó chịu. Giải pháp đơn giản là đồng bộ hóa thư mục NFS DISABLE.

Điều này có thể được thực hiện bằng cách ghi đè tùy chọn thư mục được đồng bộ hóa VM. Tôi đã đính kèm cấu hình sau cho đại dương kỹ thuật số để bạn xem xét, để bạn có thể thấy toàn bộ cấu hình.

 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

Phải yêu người "TL & DR"! Chúc mừng.
Luis Milanese

1
Cảm ơn! Đừng quên upvote;)
FlyingV

Vì "TL & DR" của bạn, bạn xứng đáng với tất cả những gì người ta có thể nhận được, nhưng sự thật là câu trả lời của bạn đã không giúp tôi. Không phải vì nó không tốt, nhưng vấn đề tôi gặp phải hơi khác so với những gì được hỏi ở nơi đầu tiên. Tuy nhiên, cảm ơn bạn cho bạn thái độ tốt. :)
Luis Milanese
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.