簡體   English   中英

Linux - 哪些資源需要提升權限的 C/C++ 編程?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM