samba服务器的架设

一.samba 的基本概念
1.samba 的功能
samba是一种基于linux/unix平台中利用于smb(服务信息块)协议,实现以下功能的软件包:
? Linux/ UNIX与MS系统主机之间的文件及打印共享
? 支持wins服务器解析和浏览
? 支持Windows域控制器和成员服务器的身份验证
? 可以模拟windows的域控制器
? 支持SSL
2.samba的工作原理
samba利用smbd程序来监听139号端口实现主机之间文件及打印共享,利用nmbd监听137,138端口实现主机之间可以利用netbios名称相互访问
二. samba的配置
1. 安装samba的软件包.
#mount /dev/cdrom (插入第一张安装光盘)
#cd /mnt/cdrom/RedHat/RPMS
#rpm �Civh samba-common-2.2.7a-7.9.0.i386.rpm
#rpm �Civh   samba-2.2.7a-7.9.0.i386.rpm
#rpm �Civh samba-client-2.2.7a-7.9.0.i386.rpm
相关文件:
   /etc/samba/smb.conf              samba的核心配置文件
   /etc/rc.d/init.d/smb             samba的启动脚本
   /usr/sbin/smbd                   samba的守护进程
   /usr/sbin/nmbd                   netbois的守护进程
   /etc /samba/smdpasswd            存放samba用户口令
   /etc/samba/smbusers              存放samba用户与系统用户的映射情况
   /usr/sbin/swat                   samba的web配置工具
   /usr/bin/smbadduser              加samba用户
   /usr/bin/smbpasswd               设置samba用户的口令
   /usr/bin/smbclient                samba的客户访问工具
   /usr/bin/smbprint                   samba的打印工具
   /usr/bin/smbmount                   samba客户加载工具
   /usr/bin/smbumount                  samba客户卸载工具
2. 修改/etc/samba/smb.conf
  作用:  设置samba服务器选项和共享资源的设置
  内容:  #说明语句
[global]       //定义samba服务器的全局选项
…………
…………
全局参数=值
…………
…………
         [homes]        //共享用户主目录
…………
…………
资源共享参数=值
…………
…………
         [printers]       // 打印机共享
…………
…………
资源共享参数=值
…………
…………
         [public]          //共享目录设置
…………
…………
资源共享参数=值
…………
…………
以上声明为系统自带的声明,用户也可以根据实际需要定义共享目录:
             [自定义]      自定义的共享
…………
…………
资源共享参数=值
…………
…………
说明:
(1)  全局参数
基本设置参数:Workgroup=域名/工作组名
功能:设定samba服务器所属工作组/域的名称)
实例:workgroup=linux
Netbios name=主机名称
功能:设置samba服务器的netbios名称
实例:netbios name=smbserver
Server string=字符串
功能:设置samba服务器的描述
实例:server string=samba server
interfaces=接口名/ip地址
功能:设置samba服务器的ip地址,如果不想使用默认IP地址或者想同时使用多个IP地址,可以设置这个选项
实例:interfaces=eth0  192.168.1.1/255.255.255.0
netbios aliases=主机名称
功能:设置netbios的别名
实例:netbios aliases=smb1 smb2
bind interfaces only=true/false
功能:设置主机配置多块网卡时,是否区分开不同网卡的数据报,默认为false
实例:bind interfaces only=false
安全设置参数:admin users=用户名
     功能:设置管理员账号,该用户拥有所有文件的存取权限
实例:admin users=smbadmin
socket address=ip地址
功能:指定samba服务器监听的ip地址
实例:socket address=192.168.0.1
security=user/share/domain/server
功能:设置samba的共享安全级别
注意:share  表示共享级访问,服务器不对客户机进行身份验证
      user   表示用户级访问,被访问的samba服务器要对客户机进行身份验证
server  表示服务器级访问,被访问的samba服务器请求另一台samba服务器对客户机进行身份验证
domain  表示域级访问,被访问的samba服务器请求另一台win NT域控制器对客户机进行身份验证
实例:security=share
   
encrypt passwords=yes/no
功能:指定是否使用加密口令
注意:对于windows客户机来说,该选项应该设置为yes
实例:encrypt passwords=yes
restrict anonymous=true/false
功能:指定服务器是否允许win NT/2000以匿名方式登录
实例:restrict anonymous=false
   
security mask=权限值
功能:设置windows 客户机改变samba服务器文件权限时所能更改的最大文件权限
 实例:security mask =0744
smb passwd file=文件路径
功能:指定samba用户密码的文件位置
实例:smb passwd file=/etc/samba/smbpasswd
map to guest=never/bad user/bad password
功能:设置当用户所输入的用名和密码不正确时的处理方式
注意:该选项只有security=user时才有效,该选项可以取以下三种值:
never 表示拒绝使用任何资源
bad user 表示用户输入用户名正确,但密码错误时,可以允许以guest登录
bad password 表示用户输入的用户名和口令都错误时,可以允许以guest登录
min passwd length=数字
功能:指定密码的最小长度,默认值为5位
实例:min passwd length=5
null passwords =yes/no
功能:设置是否允许用户密码为空
实例:null passwords=yes
password level=数字
功能:设置用户设置密码时,最多允许几个字符大小写不同
实例:passwd level=8
username level=数字
功能:当验证账号时,设定最多允许几个字符大小写不同
实例:username level=8
username map=文件路径
功能:指定SMB用户名与LINUX用户名映射文件的路径
实例:username map=/etc/samba/smbusers
   
unix passwd sync=false/true
功能:设置服务器是否允许samba用户口令与linux系统用户密码同步,当改变samba用户口令同时更新linux系统用户的口令
实例:unix passwd sync=false
 
password  server=ip址址/主机名
功能:指定密码服务器的位置,当security值为server/domain必须设置该参数
实例:password server=192.168.3.1
 
update encryptd =yes/no
功能:设置客户在samba用户登录时,是否需要修改密码
实例:update encryptd=yes
   
guest account=用户名
功能:指定来宾账号的名称,默认为nobody
实例:guest account =guest
   
root directory=目录名
功能:指定samba服务器工作主目录,任何不在此目录下的资源则拒绝访问
实例:root directory=/etc/samba/
hosts allow= ip地址/主机名/域名 
功能:设置允许访问的客户机
实例:hosts allow=192.168.1.1
hosts deny=ip地址/主机名/域名
功能:设置禁止访问的客户机
实例:hosts deny=192.168.0.2
打印机设置参数:
printcap name=路径
功能:设定打印机的配置文件的位置
实例:printcap name=/etc/printcap
load printers =yes/no
功能:设定是否自动装载打印机的装载文件,当要做打印服务器时必须设置为yes
实例:load printers=yes
printing =bsd/lprng/aix/hpux/qnx/sysv/plp
功能:设置打印机相关指令时所采取的模式
实例:printing=lprng
printer name=名称
功能:设置打印机的名称
实例:printer name=hpprint
printer driver file=路径
功能:设置打印机驱动文件的位置
实例:printer driver file=/etc/samba/driver
日志设置参数: log file=路径
功能:定义日志文件的位置
实例:log file=/var/log/samba/%m.log
max log size=数字
功能:定义日志文件的最大千字节
实例:max log size=5000
运行效率参数:change notify timeout=数字
功能:设置服务器周期性异常通知
实例:change notify timeout=90
deadtime=数字
功能:客户端无操作多少分钟后服务器中断连接
实例:deadtime=10
getwd cache=yes/no
功能:是否启用cache功能
实例:getwd cache=yes
keepalive=数字
功能:服务器每隔多少秒向客户端发送keepalive包用于确认客户端是否工作正常
实例:keepalive=30
max open files=数字
功能:同一个客户端最多能打开的文件数目
实例:max open files=1000
max ttl=数字
功能:设定nmbd程序采用wins方式解析时,最大存活时间
实例:max  ttl=259200
client code page=850/936
功能:设定客户端存取samba服务器的资源时所使用的字符编码表
实例:client code page=936
wins设置参数:
wins support=yes/no
功能:是否支持wins解析
实例:wins support=yes
wins server=服务器
功能:指定wins服务器的位置
实例:wins server=192.168.0.2
wins proxy=yes/no
功能:设置samba服务器是否支持wins代理功能
实例:wins proxy=yes
(2) 资源共享的选项
基本选项 :
comment=说明语句 
功能:对共享资源的说明
实例:comment=file shared
path=路径
功能:共享资源的路径
实例:path=/soft
访问控制选项:
browseable=yes/no
功能:是否可以浏览共享目录,默认为yes
实例:browseable=no
printable =yes/no
功能:设置客户机是否可以使用共享打印机打印
实例:printable=yes
available=yes/no
功能:设置共享资源是否可用
实例:avalidable=yes
public=yes/no
功能:设置共享资源是否允许所有用户访问,除guest用户以外
实例:public=yes
guest ok =yes/no
功能:设置是否允许guest用户访问共享资源
实例:guest ok =yes
guest only=yes/no
功能:设置共享目录只允许guest用户访问
实例:guest only=yes
read only=yes/no
功能:访问用户对共享资源只读
功能:read only=yes
valid users=用户名/@组名
功能:指定允许访问共享资源的用户/组,多用户名用逗号分开,指定组时要在组名前加@
实例:valide users=u1,u2,@g1
invalid users=用户名/@组名
功能:指定禁止访问共享资源的用户/组,多用户名用逗号分开,指定组时要在组名前加@
实例:invalid users=@g2
create mode=权限值
功能:指定客户机在共享目录中创建文件的默认权限,默认权限为744
实例:create mode=755
directory mode =0775
功能:指定客户机共享目录中创建文件目录的默认权限,默认权限为755
实例:directory mode=755
writable=yes/no
功能:指定共享的路径是否可写
实例:writable=yes
write list=用户名/@组名
功能:设定允许读写共享目录的用户列表
实例:write list=abc,@g2
read list=用户名/@组名
功能:设定只读访问用户列表
实例:read list=abc,@cuo
preexec=路径
功能:指定客户机连接时要自动执行文件
实例:preexec=/bin/mount   /dev/cdrom
postexec=路径
功能:指定客户机断开连接时要自动执行的文件
实例:postexec=/bin/umount  /dev/cdrom
root  preexec=路径
功能: 指定客户机连接时要以ROOT用户身份自动执行的文件
实例:root   preexec=/bin/mount /dev/cdrom
root  postexec=路径
功能:指定客户机断开连接时要以ROOT用户身份自动执行的文件
实例:root   postexec=/bin/umount /dev/cdrom
(3) 特殊变量
        %S:        当前服务名
        %P:        当前服务的根目录
        %u:        当前服务的用户名
        %h:        samba服务器的主机名
        %m:        客户机的NETBIOS名
        %L         samba服务器的netbios名
%v         samba版本号
%g         给定%u的所在的主工作组名
%H         给定的%u的宿主目录
%T         当前日期和时间
文件实例:
根据以下要求/etc/samba/smb.conf文件:
? 设置samba服务器的工作组名为linuxgroup,NETBIOS名为linux
? 设置samba服务器的访问模式为share
? 共享/soft目录,共享名为soft,该共享目录允许所有的用户读写操作
#vi  /etc/samba/smb.conf
修改内容如下:
       [global]
       Workgroup=linuxgroup
       Netbios name=linux
       Security=share 
       ………………
       ………………
       ………………
       [homes]
       ………………
       ………………
       ………………
       ………………
       [printers]
       ………………
       ………………
       ………………
       ………………
      [soft]  //添加如下这个声明
comment=applic  soft  shared
path=/soft
browseable=yes
writable=yes
guest ok=yes
public=yes
3. 启动  samba服务
# service  smb  start
4. samba用户的建立
samba用户其实是系统用户的映射,所以建立samba用户先必须在系统中建立相应的用户,再通过特定方式映射为samba用户
方法一: smbadduser 用户名:用户名
实例:建立samba用户u1
   #useradd  u1
   #passwd u1
   #smbadduser u1:u1
方法二:#smbpasswd �Ca 用户名
实例:
#useradd u2
#passwd u2
#smbpasswd �Ca  u2
三. Samba 的客户工具的使用
1. Smbclient
功能: (1)查看其他主机上共享资源
  (2)连接其他主机的共享目录
格式:#smbclient  [参数]  主机ip或netbios名称
参数:  -N   不提示输入用户口令
  -L   主机IP地址/netbios名称   查看指定主机上的共享目录
  -U   用户名     指定连接其它主机的用户名
     实例:#smbclient  -L  192.168.0.1   -U administrator
               #smbclient  //192.168.0.1/c   -U administrator
    2.  smbmount
  功能: 加载smb文件系统
  格式:
smbmount //主机IP地址或netbios名/共享名  装载点  -ousername=用户名,password=密码
实例:
  #smbmount   //192.168.0.1/c   /h2   -ousername=administrator
四. 配置案例
配置要求:
设某公司有财务,技术,领导3个部门,我们分别为3个部门建立3个用户组为caiwu,network,lingdao; 三个部门里各有2个用户,我们建用户分别为caiwu01,caiwu02,network01,network02,lingdao01,lingdao02,具体如下:
1. 首先服务器采用用户验证的方式,每个用户可以访问自己的宿主目录,并且只有该用户能访问宿主目录,并具有完全的权限,而其他人不能看到你的宿主目录
2. 建立一个caiwu的文件夹,希望caiwu组和lingdao组的人能看到,network02也可以访问,但只有caiwu01有写的权限
3. 建立一个lindao的目录,只有领导组的人可以访问并读写,还有network02也可以访问,但外人不可访问该目录
4. 建立一个文件交换目录exchange,所有人都能读写,包括guest用户,但每个人不能删除别人的文件
5. 建立一个公共的只读文件夹public,所有人只读这个文件夹的内容
 配置过程:
1. 建立相应的用户和用户组
#groupadd caiwu
#groupadd network
#groupadd lingdao
#useradd caiwu01 -g caiwu
#useradd caiwu02 -g caiwu
#useradd network01 -g network
#useradd network02 -g network
#useradd lingdao01 -g lingdao
#useradd lingdao02 -g lingdao
然后我们使用smbpasswd -a caiwu01的命令为6个帐户分别添加到samba用户中
2. 建立相应的目录
#mkdir /home/samba
#mkdir /home/samba/caiwu
#mkdir /home/samba/lingdao
#mkdir /home/samba/exchange
#mkdir /home/samba/public
3. 改变目录的权限
我们为了避免麻烦可以在这里把上面所有的目录的权限都设置成777:
#chmod  777    /home/samba
#chmod  777   /home/samba/caiwu
#chmod  777   /home/samba/lingdao
#chmod  777   /home/samba/exchange
#chmod  777 /home/samba/public
4. 修改/etc/samba/smb.conf
#vi /etc/samba/smb.conf
修改内容如下:
[global]
workgroup = linux
netbios  name=smbser
server string = xhnet’s Samba File Server
security = user
encrypt passwords = yes
#其他的基本上可以按照默认的来
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
#homes段满足第1条件
[caiwu]
comment = caiwu
path = /home/samba/caiwu
public = no
valid users = @caiwu,@lingdao,network02
write list = caiwu01
#caiwu段满足我们的第2要求
[lingdao]
comment = lingdao
path = /home/samba/lingdao
 browseable = yes
valid users = @lingdao,network02
write  list  = @lingdao
#lingdao段能满足我们的第3要求
[exchage]
comment = Exchange File Directory
path = /home/samba/exchange
public = yes
guset ok =yes
writable = yes
#exchange段基本能满足我们的第4要求,但不能满足每个人不能删除别人的文件这个条件,即使设置了mask也是没用,其实这个条件只要linux设置一个粘着位就行
chmod -R 1777 /home/samba/exchange
注意这里权限是1777,类似的系统目录/tmp也具有相同的权限,这个权限能实现每个人能自由写文件,但不能删除别人的文件这个要求
[public]
comment = Read Only Public
path = /home/samba/public
public = yes
read only = yes
#这个public段能满足我们的第5要求。
4.启动服务
#/etc/rc.d/init.d/smb restart
5.利用windows或linux主机测试SAMBA服务器
 
 
 
 
 
 
 
 
 

 

你可能感兴趣的:(服务器,职场,samba,休闲)