Linux -- Samba访问控制
訪問控制(1)
在6.3.3節中主要是針對某些特定用戶使用共享資源權限的控制,其管理主體為用戶。如果需要針對主機進行控制,方法也比較多,可以使用IPTables(具體見第17章),也可以使用Samba服務自身的控制。其實Samba所提供的訪問控制功能已經非常強大。Samba的訪問控制通過hosts allow(配置允許訪問的客戶端)、hosts deny(配置拒絕訪問的客戶端)兩個參數實現。
在Samba中使用hosts allow、hosts deny參數時,該參數可以出現在全局配置部分(如圖6-31所示),用于允許或拒絕可連接到Samba服務器的客戶端,也可以出現在具體的共享資源配置中(如圖6-32所示)用于允許或拒絕可訪問該資源的客戶端。如果在全局配置部分的hosts allow、hosts deny與具體共享資源的配置發生沖突時會怎么樣呢?通過Samba的工作過程不難看出Samba客戶端首先要可以連接到Samba服務器,才能訪問其共享資源,所有全局配置部分的hosts allow、hosts deny優先級與具體共享資源的配置發生沖突時使用以下規則。
(1)全局配置中hosts deny指定客戶端,此時無法訪問Samba服務器任何共享資源。
(2)全局配置中hosts allow指定客戶端,分以下幾種情況。
①:如具體共享資源中只指定了hosts deny且與全局配置不沖突時,客戶端可以訪問具體共享資源。
②:如具體共享資源中只指定了hosts allow且是全局配置的子集時,只有具體共享資源中指定的客戶端可以訪問。
③:如具體共享資源中即指定了hosts allow又指定了hosts deny時,首先根據hosts allow與hosts deny生效規則得出具體共享資源允許或拒絕的客戶端,再根據上面兩條規則得出最終的結果。
如果全局配置內或具體共享資源內的hosts allow與hosts deny發生沖突時會使用以下規則。
(1)如果hosts deny與hosts allow發生沖突時,hosts allow優先。
(2)如果只有hosts allow,除了hosts allow中指定的客戶端外其他所有客戶端都不能訪問。
(3)如果只有hosts deny,除了hosts deny中指定的客戶端外其他所有客戶都可以訪問。
1.使用IP地址控制
在hosts allow及hosts deny時,可通過使用IP地址精確允許或拒絕特定客戶端訪問Samba服務器,下面看幾個例子。
(1)不允許IP地址為192.168.0.20的客戶端訪問Samba服務器上smbtest目錄。
(2)只允許IP地址為192.168.0.25的客戶端訪Samba服務器上smbtest目錄。
[smbtest]???????comment?=?This?is?smb?test???????path?=?/test???????hosts?allow?=?192.168.0.20(3)下面的例子中,IP地址為192.168.0.99的客戶端可以訪問Samba服務器上的smbtest目錄嗎?當然是允許訪問,為什么呢?因為在Samba中hosts allow比hosts deny優先級要高。
[smbtest]???????comment?=?This?is?smb?test???????path?=?/test???????hosts?allow?=?192.168.0.99???????hosts?deny?=?192.168.0.992.使用網段控制
在hosts allow及hosts deny時,可通過使用子網允許或拒絕特定客戶端訪問Samba服務器,在表示子網時可以使用192.168.0./24、192.168.0.或192.168.0.0/255.255.255.0表示192.168.0.0子網掩碼24位子網。下面看幾個例子。
(1)不允許192.168.0.0/24所有客戶端訪問Samba服務器上smbtest目錄。
(2)只允許192.168.0.0/24所有客戶端訪Samba服務器上smbtest目錄。
[smbtest]???????comment?=?This?is?smb?test???????path?=?/test???????hosts?allow?=?192.168.0.(3)不允許192.168.0.0/24但不包括192.168.0.99的客戶端訪問Samba服務器上smbtest目錄。
[smbtest]???????comment?=?This?is?smb?test???????path?=?/test???????hosts?deny?=?192.168.0.???????hosts?allow?=?192.168.0.99(4)只允許192.168.0.0/24但不包括192.168.0.99的客戶端訪問Samba服務器上smbtest目錄。
[smbtest]???????comment?=?This?is?smb?test???????path?=?/test???????#?EXCEPT參數表示不包括。???????hosts?allow?=?192.168.0.?EXCEPT?192.168.0.99訪問控制(2)
3.使用域名控制
在hosts allow及hosts deny時,可通過使用域名允許或拒絕特定客戶端訪問Samba服務器,在表示域名時可以使用FQDN表示某個具體的客戶端或用域名表示某個域的所有客戶端。下面看幾個例子。
(1)不允許FQDN為client1.example.com的客戶端訪問Samba服務器上smbtest目錄。
[smbtest]???????comment?=?This?is?smb?test???????path?=?/test???????hosts?deny?=?client1.example.com.??(2)只允許example.com域的所有客戶端訪(2)只允許example.com域的所有客戶端訪問Samba服務器上smbtest目錄。
[smbtest]???????comment?=?This?is?smb?test???????path?=?/test???????hosts?deny?=.example.com(3)不允許example.com區域但不包括192.168.0.99的客戶端訪問Samba服務器上smbtest目錄。
[smbtest]???????comment?=?This?is?smb?test???????path?=?/test???????hosts?deny?=?.example.com???????hosts?allow?=?192.168.0.99(4)只允許example.com但不包括IP地址為192.168.0.99的客戶端訪問Samba服務器上smbtest目錄。
[smbtest]???????comment?=?This?is?smb?test???????path?=?/test???????hosts?allow?=?.example.com?EXCEPT?192.168.0.994.使用通配符控制
在hosts allow及hosts deny時,可通過使用通配符代表特定客戶端集。可以使用的通配符主要有:ALL表示所有客戶端,*表示任何個字符,?表示一個字符,LOCAL表示本地計算機。下面看幾個例子。
(1)拒絕除了192.168.0.99及192.168.0.100以外的所有客戶端訪問Samba服務器上smbtest目錄。
(2)除了192.168.0.0/24網段的客戶端(不包括192.168.0.99)以外拒絕所有客戶端訪問Samba服務器上smbtest目錄。
對于使用hosts allow及hosts deny的各種形式,看一個綜合例子:只允許192.168.0.0/24、192.168.1.0/24及192.168.2.0/24連接到Samba服務器,只允許.example.com域,但不包括192.168.0.99的客戶端訪問名為smbtest的共享目錄,只允許192.168.1.0/24的客戶端訪問名為smbtest1的共享。
(1)在[global]標簽下加入如下參數。
[global]???????hosts?allow?=?lo?192.168.0.?192.168.1.?192.168.2.??(2)在具體共享資源中加入如下參數。(2)在具體共享資源中加入如下參數。
[smbtest]???????comment?=?This?is?smb?test???????path?=?/test???????hosts?allow?=?.example.com?EXCEPT?192.168.0.99???[smbtest1]???????comment?=?This?is?smb?test1???????path?=?/test1???????hosts?allow?=?192.168.1.參考: http://book.51cto.com/art/201108/282445.htm?
轉載于:https://blog.51cto.com/57388/1552803
總結
以上是生活随笔為你收集整理的Linux -- Samba访问控制的全部內容,希望文章能夠幫你解決所遇到的問題。