Linux 如何让非 root 用户访问网卡?

我想通过 PHP 运行 wakelan 命令唤醒局域网的设备,但是因为权限问题, http 用户运行 wakelan 命令时候没有权限向网络发送魔术封包。

除了赋予 http 用户 root 权限之外有什么办法可以发送魔术封包吗?

阅读 4.2k
1 个回答

可以给 wakelan 命令加上 cap_net_raw:

sudo setcap 'cap_net_raw+ep' `which wakelan`

然后不用 root 就能运行。

我用的是 etherwake

# 一开始没权限:
$ getcap /usr/bin/etherwake
/usr/bin/etherwake =

# 运行错误 
$ /usr/bin/etherwake -i wlp2s0 98:5f:d3:37:bb:b4
ether-wake: This program must be run as root.

# 添加权限
$ sudo setcap 'cap_net_raw+ep' /usr/bin/etherwake
$ getcap  /usr/bin/etherwake
/usr/bin/etherwake = cap_net_raw+ep

# 正常运行
/usr/bin/etherwake -i wlp2s0 98:5f:d3:37:bb:b4
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题