Linux - 哪些资源需要提升权限 C/C++ 编程?
Linux - What resources require raised privileges C/C++ programming?
我正在开发守护进程和用户应用程序,它将通过 UNIX 域套接字与守护进程通信以发送命令、获取状态信息等。用户应用程序将 运行 由非-设置了 setuid 位的 root 用户,这样它将有一个有效的 uid root,这将允许它访问需要 root 权限的资源。大多数文件、套接字、设备(ttys 等)都需要 root 权限才能通过文件、ioctl 系统调用访问它们。我不想在 运行 期间一直 运行 提高权限,因为它不安全并且不受欢迎。
我的问题是,由于我无法在书籍或互联网上找到任何东西,是否有一个全面的系统调用列表,需要 root 权限才能访问的资源?我知道我正在使用的资源需要提升权限,因为我可以通过调试 with/without 为给定可执行文件设置的 setuid 位来验证这一点,但我只是好奇某处是否有一个编译列表概述了何时,何时不需要提升权限才能访问资源?
ioctl
本身不需要提升权限。给定的设备可能仅限于特殊权限,但这并不意味着您的程序需要 运行 as root
:
在传统的 linux 系统上,权限授权是通过 file-permissions 处理的(主要是:group memberships)。
考虑使用网络摄像头,显示为 /dev/video3
$ ls -l /dev/video3
crw-rw----+ 1 root video 81, 0 Dec 2 09:21 /dev/video3
所以这个设备可以被 root
和 属于 video
组的任何用户read/write。
因此,如果想要控制 /dev/video3
的程序的用户是 video
组的成员就足够了。
注意:“用户”不必是人类用户;它也可以是 系统用户,其唯一目的是 运行 给定的守护进程。
如果这太粗略了(例如,您想授予给定用户访问 /dev/video3
但 而不是 /dev/video0
;但默认情况下两者都是可写的video
组),很容易设置 udev
规则,这些规则将为单个设备授予更具体的权限。
我正在开发守护进程和用户应用程序,它将通过 UNIX 域套接字与守护进程通信以发送命令、获取状态信息等。用户应用程序将 运行 由非-设置了 setuid 位的 root 用户,这样它将有一个有效的 uid root,这将允许它访问需要 root 权限的资源。大多数文件、套接字、设备(ttys 等)都需要 root 权限才能通过文件、ioctl 系统调用访问它们。我不想在 运行 期间一直 运行 提高权限,因为它不安全并且不受欢迎。
我的问题是,由于我无法在书籍或互联网上找到任何东西,是否有一个全面的系统调用列表,需要 root 权限才能访问的资源?我知道我正在使用的资源需要提升权限,因为我可以通过调试 with/without 为给定可执行文件设置的 setuid 位来验证这一点,但我只是好奇某处是否有一个编译列表概述了何时,何时不需要提升权限才能访问资源?
ioctl
本身不需要提升权限。给定的设备可能仅限于特殊权限,但这并不意味着您的程序需要 运行 as root
:
在传统的 linux 系统上,权限授权是通过 file-permissions 处理的(主要是:group memberships)。
考虑使用网络摄像头,显示为 /dev/video3
$ ls -l /dev/video3 crw-rw----+ 1 root video 81, 0 Dec 2 09:21 /dev/video3
所以这个设备可以被 root
和 属于 video
组的任何用户read/write。
因此,如果想要控制 /dev/video3
的程序的用户是 video
组的成员就足够了。
注意:“用户”不必是人类用户;它也可以是 系统用户,其唯一目的是 运行 给定的守护进程。
如果这太粗略了(例如,您想授予给定用户访问 /dev/video3
但 而不是 /dev/video0
;但默认情况下两者都是可写的video
组),很容易设置 udev
规则,这些规则将为单个设备授予更具体的权限。