일반 사용자에게 네트워크 인터페이스에 대한 쓰기 권한을 부여하는 방법은 무엇입니까?

일반 사용자에게 네트워크 인터페이스에 대한 쓰기 권한을 부여하는 방법은 무엇입니까?

네트워크 인터페이스에서 패킷을 읽고 쓰는 프로그램이 있습니다. 일반적으로 sudoers 파일에 자신을 추가하고 다음과 같이 프로그램을 실행합니다.

sudo ./bridge

하지만 이제 이 프로그램을 실행하려면 여러 사용자가 필요하지만 다음과 같이 프로그램을 실행할 수 있도록 sudo 권한을 부여하지 않아야 합니다.

./bridge

내가 어떻게 할 수 있는지 아는 사람 있나요? 저는 64비트 플랫폼에서 Scientific Linux 6.1을 실행하고 있습니다.

답변1

다음으로 제한할 수 있습니다.Sudoerssudo를 사용하여 명령을 실행할 수 있습니다.

sudo를 통해 루트로 ./real-bridge를 실행할 수 있는 권한을 사용자에게 ./bridge호출 하고 부여하는 작은 스크립트를 작성하세요 .sudo ./real-bridge

답변2

eth 장치에서 작동하는지 잘 모르겠지만 이 사람은 tun 장치에서 작동합니다.

$ tail -n1 /etc/udev/rules.d/20-kvm.rules 
KERNEL=="tun",          NAME="net/%k", GROUP="mygoodusers", MODE="0660"

해당 줄의 GROUP="mygoodusers", MODE="0660"을 참조하세요. 물론 각 사용자를 이 그룹에 넣어야 합니다.

udevadm control --reload-rules

그러나 재부팅하기 전에 수동으로 chmod/chown을 수행해야 합니다.

답변3

이 사용자가 스크립트를 실행할 수 있도록 sudo 규칙을 추가하세요. 실행 visudo하고 다음 내용을 sudoers파일에 추가합니다.

Defaults!/path/to/bridge env_reset
alice, bill  ALL = (root) /path/to/bridge

이를 통해 사용자는 프로그램에 매개변수를 전달할 수 있습니다 /path/to/bridge. ""인수 전달을 비활성화하려면 줄 끝에 추가됩니다 .

보다 쉬운 사용자 관리를 위해 브리지를 제어할 수 있는 권한이 있는 사용자 집합을 정의하는 것이 좋습니다. alice, bill그룹 이름으로 바꿉니다 %bridgers.bridgers

프로그램 내부에는 bridge호출 $SUDO_UID사용자의 사용자 ID가 있습니다 sudo. 프로그램에서 해당 사용자가 변수에 있어야 하는 경우 USER이를 설정하기 위한 작은 래퍼 쉘 스크립트를 작성하십시오 USER=$SUDO_UID.

관련 정보