我正在linux(Ubuntu)上做一个小的附带项目,在这个项目中,我需要通过身份验证才能访问服务。我的想法是,这个身份验证应该与进程和它的子进程一起存储,而不是与linux用户本身一起存储。
此身份验证应该通过使用用户名、密码和脚本/应用程序(任何应用程序)调用"myapplogin“来完成,以便使用这些凭据运行。我希望有可能在这一过程中的任何子女以及任何孙辈等人中保留这些证书。
我已经为这个功能研究了几个选项。
有办法这样做吗?最好是存储在进程中的东西,任何新的子进程都继承,进程不可能覆盖,并且可以从内核模块外部读取。
也许我只是忽略了一些明显的东西?如能就此提供任何意见,我将不胜感激。)
发布于 2013-07-26 02:47:08
我可以提供两种方法,取决于您提到的哪种“服务”:
1.如果您提到的服务如下:网络管理、磁盘安装/汇总等:
Linux内核实现了功能机制。内核定义了各种功能。这些功能可以分配给不同的用户。能力的基本规则是:将最小的权限集分配给一个用户以完成其任务。
因此,您可以使用能力概念,您需要做的是:
(1)列出您需要限制访问的所有服务。
(2)为列出的服务定义新功能或使用现有功能。
(3)更改内核源代码,以检查一个进程在访问您列出的服务时的功能。通常,这些检查位于系统调用项中。
(4)修改init/登录进程的源代码,当用户登录到系统时,根据您的访问控制规则为不同的用户分配必要的功能。
2.如果您提到的服务类似于执行某种系统命令。
(1)在/etc/目录下创建一个文件(如watch_dog或else ),在这个文件中,您可以定义一种格式来列出特定用户可以执行特定命令的格式。当然,文件格式可以是非常花哨的,例如可以使用正则表达式。要解析该文件,可以使用Bison或Lex/Yacc。
(2)在Linux内核初始化过程中,可以解析文件/etc/watch_dog。
(3)在Process叉()期间,将/etc/watch_dog规则设置为与进程相关的task_struct。
(4)在exec()条目中,应用/etc/watch_dog规则来检查它是否可以执行程序。
https://stackoverflow.com/questions/17863527
复制相似问题