일반(루트가 아닌) 사용자를 위한 dhclient

일반(루트가 아닌) 사용자를 위한 dhclient

내 데비안 컴퓨터에서 루트로 dhclient를 호출하면 제대로 작동합니다. 그러나 특정 사용자가 dhclient를 실행하도록 허용하고 싶습니다. 지금까지 나는 다음 두 가지 예를 시도했습니다.

예 1: 일반 사용자가 전화를 걸 때

user@box:~$ dhclient

..., 결과는 다음과 같습니다.

bash: dhclient: command not found

예 2: 나도 시도해봤다

user@box:~$ /sbin/dhclient

...그리고 얻다

[...]

can't create /var/lib/dhcp3/dhclient.leases: Permission denied
SIOCSIFADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCSIFFLAGS: Permission denied
Open a socket for LPF: Operation not permitted

이제... 사용자가 액세스할 수 있는 전체 /sbin 디렉토리를 chmoding하는 것은 좋은 생각도 아니고(작동하지도 않을 것입니다) 위의 두 번째 예에서 dhclient가 불평하는 모든 것을 chmoding하는 것이 우아해 보이지 않는 것 같습니다. 이 문제를 해결하는 가장 좋고 안전한 방법은 무엇입니까?

답변1

을 설치하고 사용하세요 sudo. 이것은 이러한 일을 수행하는 가장 현명한 방법 중 하나입니다. dhclient루트 액세스가 필요하며 이를 해결할 방법이 없습니다.

특정 사용자가 루트 권한으로 단일 명령을 실행할 수 있도록 허용합니다. 이는 /etc/sudoers다음과 같은 파일에서 구성할 수 있습니다( edit 사용 visudo).

Cmnd_Alias     DHCP = /usr/sbin/dhclient
User_Alias     DCHPUSERS = millert, mikef, dowdy

DCHPUSERS      ALL = NOPASSWD: DHCP

위의 내용은 sudo를 구성하는 한 가지 방법일 뿐입니다. 관리해야 할 사용자가 많은 경우 개별 사용자를 지정하는 대신 로컬 사용자 그룹을 사용하는 것이 좋습니다.

답변2

이 질문에 이미 답변이 있다는 것을 알고 있지만 검색 중에 이 질문을 발견했는데 제안된 답변이 제 상황에 맞지 않습니다.

dhcpd 바이너리 특수 기능을 제공하여 일반 사용자로 dhcpd를 실행할 수 있었습니다.

sudo setcap CAP_NET_BIND_SERVICE,CAP_NET_RAW=+ep $(which dhcpd)

다음은 속성이 수행하는 작업에 대한 간단한 설명입니다.

CAP_NET_BIND_SERVICE allows binding ports lower than 1024
CAP_NET_RAW allows using RAW and Packet sockets and address binding (for LPF socket).

man capabilities자세한 설명은 참고자료를 확인하세요 . 나중에 다음과 같이 dhcpd를 실행할 수 있었습니다.

Triglav-Control-Engine-1v1% sudo setcap CAP_NET_BIND_SERVICE,CAP_NET_RAW=+ep $(which dhcpd)
Triglav-Control-Engine-1v1% dhcpd -4 -f -d -s 169.254.13.1 -cf dhcpd.conf -lf leases
Internet Systems Consortium DHCP Server 4.3.4
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: dhcpd.conf
Database file: /home/roosemberth/.config/dhcpd/leases
PID file: /var/run/dhcpd.pid
Source compiled to use binary-leases
Wrote 0 leases to leases file.

Listening on LPF/enp0s31f6/<MAC>/169.254.13.0/24
Sending on   LPF/enp0s31f6/<MAC>/169.254.13.0/24
Sending on   Socket/fallback/fallback-net
Can't create PID file /var/run/dhcpd.pid: Permission denied.
Server starting service.
DHCPDISCOVER from 50:7b:9d:af:e8:59 via enp0s31f6

관련 정보