2010-08-14 129 views
0

我已經寫了一個Linux系統寬C++程序/usr/bin/PROG_X,它使用配置文件/etc/PROG_X.conf和日誌文件/var/PROG_X.log程序可執行文件和日誌文件的權限應該是多少?

現在我需要在使用apache web服務器和php的web上強調認證之後調用這個程序。調用該程序可能涉及更改配置文件,並且會改變日誌文件。

我對保持啓用SELinux感興趣。

我的排序是:應該爲二進制文件,配置文件和日誌文件設置哪些用戶/組和文件權限以進行正確和安全的操作?

回答

2

在大多數鎖定的方法(假定日誌和配置是敏感的):

運行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]

1

好了,我不知道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。但是,只有當你確切知道哪些文件以及該文件集沒有更改時,這纔會起作用。

相關問題