我們都知道rsync是linux自帶的功能強大的文件同步協議。 為了做免密碼文件同步,所以,有多種配置。但是種種配置中,可能會遇到一個讓人很糾結的問題,那就是安全認證錯誤的問題!
這個配置,是基於rsync daemon的應用,主要是為了方便應用程序操作的方便。
這個問題,有可能是密碼錯誤,有可能是daemon端的秘鑰文件權限不是600,等等。我這里不是說這些問題,我要說的是一個非常讓人抓狂的問題,就是rsyncd.conf文件里面的空格造成的認證失敗的問題。
先看配置文件:
1 uid = nginx 2 gid = nginx 3 pid file=/var/run/rsyncd.pid 4 log file=/var/log/rsyncd.log 5 secrets file = /etc/rsyncd.secrets 6 auth users = cmsuser 7 8 [cms] 9 path = / 10 read only = no
直接看上面的配置,是不是覺得沒有什么問題?
測試看看吧,日志:
1 [tomcat@p0-tkonline-cms-app01 /u02/tomcat]$ rsync -avz -b tapp1 cmsuser@10.135.88.11::cms/olnfsdta/TK_ROOT 2 @ERROR: auth failed on module cms 3 rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
這個是不是就是問題了?為何還是報錯呢? 不細心的人,可能抓破腦袋都不知道問題在哪!我也是呵呵,也只能呵呵一下!
我由於配置linux相關的服務,遇到奇葩問題多了,曾近就發現過是配置文件中有空格造成的問題,於是乎,我也懷疑這里有空格的問題,所以, 將配置文件打開一看,逐個去找哪有看不見的空格。看看下面的圖:
將鼠標挪到uid的最后一個字符處,就發現了一個空格。。。繼續檢查,將其他的字符串尾部的空格都去掉。然后重啟rsync daemon。再次傳遞文件,吼吼,OK了!
總結: rsync的daemon啟動模式下,rsyncd.conf的配置文件,必須謹記,每一行配置最后不能有空格,尤其是像auth users這一行不能有空格,uid,gid等也不能有空格! linux的配置,有好些都要小心,一個好的配置習慣,就是盡量寫規范,不要引入不必要的空格,更不要搞出中文的空格或標點符號!