zeb*_*aut 2 dhcp not-root-user
以 root 身份调用 dhclient 在我的 debian 机器上运行良好。但是,我也希望允许某些用户执行 dhclient。到目前为止,我已经尝试了这两个例子:
示例 1:当普通用户调用
user@box:~$ dhclient
Run Code Online (Sandbox Code Playgroud)
……,结果是:
bash: dhclient: command not found
Run Code Online (Sandbox Code Playgroud)
例2:我也试过
user@box:~$ /sbin/dhclient
Run Code Online (Sandbox Code Playgroud)
...,并得到
[...]
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
Run Code Online (Sandbox Code Playgroud)
现在...我觉得将整个 /sbin 目录 chmod 以供用户访问既不是一个好主意(或者行不通),而且在上面的第二个示例中 chmod dhclient 抱怨的所有内容似乎也不优雅。解决此问题的最佳和最安全的方法是什么?
安装和使用sudo。这是做这些事情的一种也是最理智的方式。dhclient真的需要root权限,没有办法绕过它。
允许特定用户以 root 权限执行单个命令。这可以在这样的/etc/sudoers文件中配置(使用编辑visudo):
Cmnd_Alias DHCP = /usr/sbin/dhclient
User_Alias DCHPUSERS = millert, mikef, dowdy
DCHPUSERS ALL = NOPASSWD: DHCP
Run Code Online (Sandbox Code Playgroud)
以上只是配置 sudo 的一种方式。如果您有很多这样的用户需要管理,我建议使用本地用户组而不是指定单个用户。
小智 5
我知道这已经得到了回答,但是我在搜索时发现了这个问题,并且建议的答案不适合我的情况。
通过将特殊功能赋予 dhcpd 二进制文件,我设法以普通用户身份运行 dhcpd:
sudo setcap CAP_NET_BIND_SERVICE,CAP_NET_RAW=+ep $(which dhcpd)
Run Code Online (Sandbox Code Playgroud)
以下是对属性功能的简短描述:
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).
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5522 次 |
| 最近记录: |