配置:
主机-----------Windows XP
虚拟机--------VMware Workstation
虚拟系统-----debian (2个,供相互访问用)
配置详解:
(一)、samba的安装就不在这里说了,如果不会就去网上找,找对应系统的安装方法... ...
(二)、建立一个匿名访问的共享目录
1.修改配置文件:smb.conf 2.建立相应目录并授权 3.重启samba 4.检查当前配置 5.windows访问共享文件 6.debian访问共享文件 |
(三)、建立基于用户验证的共享目录(注意:只是目录采用用户验证,而服务器不采用用户验证)
1.修改配置文件:smb.conf 2.添加用户 #useradd liming 3.建立相应目录并授权 4.重启samba(同上) 6.debian访问共享文件 |
(四)、建立服务器基于用户验证方式的共享目录(注意:服务器采用用户验证)
任务说明:
1、服务器采用用户验证的方式
2、建立一个group1的文件夹,并且只有用户group1才有权访问并读写。
3、建立一个gp1的目录,只有group1组的用户可以访问并读写
4、建立一个gp2的目录,group1组和group2组的用户都可以读,但只有group2组的用户有权写
5、建立一个公共的只读文件夹public,所有人只读这个文件夹的内容;
1.添加组,并为组添加用户 #groupadd group1 #smbpasswd -a group1 security = user [homes] [public] [group1] [gp1] [gp2] 4.重启samba(同上) 6.debian访问共享文件(同上) |
(五)共享访问限制
hosts deny = ALL
hosts allow = 192.168.152. 127.0.0.1
" hosts deny"指定不允许访问一个服务的主机列表,主机列表用","号、空格或制表符隔开。
" hosts allow"指定允许访问一个服务的主机列表,主机列表用","号、空格或制表符隔开。
当" hosts deny"与"allow hosts"列表冲突时,"allow hosts"列表优先。
一般情况下,它们两个是一起使用的,即先禁止所有IP,然后再允许一部分IP。
例如:
hosts deny = ALL
hosts allow = 192.168.0. EXCEPT 192.168.0.100
(六)全局设置:
workgroup = MYGROUP
定义该Samba服务器所在的工作组或者域(如果下面的security=domain的话)。
server string = MY Samba Server
设定机器的描述,当我们通过网络邻居访问的时候可以在备注里面看见这个内容,而且还可以使用samba
设定的变量。这里说一下samba定义的变量:
%S = 当前服务名(如果有的话)
%P = 当前服务的根目录(如果有的话)
%u = 当前服务的用户名(如果有的话)
%g = 当前用户说在的主工作组
%U = 当前对话的用户名
%G = 当前对话的用户的主工作组
%H = 当前服务的用户的Home目录
%v = Samba服务的版本号。
%h = 运行Samba服务机器的主机名
%m = 客户机的NETBIOS名称
%L = 服务器的NETBIOS名称
%M = 客户机的主机名
%N = NIS服务器名
%p = NIS服务的Home目录
%R = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)
%d = 当前服务进程的ID
%a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95)
%I = 客户机的IP
%T = 当前日期和时间
guest account = pcguest
定义游客帐号,而且需要把这个帐号加入/etc/passwd,不然它就用缺省的nobody
log file = LogFileName
定义记录文件的位置LogFileName(一般是用/var/log/samba/%m.log)
max log size = size
定义记录文件的大小size(单位是KB,如果是0的话就不限大小)
security = security_level
定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:
share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。
server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。
domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
后面三种安全级都要求用户在本Linux机器上也要系统帐户。否则是不能访问的。
password server = <NT-Server-Name>;
当前面的security设定为server或者domain的时候才有必要设定它。
password level = n
这是设定针对一些SMB客户像OS/2之类而设的,这样的系统在发送用户密码的时候,会把密码转换成大写再发送,这样就和samba的密码不一致,这个参数可以设定密码里允许的大写字母个数,这样samba就根据这个数目对接收到的密码进行大小写重组,以重组过的密码尝试验证密码的正确性。n越大,组合的次数就越多,验证时间就越长,安全性也会因此变得越低。例如n=2,用户的密码是abcd,但发送出去其实是ABCD,samba就会把这个ABCD进行大小写重组,组合后的结果可以是: Abcd, aBcd, abCd, abcD, abcd, ABcd, AbCd, AbcD,aBCd,aBcD,abCD。所以如果没有必要,就把n定为是零。这样的话samba只尝试两次,一个是接收到的密码,另一个尝试的是这个密码都是小写的情况。
username level = n
这个是对于用户名的情况,说明和上面一项类似。
encrypt passwords = yes|no
设置是否对密码进行加密,samba本身有一个密码文件/etc/samba/smbpasswd,如果不对密码进行加密则在验证会话期间客户机和服务器之间传递的是明文密码,samba直接把这个密码和Linux里的/etc/samba/smbpasswd密码文件进行验证。但是在Windows 95 OS/R2以后的版本和Windows NT SP3以后的版本缺省都不传送明文密码,要让这些系统能传送明文密码必须在其注册表里更改,比较麻烦,好的方法就是把这里的这个开关设置为yes。
smb passwd file = smbPasswordFile
设置存放samba用户密码的文件smbPasswordFile(一般是/etc/samba/smbpasswd)。