在 Eaton 3S 700VA UPS 上运行 Ubuntu 服务器。Eaton 的 USB 连接进入我的 Ubuntu 服务器。我正在尝试使用NUT来管理 UPS。
经过sudo su
“ING
cat /etc/nut/ups.conf
:
[eaton]
driver = usbhid-ups
port = auto
desc = "Eaton 3S"
Run Code Online (Sandbox Code Playgroud)
upsdrvctl -t start
Network UPS Tools - UPS driver controller 2.6.1
*** Testing mode: not calling exec/kill
0.000000
0.000805 Starting UPS: eaton
0.000955 exec: /lib/nut/usbhid-ups -a eaton
Run Code Online (Sandbox Code Playgroud)
upsdrvctl start
Network UPS Tools - UPS driver controller 2.6.1
Network UPS Tools - Generic HID driver 0.35 (2.6.1)
USB communication driver 0.31
Can't claim USB device [0463:ffff]: could not detach kernel driver from interface 0: Operation not permitted
Driver failed to start (exit status=1)
Run Code Online (Sandbox Code Playgroud)
use*_*096 11
虽然我不声称自己是这里的专家,但我担心这个答案不会导致重新启动后的持久权限更改,和/或来自 UPS 的 USB 电缆被移动到不同的端口。
遵循此处的信息:Nannerpuss 的沉思:NUT - 网络 UPS 工具 - 在 Ubuntu 上。
“...问题涉及到 Ubuntu 将设备挂载为 root 所拥有的事实,但是 nut 守护进程掉到一个没有必要访问权限的非特权帐户。简单的解决方法是使用 udev 来调整设备权限。
连接设备并(以 root 身份)运行 lsusb 并找到它。请注意总线和设备 ID 以及供应商:产品 ID 对...."
使用上述答案中的输出:
$ lsusb
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Run Code Online (Sandbox Code Playgroud)
再次从链接“...您可以创建一个 udev 规则来控制启动时的挂载行为:...”(已编辑以更好地匹配此场景)”
例如
sudo nano /etc/udev/rules.d/90-nut-ups.rules
# /etc/udev/rules.d/90-nut-ups.rules
ACTION=="add", \
SUBSYSTEM=="usb", \
ATTR{idVendor}=="051d", ATTR{idProduct}=="0002", \
MODE="0660", GROUP="nut"
Run Code Online (Sandbox Code Playgroud)
该规则通过与 UPS 匹配的供应商和产品监视 USB 设备添加。然后将模式设置为 0660 并将组设置为 nut 而不是默认根。
请注意,此答案使用 660 权限而不是 666 权限,因为这应该足够且更安全。
重新加载 udev(重新启动,或者从 UPS 的 pc 端口拔下然后重新插入 USB 电缆),然后断开并重新连接设备并测试新权限是否正确。这部分我不清楚。无论如何,一旦nut用户组对设备进行了读写,应该就可以成功启动了。
udev rules.d 编辑确实在我的 12.04.2 系统上工作,即使我将 USB 电缆移动到不同的端口,导致 lsusb 输出上的总线设备编号不同。Udev 在没有干预的情况下处理了所有事情。事实上,当我移动它时,我可能不必重新启动,但不能肯定地记得并将测试留给其他人。
小智 9
你可以用它lsusb
来找出总线和设备号
然后更改设备的权限
chmod 0666 /dev/bus/usb/[bus number]/[device number]
Run Code Online (Sandbox Code Playgroud)例如
$ lsusb
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
$ chmod 0666 /dev/bus/usb/002/004
Run Code Online (Sandbox Code Playgroud)