옵션 1: 이유를 알아보고 올바른 일을 하세요.

옵션 1: 이유를 알아보고 올바른 일을 하세요.

Wireguard를 설정했고 매우 만족하지만 다음 두 가지가 궁금하지 않을 수 없습니다.

  1. 왜 wg-quick은 루트에서만 사용할 수 있나요?
  2. wg-quick <up/down> <interface>실제 루트 액세스 없이 다른 사용자에게 작업을 수행할 수 있는 권한을 부여할 수 있습니까?

나는 이것이 파일을 루트 소유 디렉토리로 이동/복사/심볼릭 링크하고 데몬 등을 다시 로드하는 것과 관련이 있다고 추측합니다. 어쨌든 해결책에 대한 좀 더 자세한 설명과 제안을 듣고 싶습니다.

답변1

wg-quick은 wg 및 ip를 사용하여 네트워크 인터페이스를 변경하므로 루트 액세스가 필요합니다.

sudoers에 wg-quick을 추가하지 마십시오. 그러면 무제한 루트 액세스가 제공됩니다. wg-quick 구성에는 임의의 스크립트(PreUp, PostUp 등)를 루트로 실행하기 위한 후크가 있으며 "사용자 정의 DNS 옵션 또는 방화벽 규칙을 구성하는 데 가장 일반적으로 사용됩니다."

wg-quick은 맨페이지에 다음과 같이 실제로 편의 스크립트입니다.

일반적으로 이 유틸리티는 WireGuard 인터페이스를 설정하기 위해 wg(8) 및 ip(8)에 대한 호출을 래핑하는 간단한 스크립트입니다. 이는 단순한 요구 사항을 가진 사용자를 위해 설계되었으며, 고급 요구 사항을 가진 사용자는 보다 구체적인 도구, 보다 완전한 네트워크 관리자를 사용하거나 평소처럼 wg(8) 및 ip(8)를 사용하는 것이 좋습니다.

답변2

경고: 사용자에게 비밀번호 없이 전체 루트 액세스 권한을 제공하는 이 답변을 따르면 보안 위험이 있습니다.

@ctrl-alt-delor의 답변에 대한 팁을 사용하여 작동하는 솔루션을 공식화했습니다. 내 시나리오에서는 jenkins라는 sudo가 아닌 사용자가 작성자로서 wg-quick <up/down>을 실행할 수 있기를 원합니다.

달리기: sudo visudo

root            ALL = (ALL) ALL
%admin          ALL = (ALL) ALL

아래에 몇줄 추가-------

jenkins ALL = (ALL) NOPASSWD: /opt/homebrew/bin/bash
jenkins ALL = (ALL) NOPASSWD: /usr/sbin/networksetup
jenkins ALL = (ALL) NOPASSWD: /sbin/ifconfig
jenkins ALL = (ALL) NOPASSWD: /opt/homebrew/bin/wg
jenkins ALL = (ALL) NOPASSWD: /opt/homebrew/bin/wg-quick

실행하려는 최종 명령을 실행하기 전에 전제 조건을 나열하는 것이 중요합니다! 그렇지 않으면 작동하지 않습니다! 이것이 누군가에게 도움이 되기를 바랍니다!

그 후에는 일반 사용자 jenkins가 이 명령을 실행할 수 있습니다. 당신이 직면한다면

encountered an error: "wg-quick: Version mismatch: bash 3 detected, when bash 4+ required"

그런 다음 간단히 실행하십시오.

which bash

/opt/homebrew/bin/wg-quick경로 출력을 복사하여 wg-quick file() 시작 부분에 넣습니다.

내 경우에는 wg-quick의 상단에는 다음이 포함됩니다.#!/opt/homebrew/bin/bash

이 작업을 수행한 후 사용자는 이 wg-quick up/down을 실행하고 Automator/sh 스크립트에서 이 작업을 실행할 수 있습니다. :)

사용된 리소스: https://osxdaily.com/2014/02/06/add-user-sudoers-file-mac/

답변3

예.하지만 그렇지 마십시오 (다른 답변 참조).

경고: 이 명령에는 이 작업을 수행하지 마십시오.

옵션 1: 이유를 알아보고 올바른 일을 하세요.

옵션 2:sudo

실행 sudo하고 비밀번호를 입력하세요. 나는 당신이 이미 이것을하고 있다고 생각합니다.

sudo옵션 3: 이 명령에 대해 비밀번호를 구성하지 않습니다.

이 명령은 안전하지 않습니다.

/etc/sudoers실행할 수 있도록 파일 을 편집하세요.이 명령비밀번호가 있는 것과 sudo비밀번호가 없는 것. (주의하세요. visudo를 사용하여 파일을 확인하세요.)

작동하면 래퍼 스크립트를 작성하여 더 쉽게 실행할 수 있습니다.

답변4

내 랩톱에서는 suid 비트 wg-quickwg실행 파일을 적용하여 이 문제를 간단히 해결했습니다.

which wg: /usr/bin/wg
which wg-quick: /usr/bin/wg-quick

sudo chmod u+s /usr/bin/wg-quick
sudo chmod u+s /usr/bin/wg

관련 정보