Linux 使用具有简单用户权限的串行端口,如/dev/ttyS0

Linux 使用具有简单用户权限的串行端口,如/dev/ttyS0,linux,Linux,我在UBUNTu 12.04上。我想在用户模式下运行一个使用PC串行端口的程序(确切地说,是java程序)。打开串行端口/dev/ttyS0时,它总是抛出一个端口繁忙异常,这不是很正确: 由于权限问题,它无法使用该端口。该端口属于root/dialout。当我手动将ttyS0组设置为用户所属的组时,效果很好。但这方面有两个缺点: 重新启动后,设置消失,必须重新应用 该程序是特意用java编写的,旨在易于使用(和跨平台),无需安装麻烦。我不想通过使用sudo chgrp、将他们的组添加到拨号组或

我在UBUNTu 12.04上。我想在用户模式下运行一个使用PC串行端口的程序(确切地说,是java程序)。打开串行端口/dev/ttyS0时,它总是抛出一个端口繁忙异常,这不是很正确:

由于权限问题,它无法使用该端口。该端口属于root/dialout。当我手动将ttyS0组设置为用户所属的组时,效果很好。但这方面有两个缺点:

  • 重新启动后,设置消失,必须重新应用
  • 该程序是特意用java编写的,旨在易于使用(和跨平台),无需安装麻烦。我不想通过使用sudo chgrp、将他们的组添加到拨号组或类似于在/etc/rc中添加chgrp命令的方式来混淆我未来的用户
问题是:

如何管理,允许具有用户权限的程序访问串行端口,而无需用户进行(太多)苛刻的活动?欢迎java程序内外的解决方案:-)

干杯,
Tarik

在您描述的情况下,您应该将您的用户添加到拨号组。组通常用于授予用户特定的访问权限,例如对设备文件的读/写访问权


我看不到一个简单的解决方案,当你想分发你的软件。系统管理员负责设置用户和组关系,并确保用户具有执行程序所需的权限。

由于您无法控制安装,您至少可以找到一种方法来给出正确的错误消息,即:需要授予串行端口权限。