내 데비안 컴퓨터에서 루트로 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