Wireguard를 설정했고 매우 만족하지만 다음 두 가지가 궁금하지 않을 수 없습니다.
- 왜 wg-quick은 루트에서만 사용할 수 있나요?
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-quick
와 wg
실행 파일을 적용하여 이 문제를 간단히 해결했습니다.
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