來自SQLite數據庫的信息通過Web服務器(顯示在HTML瀏覽器中)呈現給用戶。數據庫由獨立於Web服務器的小型應用程序加載一次。 DB數據不能從用戶瀏覽器中更改(這是隻讀服務)。SQLite數據庫文件可以只讀嗎?
由於Web服務器有自己的用戶標識,因此它使用「其他」權限訪問SQLite DB文件。出於安全原因,我想將DB文件權限設置爲rw-rw-r--
。
不幸的是,有了這個權限集,我得到一個警告attempt to write a readonly database at line xxx
,它指向一條關於SELECT
事務(原則上它是隻讀的)的一行。當然,我沒有結果。
如果權限更改爲rw-rw-rw
,一切正常,但這意味着每個人都可以篡改數據庫。
是否有任何理由爲什麼SQLite數據庫不能被訪問只讀?
即使對於SELECT事務,是否存在需要寫訪問的「幕後」處理?
在StackOverflow上查找表明,人們通常會抱怨相反的情況:遇到阻止寫入數據庫的只讀訪問權限。我的目標是保護我的數據庫免受任何更改嘗試。
對於完整的故事,我的web應用程序是用Perl
和使用DBD::SQLite
在我看來,像[某些版本](http://search.cpan.org/~ishigaki/DBD-SQLite-1.48/lib/DBD/SQLite.pm)的DBD :: SQLite允許您指定[標準SQLite URI參數](http://www.sqlite.org/uri.html)。其中之一是'mode = ro'。 –
你在使用WAL模式嗎? –
@CL DB以默認模式打開; WAL模式僅在默認情況下啓用 – ajlittoz