유쾌하고 성가신 NFS 암호 요청


18

내가 저지른 언어 실수로 죄송합니다. NFS로 공유 폴더를 마운트 할 때 방랑자가 암호를 묻지 않도록 노력하고 있습니다.

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

github 및 기타 작성자의 게시물과 같은 많은 온라인 리소스를 사용했지만 아무 효과가 없습니다 ...

나는 여기 에서 지침을 찾았 습니다 . 클리닉 실무 지식이 없습니다. 아무도 내 문제에 대한 올바른 해결책을 줄 수 있습니까?


이 문서가 Vagrant 문서에서 다뤄 졌으므로 이제 답변을 받도록 친절하게 요청할 수 있습니까?
Taytay

먼저 nfs-server시스템에 서비스가 설치되어 있는지 확인 해야합니다.
Gambit

답변:


32

공식 Vagrant 문서는 이제 이것을 다룹니다 : https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

/etc/sudoers파일 에 항목을 추가해야하며 이를 편집하는 방법은 터미널에서이를 입력하는 것입니다.sudo visudo

비밀번호를 입력하면 파일을 편집하고 있습니다. OS X 또는 Linux에서 Vagrant를 실행 중인지에 따라이 행을 아래에 붙여넣고 싶을 것입니다.

당신이 익숙하지 않으면 정력 이 열립니다, 이 페이지가 도움이 . 기본적으로 아래의 해당 텍스트 블록을 복사하십시오. 그런 다음 visudo에서 텍스트를 파일에 붙여 넣을 지점으로 이동하고 (파일 끝은 괜찮습니다) "i"를 눌러 삽입 모드로 이동하십시오. 텍스트를 붙여 넣으려면 CMD + V를 사용하십시오. 그런 다음 ESC를 누른 다음 입력 :w하여 변경 사항을 저장 한 다음 :q종료하십시오.

버전 1.7.3 부터 OS X의 sudoers 파일에는 다음 항목이 있어야합니다.

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.dOS를 업데이트 할 때 나중에 충돌이 발생하지 않도록이 파일을 새 파일로 추가하는 것이 좋습니다 . 우분투 : 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명령으로 열면 vim을 완전히 우회 할 수 있습니다 .
Petr Cibulka

2

정확한 명령은 Vagrant 버전간에 변경 될 수 있으므로 항상 작동하는 명령을 나열하는 것은 불가능합니다.

어쨌든, 이 요지 의 sudoers 규칙은 여전히 매우 가깝습니다. Vagrant 버전의 실제 명령이 표시되면 /var/log/auth.log를 확인하고 그에 따라 규칙을 조정하십시오.


고맙지 만이 솔루션을 오래 전에 사용해 보았습니다. 작동하지 않습니다.
Timur Fayzrakhmanov 2014

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

Vagrantfile , nfs_export: false의 줄 끝에 추가하면 config.vm.synced_folder해결되었습니다.

이미 작동중인 nfs-config가 있고 시작할 때마다 Vagrant가 덮어 쓸 필요가없는 경우 export-file에 대한 쓰기를 비활성화 할 수 있습니다.

이것은 동일한 폴더에 액세스하려는 하나 이상의 Vagrant가있는 경우 충돌 문제를 해결합니다. 예를 들어 거의 2 개의 Vagrant가 거의 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"사람들을 사랑해야합니다! 건배.
Luis Milanese

1
감사!
공감

당신의 "TL & DR"때문에 당신은 그들이 얻을 수있는 모든 공감대를받을 자격이 있습니다. 그러나 당신의 대답은 저에게 도움이되지 않았습니다. 그것이 좋지 않기 때문에가 아니라 내가 겪고있는 문제는 처음에 요청 된 것과 약간 다릅니다. 그래도 좋은 태도에 감사드립니다. :)
Luis Milanese
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.