我想通过 PHP 运行 wakelan 命令唤醒局域网的设备,但是因为权限问题, http 用户运行 wakelan 命令时候没有权限向网络发送魔术封包。 除了赋予 http 用户 root 权限之外有什么办法可以发送魔术封包吗?
可以给 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
可以给
wakelan
命令加上 cap_net_raw:然后不用 root 就能运行。
我用的是
etherwake
: