Linux-哪些资源需要提升权限C/C++编程
Linux - What resources require raised privileges C/C++ programming?
我正在开发一个守护程序和用户应用程序,该程序将通过UNIX域套接字与守护程序对话,以发送命令、获取状态信息等。用户应用程序将由设置了setuid位的非root用户运行,这样它将具有root的有效uid,这将允许它访问需要root权限的资源。大多数文件、套接字、设备(tty等)都需要root权限才能通过文件、ioctl系统调用访问它们。我不想在运行时一直使用提升的权限运行,因为它不安全,也不受欢迎。
我的问题是,由于我在书或互联网上找不到任何东西,是否有一个全面的系统调用列表,需要root权限才能访问的资源?我知道我正在使用的资源需要提升的权限,因为我可以通过使用/不使用为给定可执行文件设置的setuid位进行调试来验证这一点,但我只是想知道是否有一个已编译的列表列出了您何时不需要提升的特权来访问资源?
ioctl
本身不需要提升的特权。给定的设备可能被限制为具有特殊权限,但这并不意味着您的程序需要以root
:运行
在传统的linux系统上,权限授权是通过文件权限来处理的(主要是:组成员资格)。
考虑访问网络摄像头,该摄像头显示为/dev/video3
$ls-l/dev/video3crw rw----+1根视频81,0 Dec 2 09:21/dev/video3
因此,root
和属于video
组的任何用户都可以读取/写入该设备。
因此,如果想要控制/dev/video3
的程序的用户是video
组的成员就足够了。
注意:";用户";不需要是人类用户;它也可以是系统用户,其唯一目的是运行给定的守护进程。
如果这太粗略了(例如,您想授予给定用户对/dev/video3
的访问权限,但而不是/dev/video0
;但默认情况下,两者都可由video
组写入),那么设置udev
规则就足够容易了,这些规则将为单个设备授予更具体的权限。
- Termux权限被拒绝
- AWS Lambda C++运行时权限被拒绝
- 为什么 KMS drmModeSetCrtc() 在 X11 会话中运行时会失败并被拒绝权限?
- 编写一个函数来删除单链表中的节点(尾部除外),仅授予对该节点的访问权限
- 在没有管理员权限的情况下连接到同一网络中的命名管道
- 为什么我在空指针错误(链表)中获取成员访问权限
- Q没有管理权限的 exe 无法启动维护工具
- 在没有管理员权限的情况下,在 c++ 中以编程方式将程序添加到启动
- 如何使用Windows API C++更改已创建的文件夹/目录安全权限
- 如何修复无效的API密钥,IP或操作权限错误?
- 使用崇高文本 3 进行C++拒绝授予权限?
- 为什么"delete"操作员给我访问权限冲突
- 从根权限进程创建可访问的文件
- Android因为权限问题而杀死Qt应用程序
- 具有管理员权限的外壳执行不会结束
- 父级的子属性 - 访问权限
- 从C++获得对在python中创建的C++类的访问权限
- 安卓inotify_add_watch失败:权限被拒绝?
- 威纳派读取自定义文件或文件夹的所有访问权限
- 为什么当我使用 soci 连接到 postgresql 时,我没有足够的数据库权限?