是否有系统函数允许我的应用程序拥有root权限?

问题描述:

我有一个在启动时自动运行的嵌入式系统上运行的应用程序。由于某些功能涉及读取和写入串行端口,因此我需要软件具有root权限。在我的桌面上,这是没有问题的,因为我可以运行程序sudo,这很好。在我的嵌入式设备上,我无法做到这一点,所以我期望的是有一些linux系统函数可以让代码不以root身份运行,但是可以拥有超级用户权限来访问串口。我认识到,从安全角度来看,这可能不是一个好主意,但由于它在嵌入式设备上,我别无选择。是否有系统函数允许我的应用程序拥有root权限?

+0

你可以学习更多关于setuid可执行文件的信息... – 2012-07-21 07:00:34

您是否考虑过更改串行端口设备节点的权限,以便您的应用程序可以访问它?

E.g.允许每个应用程序访问/dev/ttyS0串口:

chmod a+rw /dev/ttyS0 

为了提供更精细的控制,您可以创建一个单独的用户群和chgrp您的串口设备节点:

chgrp serial /dev/ttyS0 
chmod 0660 /dev/ttyS0 

之后,您所需要的只是确保用户的应用程序运行在serial用户组中。

或者你甚至可以使应用程序的用户设备节点的唯一拥有者:

chown appuser /dev/ttyS0 
chmod 0600 /dev/ttyS0 

需要root权限只访问一个设备节点是不是正确的方法...

+0

这似乎是一个更明智的方法。感谢您的回答。 – mathematician1975 2012-07-21 07:05:00