2

我有一个使用Bluecove库的 Java 项目,该库需要 root 权限才能执行我在项目中需要的某些操作。我应该在这里指出,尽管该项目是基于 Java 的,但它仅适用于 Linux。

该项目将有许多不需要 root 权限的功能,其中一些必须与 root 权限功能交互,而另一些则不需要。

此外,该项目将在 root 权限下使用用户输入的数据执行hciconfig等程序。

所有这些根活动导致我担心我的系统的安全性。目标机器将是用户自己的计算机,并且无意在某些公共终端上运行该系统,但安全性仍然很重要,因为未知的外部蓝牙设备将能够与该系统进行交互。

到目前为止,我的安全措施涉及大量过滤用户输入,并非常注意外部蓝牙设备将导致系统执行的所有操作,但我对此越来越不满意。

人们会推荐什么?一种想法是将系统分成两个或三个模块,一个包含 GUI 和非根后端,一个包含 Bluecove 根后端,可能还有一个用于 hciconfig 和其他使用的工具的根包装器。

我注意到一些程序,例如 Apache,曾经运行“下拉”他们的权限。这是如何实现的,这是否有效?

4

1 回答 1

3

什么 apache 是 setuid 系统调用(在 libc 中),正如您所指出的,它有效地降低了进程的特权。您可以通过 JNI 或JNA进行 libc 调用。

这非常有效,即使对于 Java 程序也是如此,除了一旦您从 root 转到非 root,您将无法执行任何需要提升权限的操作。因此,只有在所有特权操作都可以像 Apache 一样预先完成的情况下,才能使用该技术。

另一种可能性是将您的程序分成两个进程 --- 启动时,您的程序会派生另一个以 root 身份运行的程序,然后将原来的程序降级为非 root。两个进程可以通过它们的标准输入/标准输出进行通信。

于 2010-02-02T17:04:02.493 回答