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

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

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

阅读 546
评论
    1 个回答
    • 4.9k

    可以给 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
      撰写回答

      登录后参与交流、获取后续更新提醒

      相似问题
      推荐文章