samba配置详解

 配置:

主机-----------Windows XP

虚拟机--------VMware Workstation

虚拟系统-----debian (2个,供相互访问用)

 

配置详解:

(一)、samba的安装就不在这里说了,如果不会就去网上找,找对应系统的安装方法... ...

(二)、建立一个匿名访问的共享目录

1.修改配置文件:smb.conf 
debian:~#  vi /etc/samba/smb.conf 
[global] 
workgroup = WORKGROUP
 netbios name = debian_text           
 server string = debian_text samba server 
security = share 
[allshare] 
 path = /home/allshare
 comment = share allshare
 writeable = yes
 browseable = yes
 public = yes 2.建立相应目录并授权 
debian:~#  mkdir /home/allshare 
debian:~#  >/home/allshare/hello.txt 
debian:~#  chmod -R 777 /home/allshare3.重启samba 
debian:~# /etc/init.d/samba restart 
其它系统可用下面的命令进行重启: 
#service smb stop
 #service smb start
 #service smb restart 4.检查当前配置 
# testparm5.windows访问共享文件 
在IE或网上邻居中输入“//ip”即可, ip可以通过ifconfig命令获得(下面统一使用IP:192.168.0.1)
注意:不是ipconfig6.debian访问共享文件 
#smbclient -L 192.168.0.1                //查看共享列表
 #smbclient   //192.168.0.1/allshare   //登陆目标主机的共享目录allshare 
 smb>get hello.txt                           //将远程主机上的hello.txt文件下载到本地目录
 smb>put /home/myhello.txt  myhello.txt    //上传文件,必须指定目标目录和名称
 smb>quit

 

(三)、建立基于用户验证的共享目录(注意:只是目录采用用户验证,而服务器不采用用户验证

1.修改配置文件:smb.conf 
debian:~#  vi /etc/samba/smb.conf 
[global] 
workgroup = WORKGROUP
 netbios name = debian_text           
 server string = debian_text samba server 
security = share 
[liming] 
 path = /home/liming
 comment = liming's directory
 public = no
 writable = yes
 browseable = yes
 valid users = liming 2.添加用户
#useradd liming
 #smbpasswd -a liming        #密码统一为:1234563.建立相应目录并授权 
debian:~#  mkdir /home/liming 
debian:~#  chown liming.liming /home/liming  #将目录的所有者改为liming4.重启samba(同上) 
5.windows访问共享文件 
在IE或网上邻居中输入“//ip”即可,这个时候进入服务器是不用密码的,但是当你进入"liming目录"就要输入用户名和密码了。6.debian访问共享文件 
#smbclient -L 192.168.0.1                //查看共享列表
 #smbclient   //192.168.0.1/liming -U liming%123456   //登陆目标主机的liming目录,其中用户名:liming,密码:123456(就是上面设置)
 #以后操作同上

(四)、建立服务器基于用户验证方式的共享目录(注意:服务器采用用户验证

任务说明:
1、服务器采用用户验证的方式

2、建立一个group1的文件夹,并且只有用户group1才有权访问并读写。

3、建立一个gp1的目录,只有group1组的用户可以访问并读写

4、建立一个gp2的目录,group1组和group2组的用户都可以读,但只有group2组的用户有权写

5、建立一个公共的只读文件夹public,所有人只读这个文件夹的内容;

1.添加组,并为组添加用户
#groupadd group1
 #groupadd group2 
 #useradd -g group1 group1
 #useradd -g group1 user1 
 #useradd -g group1 user2
 #useradd -g group2 group2
 #useradd -g group2 user3 
 #useradd -g group2 user4   #smbpasswd -a group1
 #smbpasswd -a group2 
 #smbpasswd -a user1
 #smbpasswd -a user2
 #smbpasswd -a user3
 #smbpasswd -a user4  2.修改配置文件:smb.conf 
debian:~#  vi /etc/samba/smb.conf 
[global]security = user
 encrypt passwords = yes
 smb passwd file = /etc/samba/smbpasswd[homes]
 comment = home directories
 browseable = no
 writeable = yes
 valid users = %S
 create mode = 0664
 directory mode = 0775[public]
 comment = public's directory
 path = /home/public
 public = yes
 writeable = no[group1]
 path = /home/group1
 comment = group1's diterctory
 public = no
 writeable = yes
 valid users = group1[gp1]
 path = /home/gp1
 comment = gp1's diterctory
 public = no
 valid users = @group1
 write list = @group1[gp2]
 path = /home/gp2
 comment = gp2's diterctory
public = no
 valid users = @group1,@group2
 write list = group2 
 3.建立相应目录并授权 
debian:~#  mkdir /home/group1 
debian:~#  chown group1.group1 /home/group1 
debian:~#  mkdir /home/gp1 
debian:~#  chown group1.group1 /home/gp1 
debian:~#  mkdir /home/gp2 
debian:~#  chown group2.group2 /home/gp2 
debian:~#  mkdir /home/public 
debian:~#  chmod 777 /home/public4.重启samba(同上) 
5.windows访问共享文件 (同上)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)。