[英]Linux - What resources require raised privileges C/C++ programming?
我正在开发一个守护进程和用户应用程序,它将通过 UNIX 域套接字与守护进程通信以发送命令、获取状态信息等。用户应用程序将由非 root 用户运行,并设置了 setuid 位它将具有 root 的有效 uid,这将允许它访问需要 root 权限的资源。 大多数文件、套接字、设备(ttys 等)需要 root 权限才能通过文件 ioctl 系统调用访问它们。 我不想在运行时一直以提升的权限运行,因为它不安全且不受欢迎。
我的问题是,由于我在书籍或互联网上找不到任何内容,是否有完整的系统调用列表,需要 root 权限才能访问的资源? 我知道我正在使用的资源需要提升权限,因为我可以通过为给定的可执行文件设置/不设置 setuid 位进行调试来验证这一点,但我只是好奇是否有编译列表概述了何时不需要提升访问资源的权限?
一个ioctl
不需要提出本身的权限。 给定的设备可能仅限于特殊权限,但这并不意味着您的程序需要以root
身份运行:
在传统的 linux 系统上,权限授权是通过文件权限处理的(主要是:组成员资格)。
考虑访问显示为/dev/video3
的网络摄像头
$ ls -l /dev/video3 crw-rw----+ 1 根视频 81, 0 Dec 2 09:21 /dev/video3
所以这个设备可以被root
和属于video
组的任何用户读/写。
因此,如果想要控制/dev/video3
的程序的用户是video
组的成员就足够了。
注意:“用户”不必是人类用户; 它也可以是唯一目的是运行给定守护程序的系统用户。
如果这太粗糙(例如,您想授予给定用户访问/dev/video3
而不是/dev/video0
;但默认情况下, video
组都可以写入),很容易设置udev
规则,将授予单个设备的更具体的权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.