【问题标题】:Are there system functions that allow my application to have root privileges?是否有允许我的应用程序具有 root 权限的系统功能?
【发布时间】:2012-07-20 08:46:24
【问题描述】:

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

【问题讨论】:

  • 您可以了解有关 setuid 可执行文件的更多信息...

标签: c linux embedded serial-port root


【解决方案1】:

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

例如允许每个应用程序访问/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 权限不是正确的方法...

【讨论】:

  • 这似乎是一个更明智的方法。谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多