Samba有4种安全级,由参数security定义,该参数只能出现在[global]段中,是一个全局参数。这4种安全级是share、user、server和domain,其中后三种属于安全模式(Security Mode),这里重点讨论share和user安全级。
设置share安全级需要设定参数:
security = share
当客户机连接到一个share安全级的服务器时,它在连接共享之前,不需要首先提供正确的账号和密码就可以登录到服务器(虽然Windows 2003等客户机在连接share级服务器时会发出一个登录请求,该请求只包含账号)。相反的,客户机只有在连接特定的共享时才需提供密码。
注意:服务器总是使用有效的Fedora 6账号来提供服务,即使是工作在share安全级。
因为客户机并不向share级的服务器提供账号,所以服务器使用下面的技术来确定使用什么账号提供服务:
(1)如果该共享包含“guest only =yes”参数,则使用“guest account=”参数指定的guest账号,忽略下面的步骤。
(2)如果连接请求同时提供一个账号,那么该账号被认为是潜在的账号。
(3)如果客户机在此之前发出过登录请求,那么该请求包含的账号也被视为潜在的账号。
(4)客户机请求连接的共享名被视为潜在账号。
(5)客户机的NetBIOS名被视为潜在账号。
(6)“user =”列表中的账号被视为潜在账号。
如果guest only参数为假,则检查所有的潜在账号,使用第一个和密码匹配的账号。如果guest only参数的值为yes,或者该共享允许使用guest account,则使用之,否则拒绝连接。可见,share服务器决定账号的过程是很复杂的。
设置user安全级需要设定参数:
security = user
这是Samba默认使用的安全级。使用user安全级时,服务器要求客户机首先以正确的账号和密码登录(可以对账号进行映射)“user = ”和“guest only”等可能改变用户身份的参数只有在用户成功登录之后才起作用。
注意:客户机请求连接的共享名只有在登录之后才传递给服务器,因此没有通过身份验证的用户无法访问任何共享(包括guest共享)。可以使用map to guest选项将未知用户映射为guest用户,以允许访问guest共享。
设置server安全级需要设定参数:
security = server
在server安全级下,Samba使用远程SMB服务器(如Windows 2003服务器)进行身份验证。如果失败则自动切换到user安全级。对于客户机来说,server安全级和user安全级没有什么不同。
设置domain安全级需要设定参数:
security = domain
要是用本模式,必须使用smbpasswd程序将Samba服务器加到一个Windows 2003域中,并且使用“加密口令(Encrypted Passwords)”。在本安全级下,Samba借助Windows 2003主控服务器(Windows 2003 Primary)或者是后备域控制器(Backup Domain Controller)进行身份验证,采取与Windows 2003服务器相同的行为。
share安全级面向资源,用户每连接一个非guest共享都需要提供一个密码。如果主要提供guest共享,就应该使用share安全级。user安全级面向用户,用户登录后,就无须再为单独的共享提供密码,比较方便。如果用户在PC上的账号和在Fedora 6上的账号相同,那么使用user安全级是非常合适的。