我已經寫了一個Linux系統寬C++程序/usr/bin/PROG_X
,它使用配置文件/etc/PROG_X.conf
和日誌文件/var/PROG_X.log
。程序可執行文件和日誌文件的權限應該是多少?
現在我需要在使用apache web服務器和php的web上強調認證之後調用這個程序。調用該程序可能涉及更改配置文件,並且會改變日誌文件。
我對保持啓用SELinux感興趣。
我的排序是:應該爲二進制文件,配置文件和日誌文件設置哪些用戶/組和文件權限以進行正確和安全的操作?
我已經寫了一個Linux系統寬C++程序/usr/bin/PROG_X
,它使用配置文件/etc/PROG_X.conf
和日誌文件/var/PROG_X.log
。程序可執行文件和日誌文件的權限應該是多少?
現在我需要在使用apache web服務器和php的web上強調認證之後調用這個程序。調用該程序可能涉及更改配置文件,並且會改變日誌文件。
我對保持啓用SELinux感興趣。
我的排序是:應該爲二進制文件,配置文件和日誌文件設置哪些用戶/組和文件權限以進行正確和安全的操作?
在大多數鎖定的方法(假定日誌和配置是敏感的):
運行Apache用戶的「www」,「progx」的用戶和組存在行駛的/ usr/bin中的唯一目的/ PROG_X。
/etc/PROG_X.conf屬於root:progx,並且具有權限640
/var/PROG_X.log屬於root:progx,並且具有權限660
的/ usr /斌/ PROG_X是由progx:progx擁有,並具有權限500
/etc/sudoers允許www僅運行/ usr/bin/PROG_X作爲progx。
因此,只有root和progx可以看到配置或讀/寫日誌文件,只有root可以修改配置。只有progx可以運行該程序,但是apache可以通過sudo專門啓動程序作爲progx。
[編輯:錯過了表示程序可能需要更改其配置文件的部分...因此,權限將改爲660]
好了,我不知道SELinux的,但也有一些「傳統」的解決方案浮現在腦海中:
首先,chown root /usr/bin/PROG_X
然後設置setuid位與chmod +s /usr/bin/PROG_X
。 setuid位導致程序不作爲當前用戶運行,而是作爲文件的所有者運行(在這種情況下爲root)。這意味着您需要確保您的程序儘可能安全。所以請小心使用。
setuid的替代方案可能是在該程序的/etc/sudoers
中添加適當的條目,並通過sudo
調用它。但它具有與程序以root身份運行相同的安全隱患,但至少您可以使用訪問更加細化(例如,您只能允許「www」用戶以root身份運行程序)。
另一種解決方案可能是chown root:wwwrun all_of_the_files_that_PROG_X_need_to_modify
。但是,只有當你確切知道哪些文件以及該文件集沒有更改時,這纔會起作用。