2011-12-01 54 views
1

我已經在一個Linux系統上安裝了一個ruby腳本(script.rb),它需要另一個文件(required.rb)和一堆自定義方法。我可以允許ruby腳本讀取文件,但不允許用戶調用腳本?

我不想讓我的用戶閱讀required.rb。

如果刪除的讀取權限(即搭配chmod 600 required.rb),然後嘗試運行我的腳本,我碰到下面的錯誤用戶:

no such file to load -- /etc/required.rb

有沒有去讓紅寶石閱讀這個必需的文件,但阻止用戶看到它?

+1

屬於http://serverfault.com/ –

+1

可以說。這與管理問題一樣是一個編程問題。 –

回答

2

進程是否可以讀取文件受所述進程的有效UID支配。如果您更改文件的權限,則用戶進程(包括ruby進程)無法讀取它。

一個解決方案是讓別人擁有你的ruby解釋器,然後使它成爲setuid,但是這將使其有權讀取這些「受保護」的文件,而不管它運行什麼腳本。總之,不要這樣做。

另一種選擇是將數據保存在文件系統以外的其他位置,然後爲此使用單獨的身份驗證系統。

我認爲正確的方法是在腳本中使用所有方法,但是使用某種AAA線束來限制對不希望用戶運行的方法的訪問。然後,您可以使用任何AAA後端來驗證您的用戶(LDAP,密碼文件等)。

+1

我擔心的是,我不僅希望用戶運行該方法 - 我不希望他們甚至能夠看到該方法,因爲我擔心他們只能複製代碼並運行。我正在考慮將腳本的UID設置爲特權用戶,然後使用sudo允許用戶運行它。 – user1074981

+0

setuid位不適用於腳本(安全隱患)。儘管你的要求有點奇怪。你認爲你的架構需要更多思考嗎? –

相關問題