rsyncd.conf配置rsync守護進程的方式在file forhtml
rsyncd.conf算法
的rsyncd.conf文件是rsync whenrun運行配置文件做爲一個rsync守護進程。shell
的rsyncd.conf文件控制認證、訪問、測井和模塊。數組
The file consists of modules and parameters. A module begins with thename of the module in square brackets and continues until the nextmodule begins. Modules contain parameters of the form "name = value".安全
該文件是基於行的--也就是說,每一個換行符終止線representseither評論,模塊的名稱或參數。服務器
只有第一個等號在參數是重要的。空白以前或以後第一個等號是丟棄。領導、跟蹤和internalwhitespace模塊和參數名稱是可有可無的。領導andtrailing空格在參數值被丟棄。內部whitespacewithin參數值保留逐字。session
任何線開始與哈希(#)是不容忽視的,如線containingonly空白。(若是一個哈希時比其餘任何leadingwhitespace,後被認爲是線的一部份內容。)app
任何行結束在一個\「繼續」在下一行中經常使用的UNIX時尚。ssh
在等號後的參數值都是字符串(沒有引號須要)或一個布爾值,它可做爲是/否,0/1,或假。在布爾值的狀況下不顯著,但preservedin字符串值。tcp
rsync守護進程啓動指定——守護選擇torsync
守護進程必須以root權限運行若是您但願使用chroot,與端口編號在1024(這是默認的873),或setfile全部權。不然,它必須有權限讀寫相應的數據,日誌和鎖文件。
你能夠經過inetd,做爲一個獨立的守護進程,或從rsync客戶端經過遠程shell。若是運行做爲一個獨立的程序只運行命令」——rsync守護進程「從一個合適的啓動腳本。
經過inetd運行時你應該添加這樣的線/等/服務:
rsync 873/tcp
一行像這樣的東西/etc/inetd.conf:
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
取代「/usr/bin/vi rsync」的路徑,在你安裝系統在rsync。你將須要發送一個信號告訴它HUP inetd的配置文件toreread。
你應該注意不把rsync守護進程一個hup信號削力重讀rsyncd.conf
文件文件從新閱讀每clientconnection。
文件中的第一個參數(在[模塊]頭)是全局參數。rsync也容許使用「[全球]「模塊名稱來表示一個或多個全局參數的一部分(名稱必須是小寫)。
你還能夠包括在所提供的值將覆蓋默認配置文件參數的狀況下,全球的任何模塊參數。
你可使用引用環境變量的參數值。字符串參數將有% %參考VaR擴展儘量晚(當字符串是在程序中使用),容許變量thatrsync套在鏈接時使用,如rsync_user_name。非字符串參數(如真/假設置)擴展閱讀時從配置文件。若是變量不存在於環境中的,或若是一個字符序列不是有效的引用(如一個未成對的百分號),原就是經過不變。這有助於向後兼容性和安全(如擴大一個不存在的% Var%在很是不安全的路徑,路徑可能會致使一個空字符串)。插入文字成一個最安全的方法是使用%。
setsockopt()
系統調用的詳細一些你能夠設置選項。默認狀況下沒有特殊設置套接字選項。這些設置也能夠specifiedvia的
sockopts……命令行選項
當你要定義一個模塊的全局參數,每一個模塊的出口目錄樹做爲一個象徵性的名字。模塊輸出的方括號[模塊指定模塊名稱]其次,模塊的參數,模塊名稱不能包含斜線和右方括號。若是名稱包含空格,每一個內部的空白序列將會改變成一個單一的空間,而前導或尾隨空格將被丟棄。另外,名稱不能「全球」,確切的名字所表示的全局參數(見上文)。
隨着全球的參數,您可使用引用環境變量的參數值。看到全局參數的更多細節部分。
rsyncd.conf
也許你基地的路徑的值從一個環境變量的變量名%的跡象時。你甚至能夠參考一variablethat設置rsync當用戶鏈接。例如,這將使用受權用戶的名稱的路徑:
path = /home/%RSYNC_USER_NAME%
它是好的若是路徑包括內部空間--他們將retainedverbatim(這意味着你不該該試圖逃走)。若是你的finaldirectory有空格(這是否是你的願望來解決),附加一個斜線的路徑來避免失去trailingwhitespace。
做爲一個額外的安全功能,您能夠指定一個點的目錄模塊中的「路徑」,指出在chroot應該發生。這讓rsyncto運行在chroot與非」/「路徑上的傳輸的層次。這樣作防意外庫加載(由於這些absolutepaths內不會轉移層次除非你擁有一個unwisepathname),並讓你創建圖書館,在傳遞。例如,指定「/無功/同步/。/ Module1」將chroot到/ var / rsync」目錄和設置在chroot路徑「/模塊」。若是你有略點目錄,chroot會用全路徑,路徑和內部chroot就「/」。
當「使用chroot」和「守護chroot」是錯誤的,或在chroot路徑的「使用chroot」不是「/」,rsync會:(1)顯示連接的默認安全的緣由(見「顯示符號連接」的方式將thisoff,但只有當你信任你的用戶),(2)替代領導斜線絕對路徑模塊的路徑(因此選項如--備份目錄,——比較DeST解釋,等一個絕對路徑asrooted模塊中的「路徑」目錄),和(3)裝飾」..「路徑元素fromargs若是rsync認爲他們逃逸的模塊層次結構。「使用chroot」是真正的默認,是更安全的選擇(若是模塊不是隻讀的)。
當此參數啓用,「數字標識」選項將默認被啓用(禁用名稱查找)。下面是chroot須要成功,名字查找。
If you copy library resources into the module's chroot area, youshould protect them through your OS's normal user/group or ACL settings (toprevent the rsync module's user from being able to change them), and thenhide them from the user's view via "exclude" (see how in the discussion ofthat parameter). At that point it will be safe to enable the mapping of usersand groups by name using the "numeric ids" daemon parameter (see below).
注意,你能夠設置自定義的用戶/組的信息thechroot地區,不一樣於正常的系統。例如,你能夠將用戶和組的列表。
chroot容許模塊不該該有此參數啓用除非you'vetaken步驟以確保模塊具備必要的資源,它須要翻譯的名字,併爲用戶改變這些資源是不可能的。這包括代碼可以調用功能getpwuid()
,getgrgid()
,getpwname()
,和getgrnam()
你應該測試什麼庫和配置文件都須要你的操做獲得那些設置在開始試驗在rsync名稱映射。
若是禁用此參數在一個守護進程,不是隻讀的,有技巧,用戶能夠玩到accessdaemon上傳連接排除的項目(若是你的模塊有),和,若是「使用chroot」是關閉的,甚至能夠欺騙rsync顯示或更改數據是模塊的路徑以外(如訪問權限容許)。
路rsync禁用符號的使用是每個字符串前綴與「/ rsyncd毀了/」。這能夠防止連接被做爲長期做爲該目錄不存在。當此參數啓用,rsync將拒絕運行若是路徑是一個目錄或連接到目錄。當使用「顯示符號連接」參數在chroot環境方面有「/」裏面的一個目錄路徑,你應該添加「/ rsyncd毀了/「排除設置模塊,用戶能夠不去創造它。
注:rsync不會嘗試驗證任何預先存在的符號連接的模塊的層次是像你但願的那樣安全(除非,固然,它只是複製整個層次結構)。若是你設置一個新的地區或局部添加一個rsyncdaemon符號連接,你能夠手動保護yoursymlinks被濫用的前綴「/ rsyncd毀了/」開始每符號的價值。這是在支持一個Perl腳本directoryof源代碼命名爲「顯示符號連接」可用於添加或從你removethis前綴符號。
當禁用此參數在可寫模塊和「使用chroot」關閉(或在chroot路徑不是「/」),輸入符號連接將被修改掉一個斜槓和刪除「..」路徑元素,rsync認爲將使連接的module'shierarchy逃跑。有棘手的工做方式在這,雖然,因此你最好相信你的用戶,若是您選擇此參數組合。
若是你想強迫用戶老是使用——iconv一particularmodule,添加「沒有iconv」到「拒絕選項」參數。記住,這將限制你的模塊很是新的rsync客戶。
syslog()
對於用程序不工做。文件打開以前
chroot()
是所謂的,容許它被放置在轉移。若是這個值被設置在每個模塊的基礎上,而不是ofglobally,全局日誌仍然會包含任何受權failuresor配置文件錯誤信息。
若是守護進程沒法打開指定的文件,它會回落居住的失敗日誌和輸出一個錯誤。(注:沒法打開指定的日誌文件的應用是一個致命的錯誤。)
這個設置能夠被使用--log-file=FILE或--dparam=logfile=FILE命令行選項。前overridesall守護進程的全部模塊設置日誌文件參數。後者爲全部模塊設置守護進程的日誌文件,默認狀況下,它仍然容許模塊重寫默認設置。
For example, if you wanted each authenticated user's name to beincluded in the syslog tag, you could do something like this:
syslog tag = rsyncd.%RSYNC_USER_NAME%
這也會影響用戶的能力要求更高水平的信息和——調試登陸中.若是最大值是2,那麼沒有信息和/或調試的價值是高於所設定的- VVwill be honored by the daemonin its logging. To see how high of a verbosity level you need to accept for aparticular info/debug level, refer to "rsync --info=help" and "rsync --debug=help".For instance, it takes max-verbosity 4 to be able to output debug TIME2 and FLIST3.
/var/run/rsyncd.lock
注意「受權用戶」能夠重寫此設置在每一個用戶的基礎。
Helpful hint: you probably want to specify "refuse options = delete" for awrite-only module.
的rsync_user_name環境變量可用於請求rsync RUNAS受權用戶。例如,若是你想要一個rsync運行爲sameuser,收到rsync認證,這種設置是有用的:
uid = %RSYNC_USER_NAME% gid = *
守護過濾器鏈是創建從「過濾」、「包括」、「包含」、「排除」、「排除」參數,在優先順序。anchoredpatterns錨定在該模塊的根。爲了防止訪問整個子樹,例如,「祕密」,你必須排除一切thesubtree;最簡單的方法來作到這一點是有三星模式如「祕密」***」。
「過濾器」參數以空格分隔的守護程序的過濾規則列表,但它是足夠聰明,知道不分令牌在內部空間不規則(如「/富/酒吧」解析爲兩條規則)。您能夠指定一個或多個文件的合併使用正常的語法規則。只有一個「過濾器」參數能夠指定配置文件中的模塊,因此把全部的規則,你想在一個單一的參數。請注意,每一個目錄文件的合併規則不提供儘量多的保護做爲全球規則,但它們能夠用來使刪除客戶端下載操做過程當中,若是每一個目錄合併在傳輸文件是和客戶要求他們用於工做。
除了用戶名匹配,您能夠指定組名匹配經過「@ 'prefix。使用組匹配時,認證的用戶名必須在系統區域的用戶,也會被認爲是無組織的成員。例如,指定「@ rsync」匹配的認證用戶若是指定用戶是rsync組成員。
最後,選項能夠指定後冒號(:)。該選項容許你「否定」的用戶或組,設置訪問「RO」(只讀),或將進入「刻錄」(讀/寫)。設置一個受權規則具體RO / RW設置overridesthe模塊的「只讀」設置。
必定要把規則中的順序來進行匹配,由於停在第一個匹配的用戶或組,這是惟一的auththat檢查。例如:
auth users = joe:deny @guest:deny admin:rw @rsync:ro susan joe sam
在上面的規則,用戶喬將被拒絕進入,不管什麼。任何用戶組中的「客人」也拒絕訪問。在讀/用戶「admin」getsaccess寫模式,但只有管理員用戶不在集團的「客人」(由於管理員用戶匹配規則將永遠沒法到達用戶若是是圈內的「客人」)。是誰在集團「rsync」會只讀訪問其餘用戶。最後,用戶蘇珊,喬,和山姆,RO / RW設置,只要用戶不匹配先前組匹配規則。
若是你須要有一個空間指定一個用戶或組的名稱,開始你的listwith逗號顯示列表應只Split(thoughleading和尾隨空格也將被刪除,和空項都忽略)。例如:
auth users = , joe:deny, @Some Group:deny, admin:rw, @RO Group:ro
看到的祕密文件描述你如何能夠每用戶passwordsas以及每組密碼。這也解釋了用戶如何authenticateusing用戶密碼或(適用時)的一組密碼,這取決於什麼樣的規則是被認證。
又見一節題爲「使用rsync-daemon特徵經過remoteshell鏈接」遠程同步(1)對如何處理anrsyncd.conf-level用戶名不一樣於當用遙控器外殼鏈接到一個遠程shell levelusername rsync守護進程的信息。
使用特定組的線只時的相關模塊beingauthorized使用匹配」「GroupName」規則。當這種狀況發生時,用戶可受權經過「用戶名:密碼線」或「@組:用於觸發認證組密碼」。
它是你的什麼樣的密碼項你想包括,eitherusers,組,或二者。使用組規則中「受權用戶」不須要你指定的一組密碼,若是你不想使用sharedpasswords。
沒有默認的「祕密文件」參數,你必須選擇一個名稱(如/etc/rsyncd.secrets
)。該文件必須一般不readableby「其餘」;看到「嚴格模式」。若是文件找不到或是拒絕,一個「用戶受權」模塊將有可能nologins。
每個模式能夠有五種形式:
- 一個虛線的形式ABCD十進制的IPv4地址,或一個IPv6地址的造成:B C D E F::::在這種狀況下,輸入機器的IP地址必須徹底匹配。
- 地址/掩碼的形式ipaddr / N ipaddr是IP地址和子網掩碼N是在一位數。與屏蔽的IP地址將被容許在全部的IP地址。
- 地址/掩碼的形式ipaddr / maskaddr哪裏ipaddr是IP地址和maskaddr是十進制表示法用於IPv4子網掩碼,或相似的協議,如:FFFF FFFF FFFF FFFF::::而不是/ 64。與屏蔽的IP地址將被容許在全部的IP地址。
- 使用通配符的主機名模式。若是鏈接的IP地址的主機名(如經過反向查找肯定)相匹配的通配符名稱(使用相同的規則爲正常的UNIX文件名匹配),容許客戶端在。這隻有當「反向查找」啓用(默認)。
- 一個主機名。一個普通的主機名是對鏈接的IP反向DNS匹配(若是「反向查找」功能),和/或給定的主機名的IP是對鏈接的IP地址匹配(若是「正向查找」功能,由於它是默認的)。一場比賽能夠在。
注意IPv6鏈路本地地址能夠在地址規範有一個範圍:
fe80::1%link1
fe80::%link1/64
fe80::%link1/ffff:ffff:ffff:ffff::
你也能夠把「主人容許「單獨」hosts deny」參數。若是指定兩個參數將「容許的主機參數進行校覈,比賽結果在客戶端可以鏈接。「hosts deny」參數,而後檢查和比賽意味着拒絕主機。若是主機不匹配的「容許登陸」或「hosts deny」模式則容許鏈接。
默認是不容許的主機參數,這意味着全部的主機均可以鏈接。
默認是沒有「hosts deny」參數,這意味着全部的主機均可以鏈接。
若是這個參數是全局啓用(甚至默認),rsync執行thelookup當一個客戶端鏈接,因此禁用這一模塊將回避的查找。所以,您可能但願禁用它的全局和thenenable它須要的信息模塊。
若是你想自定義日誌行,看到「日誌格式」參數。
默認的日誌格式是「‰% % % M H [一](%)f L」、和「%t [%P]」始終是前綴時使用「日誌文件」參數。(一個Perl腳本,將總結這個默認的日誌格式包括rsync源代碼分佈在「支持」的子目錄:rsyncstats。)
單字符轉義,理解以下:
- %的遠程IP地址(只提供一個守護進程)
- % b字節數實際轉移
- %B the permission bits of the file (e.g. rwxrwxrwt)
- %的總大小的塊校驗收到的基礎文件(僅當發送)
- %的C完整的文件校驗和若是它是已知的文件。年長的Rsync協議/版本、校驗和醃了,所以是否是一個有用的價值(而不是顯示在這種狀況下)。用於文件輸出校驗,要麼——校驗選項必須在效果或文件必須被轉移無鹹校驗和使用。看到-選擇-校驗一種選擇算法選擇
- % f文件名(形式發送;無尾的「/」)
- % G文件的GID(十進制)或「默認」
- % h遠程主機名(只提供一個守護進程)
- 爲我詳細列表被更新
- % L文件的字節長度
- %L the string " -> SYMLINK", " => HARDLINK", or "" (where符號連接或硬連接是一個文件名)
- % m模塊名稱
- %的M文件的最後修改時間
- % N名(簡稱;尾」/「在目錄)
- %o the operation, which is "send", "recv", or "del." (the latter includes the trailing period)
- %p the process ID of this rsync session
- % P模塊路徑
- %T當前日期時間
- %的認證用戶名或空字符串
- %u文件的UID(十進制)
For a list of what the characters mean that are output by "%i", see the--itemize-changes在manpage rsync的期權。
值得注意的是,一些記錄的輸出變化與olderrsync版本說話的時候。例如,刪除的文件只輸出是rsync 2.6.4以前verbosemessages。
refuse options = c delete
上述的理由拒絕全部刪除的選項,選項意味着刪除,和隱含期權拒絕就像明確的選擇。做爲一個額外的安全功能,拒絕「刪除」,也不刪除源文件當守護進程是發送者;若是你想latterwithout前者,而拒絕「刪除」,拒絕一切刪除模式無影響刪除源文件
When an option is refused, the daemon prints an error message and exits.To prevent all compression when serving files,you can use "dont compress = *" (see below)instead of "refuse options = compress" to avoid returning an error to aclient that requests compression.
「不壓縮」參數以空格分隔的列表不敏感的通配符模式案例。任何源文件名匹配一個模式不會被壓縮在轉移。
看到我跳過compress參數在遠程同步(一)對於未壓縮的默認列表的文件後綴的聯機幫助頁。指定一個值「不壓縮」參數變化時的守護是默認發件人。
下列環境變量將被設置,雖然一些針對預傳輸或傳輸環境後:
- rsync_module_name:該模塊所訪問的名字。
- rsync_module_pathThe Path構型:for the模塊。
- _ _ rsync的主機地址:訪問的主機的IP地址。
- _ _ rsync的主機名稱:訪問主機的名字
- _使用rsync _ name:訪問用戶的名字(空若是沒有用戶)。
- _ rsync PID:獨特的number for this轉移。
- rsync _ request:(預傳輸只)由用戶指定的模塊/路徑信息。值得注意的是,用戶能夠指定多個源文件中,因此請求能夠像「模式/模式/ 1 2」,等等。
- _ Arg # rsync: (pre-xfer only) The pre-request arguments are set in these numbered values. RSYNC_ARG0 is always "rsyncd", followed by the options that were used in RSYNC_ARG1, and so on. 將有價值的」,「代表選項和路徑參數開始——這些包含相似的信息rsync_request,但與價值分離模塊名稱剝離。
- rsync_exit_status:(後轉送只)服務器端的出口價值。這將是0的成功運行,爲一個錯誤,服務器生成一個正的值,或1若是rsync未能正常退出。注意,這發生在客戶端錯誤目前不被髮送到服務器端,因此這不是總體傳遞最終退出狀態。
- rsync_raw_status:(後轉送只)原出口值
waitpid()
即便這個命令能夠與一個特定的模塊相關,它們運行的用戶使用,開始了守護進程的權限(不是模塊的UID和GID設置)沒有任何chroot限制。
There are currently two config directives available that allow a config file to incorporate the contents of other files: &include and &merge. Both allow a reference to either a file or a directory. They differ in how segregated the file's contents are considered to be.
The &include directive treats each file as more distinct, with each one inheriting the defaults of the parent file, starting the parameter parsing as globals/defaults, and leaving the defaults unchanged for the parsing of the rest of the parent file.
The &merge directive, on the other hand, treats the file's contents as if it were simply inserted in place of the directive, and thus it can set parameters in a module started in another file, can affect the defaults for other files, etc.
When an &include or &merge directive refers to a directory, it will read in all the *.conf or *.inc files (respectively) that are contained inside that directory (without any recursive scanning), with the files sorted into alpha order. So, if you have a directory named "rsyncd.d" with the files "foo.conf", "bar.conf", and "baz.conf" inside it, this directive:
// 目前有兩個配置指令可用的配置文件與其它文件的內容:&include and &merge。Bothallow引用一個文件或一個目錄。他們在不一樣的howsegregated文件的內容是。
// 這個與包括指令將每一個文件更加鮮明,每一個oneinheriting的父文件的默認設置,啓動參數parsingas globals/defaults,離開默認不變的解析,其他的父文件。
// 這個與合併指令,另外一方面,對文件的內容進行簡單的插在阿西的指令,所以它能夠在一個模塊setparameters開始在另外一個文件,能夠影響其餘文件的默認值,等等。
// 當一個與包括或與合併指令是指一個目錄,它將記錄全部* .conf或*公司文件(分別),包含insidethat目錄(不anyrecursive掃描),與文件分爲α階。因此,若是你有一個目
// 錄名爲「rsyncd。D」和文件「foo conf」、「酒吧。會議」,和「巴茲conf」裏面,這個指令:
&include /path/rsyncd.d
將這套指令相同:
&include /path/rsyncd.d/bar.conf &include /path/rsyncd.d/baz.conf &include /path/rsyncd.d/foo.conf
除了它調整的文件添加和從目錄中刪除。
的優點與包括指令,你能夠定義一個或moremodules在一個單獨的文件,而沒必要擔憂反作用獨立的模塊文件。
的優點與合併指令是能夠加載配置snippetsthat能夠分紅多個模塊的定義,你也能夠設置 global值 會影響鏈接(如motd file),或 globals 會影響其餘包含文件。
例如,這是一個有效的/etc/rsyncd.conf文件:
port = 873 log file = /var/log/rsync.log pid file = /var/lock/rsync.lock &merge /etc/rsyncd.d &include /etc/rsyncd.d
這將合併任何 /etc/rsyncd.d/*.inc 文件(for global values that should stay in effect)包括任何 /etc/rsyncd.d/*.conf 文件(沒有任何global-value cross-talk)。
使用rsync的認證協議是一個128位的MD4 basedchallenge響應系統。這是至關弱的保護,雖然(至少一個強力的哈希算法公開的發現),若是你真的想要高質量的安全,那麼我建議你runrsync ssh。(是的,將來版本的rsync將切換到更強的哈希方法。)
Also note that the rsync daemon protocol does not currently provide anyencryption of the data that is transferred over the connection. Onlyauthentication is provided. 使用ssh做爲運輸若是你wantencryption。
rsync的將來版本可能支持SSL更好的認證和加密,但仍在調查中。
一個簡單的rsyncd.conf文件,容許匿名rsync FTP區/home/ftp
將:
[ftp] path = /home/ftp comment = ftp export area
一個更復雜的例子是:
uid = nobody gid = nobody use chroot = yes max connections = 4 syslog facility = local5 pid file = /var/run/rsyncd.pid [ftp] path = /var/ftp/./pub comment = whole ftp area (approx 6.1 GB) [sambaftp] path = /var/ftp/./pub/samba comment = Samba ftp area (approx 300 MB) [rsyncftp] path = /var/ftp/./pub/rsync comment = rsync ftp area (approx 6 MB) [sambawww] path = /public_html/samba comment = Samba WWW pages (approx 240 MB) [cvs] path = /data/cvs comment = CVS repository (requires authentication) auth users = tridge, susan secrets file = /etc/rsyncd.secrets
/etc/rsyncd.secrets 文件格式是這個樣子:
tridge:mypass
susan:herpass
/etc/rsyncd.conf or rsyncd.conf
遠程同步(1)
請報告錯誤!rsync的bug跟蹤系統是在網上http://rsync.samba.org/
這個是rsync 3.1.3的幫助文檔。
rsync是GNU通用公共許可證下發布。詳細內容見filecopying。
rsync主FTP站點是ftp://rsync.samba.org/pub/rsync.
一個網站是可用的http://rsync.samba.org/
咱們會很高興聽到你,若是你喜歡這個程序。
本程序使用zlib壓縮讓loupgailly和Mark Adler寫的圖書館。
感謝Warren Stanley最初的想法和補丁的rsyncdaemon。感謝Karsten Thygesen爲他的許多建議和文件!
rsync是由Andrew Tridgell和Paul Mackerras寫的。不少人後來促成了它。
爲支持和開發郵件列表可在http://lists.samba.org