Docker中運行redis報錯誤: Failed opening the RDB file root (in server root dir /etc/cron.d) for saving: Permission denied


錯誤信息:

1:M 23 Dec 2021 19:53:02.058 * Background saving started by pid 1848
1848:C 23 Dec 2021 19:53:02.058 # Failed opening the RDB file backup.db (in server root dir /etc) for saving: Permission denied
1:M 23 Dec 2021 19:53:02.158 # Background saving error
1:M 23 Dec 2021 19:53:03.010 # Failed opening the RDB file root (in server root dir /etc) for saving: Permission denied
1:M 23 Dec 2021 19:53:03.073 # Failed opening the RDB file root (in server root dir /etc) for saving: Permission denied
1:M 23 Dec 2021 19:53:03.103 # Failed opening the RDB file root (in server root dir /etc) for saving: Permission denied
1:M 23 Dec 2021 19:53:04.227 # Failed opening the RDB file zzh (in server root dir /etc/cron.d) for saving: Permission denied
1:M 23 Dec 2021 19:53:04.323 # Failed opening the RDB file crontab (in server root dir /etc) for saving: Permission denied

問題原因
Background saving這個是Redis用來保存以RDB模式運行的當前快照的線程所寫入的日志.

redis的不安全訪問,導致配置被修改.

攻擊者想利用redis直接修改crontab配置,實現一些定時任務寫入,從而去執行一些"特殊"命令(比如,挖礦等),甚至掌控服務器.

解決方法

永久方法

1.修改配置文件

requirepass 123456 # 123456 換成你的密碼

  

下面部分不影響,但是是更安全的做法.redis3.2后可用.

bind 0.0.0.0 # 綁定到具體地址
protected-mode yes # 開啟保護模式,該模式將需配置bind ip或者設置訪問密碼

臨時方法

通過redis-cli進入redis客戶端,然后通過config設置密碼(直到重啟前有效).

config get requirepass # 查看當前密碼

  

1) "requirepass"
2) ""

  

如果結果如上,則表明當前沒有密碼.

(error) NOAUTH Authentication required.

  

如上則表示有密碼,而你是未授權訪問的.

設置新密碼:

config set requirepass <you password> # <you password> 替換成你的密碼

  

通過 config get檢查是否設置成功.設置成功后,通過下面命令認證:

auth <you password> # <you password> 替換成你的密碼
get a

如果能看到正常的返回值,就說明成功了.

這樣就能避免別人輕易訪問redis-server.
注意此處的密碼長度最好比較長,比如10位以上,因為redis的速度太快了,通過暴力破解的可能性高於通常的http方式.

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM