我刚刚在 Ubuntu 16.04 中安装了 OceanOptics SpectraSuite,它将 USB 数字光谱仪连接到笔记本电脑。当我作为用户“讲师”执行该软件时,它会在不访问硬件的情况下启动。如果我使用 sudo 执行,它会正常启动并且硬件已正确初始化:
instructor@modern5-Latitude-E6500:~$ which spectrasuite
/usr/local/bin/spectrasuite
instructor@modern5-Latitude-E6500:~$ spectrasuite
Linux native USB library loaded.
Detected device change on USB
Could not claim device (Vid: 0x2457, Pid: 0x1022, iface: 0)
The interface could not be claimed.
^C
instructor@modern5-Latitude-E6500:~$ sudo spectrasuite
[sudo] password for instructor:
Linux native USB library loaded.
Detected device change on USB
The interface was claimed successfully.
如何让学生(使用不同的用户名)启动该软件而无需切换用户?
答案1
该设备可能以类似的方式连接/dev/ttyUSB0
。您可以检查该设备的权限并将所有其他用户添加到适当的组。例如,在我的系统上,我有一个 USB 设备,例如:
$ ls -al /dev/ttyUS*
crw-rw---- 1 root dialout 188, 0 Sep 1 10:00 /dev/ttyUSB0
$
因此,通过将自己添加到dialout
组 ( sudo adduser myname dialout
),我可以访问该设备。请注意,其他设备(例如调制解调器和串行端口)可能会使用该dialout
组;如果您拥有这些设备并希望阻止学生访问它们,您可能需要使用不同的方法。
答案2
至此,没有出现令人满意的解决方案。幸运的是,OceanOptics 技术支持提供了更新的配置文件 (10-oceanoptics.rules),成功实现了这一点。
其他失败的方法包括更改 SELinux 配置设置(SELinux 在 16.04 中默认禁用)以及使用 2009 年 2 月安装 CD 附带的 10-oceanoptics.rules 文件。