Chinaunix首页 | 论坛 | 博客
  • 博客访问: 806173
  • 博文数量: 132
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2276
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-03 10:50
个人简介

while(!dead) learning++;

文章分类

全部博文(132)

文章存档

2019年(3)

2018年(11)

2017年(12)

2016年(8)

2015年(8)

2014年(4)

2013年(86)

分类: LINUX

2015-12-28 11:35:02



  SambaSMB的一种实现方法,主要用来实现Linux系统的文件和打印服务。Linux用户通过配置使用Samba服务器可以实现与Windows 用户的资源共享。守护进程smbdnmbdSamba的核心,在全部时间内运行。nmbd程序使得通过企图计算机可以浏览Linux服务器。



 



CentOS6 
Samba
服务器配置



一、安装前准备





 


 

1 使用Samba服务器需要防火墙开放以下端口

      UDP 137 UDP 138 TCP 139 TCP 445

 
#配置防火墙端口

  [root@www ~] 
vi /etc/sysconfig/iptables   

  -A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT

  -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

  -A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT

  -A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT

 
#重启防火墙,使规则生效

  [root@
 www ~] /etc/rc.d/init.d/iptables
  restart    


 

 
2
、关闭CentOS6系统的
  SELinux


  [root@
 www ~] vi
  /etc/selinux/config


  #SELINUX=enforcing     
#
注释掉

  #SELINUXTYPE=targeted  
#注释掉

  SELINUX=disabled       
#增加

 
#:wq  保存。

 
#重启系统

  [root@
 www ~] shutdown -r
  now 
或者 init 6


 




二、安装Samba





 


 

1 、检查Samba服务包是否已安装

  [root@
 www ~] rpm -qa |
  grep samba


      samba-3.5.4-68.el6.x86_64

      samba-common-3.5.4-68.el6.x86_64

      samba-client-3.5.4-68.el6.x86_64

      samba4-libs-4.0.0-23.alpha11.el6.x86_64

      samba-winbind-clients-3.5.4-68.el6.x86_64

 

   
 
说明samba已经安装,如果没有安装,运行下面命令安装


 

[root@ www ~] yum install
  samba


   

 
2
、配置samba

  [root@
 www ~] chkconfig
  smb on
 
  #设置
  Samba
开机自动启动

  [root@
 www ~] service smb
  start 
      #
启动Samba服务

  [root@
 www ~] /etc/init.d/smb
  restart 
 #
重启

  [root@
 www ~] /etc/init.d/smb
  stop
     #
停止

  [root@
 www ~] cp
  /etc/samba/smb.conf
   /etc/samba/bak_smb.conf_bak   #
备份

  [root@
 www ~] cp
  /etc/samba/bak_smb.conf_bak  /etc/samba/smb.conf
   #
恢复

  [root@
 www ~] vi
  /etc/samba/smb.conf


  [global]                           
#
找到这一行(全局设置标签),在此行下面添加如下行:

      workgroup =
  WORKGROUP          #
工作组名称改为
  Windows
网络所定义的工作组名

      server string = Samba Server   #
设置samba服务器的主机名称

      security =
  user               
  #
设置samba服务器安全级别为user,即以账号和口令访问

      netbios name = SambaServer     #
设置Samba服务器访问别名

  #
在配置文件的末尾添加以下自定义内容

  [SambaServer]                     
  #
Windows网上邻居中看到的共享目录的名字

      comment =
  SambaServer          #
Windows网上邻居中看到的共享目录的备注信息

      path = /home/SambaServer      
  #
共享目录在系统中的位置

      public =
  no                    #
不公开目录

      writable =
  yes                 #
共享目录可以读写

      valid
  users=SambaServer        #
只允许SambaServer用户访问

  #
保存配置

 

 
3、添加访问linux共享目录的账号SambaServer

    
用户家目录为/home/SambaServer,
 
用户登录终端设为/bin/false(即使之不能登录系统)

  [root@
 www ~] mkdir -p
  /home/SambaServer
 #
建立SambaServer文件夹

  [root@
 www ~] cd
  /home/SambaServer


  [root@
 www ~] touch  samba.txt    #
创建测试文件samba.txt

  [root@
 www ~] useradd
  SambaServer -d /home/SambaServer -s /bin/false


  [root@
 www ~] chown SambaServer:SambaServer /home/SambaServer -R

 

 
4
、将用户SambaServer添加入到Samba用户数据库,并设置登录共享目录的密码为:123456

  [root@
 www ~] smbpasswd
  -a SambaServer


     New SMB password:
  输入该用户用于登录Samba的密码

     Retype new SMB password:
  再次确认输入该密码

     Added user SambaServer.

 
#备注:这里设置的密码是SambaServer用户登录该机的Samba共享的密码,非登陆OS的密码;

  5
、重启Samba服务器

  [root@
 www ~] /etc/init.d/smb restart

 
6
、浏览共享信息

 
Windows客户端输入   或者   #服务器别名

    
回车之后,会跳出来登录框,输入账号SambaServer ,密码123456
  ,
即可访问共享目录


 




至此,CentOS 6 linux
samba
服务器配置完成。



服务名:smb

配置目录:/etc/sabma/

主配置文件:/etc/sabma/smb.conf





问题:

如果无法访问共享目录的内容,请把防火墙停止;





 


 

[root@ www ~] service
  iptables stop


 






SWAT工具使用



      
SWAT
是通过浏览器对 Samba 进行管理的工具之一。通过 SWAT ,可以在 Samba 允许访问范围内的客户端,用浏览器对服务端的 Samba 进行控制。在线文档的阅览、smb.conf 的确认和编辑,以及密码的变更、服务的重启等等都可以通过 SWAT 来完成,它的直观让 Samba 变得温和化,对那些不喜欢文本界面管理服务器的朋友来说,是一个强大的工具。



安装 SWAT 





 


 

 首先,通过 yum 在线安装
  SWAT


  [root@
 www ~]# yum -y
  install samba-swat
 
  #
 
在线安装 SWAT


 




配置 SWAT   





 


 

然后编辑
  /etc/xinetd.d/swat
,对其进行配置。本文的原则是只允许内网以及本地的客户端对
  SWAT
进行访问。

  [root@
 www ~]# vi
  /etc/xinetd.d/swat
 
  # 编辑
  SWAT
的配置文件

 

  only_from = 127.0.0.1
  # 找到此行,在下面添加如下行:

  only_from = 192.168.0.0
  # 添加此行,只允许内网范围对
  SWAT
进行访问

 

  disable = yes
  # 找到此行,将 yes 改为
  no

  disable = no
  # 变为此状态

 

 
启动 SWAT

 

 
  在启动 SWAT 之前,先将防火墙中
  SWAT
使用的 901 号端口开放。

 

  [root@
 www ~]# vi
  /etc/sysconfig/iptables
 
  #编辑防火墙规则

 

  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 901 -j
  ACCEPT
  # 添加此行开放SWAT901端口

 

  [root@
 www ~]# /etc/rc.d/init.d/iptables
  restart
 
  #重新启动防火墙,使新的规则生效


 

由于
  SWAT
的启动是通过超级服务器,所以只要重新启动 xinetd 即可启动
  SWAT


  [root@
 www ~]# /etc/rc.d/init.d/xinetd
  restart
 
  #
 
重新启动超级服务器,启动 SWAT


 


 



测试 SWAT

   在服务端启动 SWAT 后,我们就可以通过 SWAT 允许范围(本文以内网192.168.0.0及本地127.0.0.1为例) 内的客户机的浏览器中,通过 来访问服务端的 SWAT 了。如下所示:



1
、在浏览器中输入“”(本文以笔者测试环境的“”为例。请各自替换为您的服务器内网IP地址。),然后输入 root 用户的用户名及密码进入 SWAT 的管理首页;



2
、确认出现如下 SWAT 管理中心的首页:

  通过 SWAT 管理 Samba 与直接修改 smb.conf 的方式,在本质上并无差异,但通过浏览器访问的方式,可以使 Samba 的管理更加温和化,更加适用于不擅长使用文本界面、直接修改配置文件的朋友。





linux
访问windows文件配置

     
通常我们使用Samba都是在Windows上访问做为Samba服务器的Linux。但是在某些时候情况会反过来,你可能需要从Linux上访问Windows共享出来的目录。幸运的是,Samba本身也支持这种类型的访问。





 


 

要想从Linux访问Windows上的共享目录,需要安装smbclient工具。在CentOS上则使用yum命令安装:


 

[root@
  www ~]# 
yum install samba-client.i386

 
安装好smbclient工具,就可以使用mount命令来挂载Windows上的共享目录了:

  [root@ www ~]# 
mount -t cifs -o username=easwy //windows-server/share
  /mnt/winshare


 






在这里我们使用的文件系统类型是cifs(Common
Internet File System)
而不是smbfs,因为Linux Kernel将不再支持smbfs。而从这个网站测试结果来看,smbfs的性能也远不如cifs





我们所用的mount -t cifs命令其实会调用mount.cifs,如果你在mount时失败,先检查一下你的mount.cifs命令是否存在。





如果windows计算机处于域中,那么在username一项输入你的域用户名domain/username就可以了。windows-server可以是一台计算机的名称,也可以是一个IP地址。



如果想列出Windows上的所有共享资源,可以使用命令:

这条命令会列出windows服务器上所有的共享目录和文件。





 


 

[root@ www ~]# smbclient -L
  //windows-server -U easwy


 


 







samba
主配置文件详解:/etc/sabma/smb.conf



#==============================
Global Settings =============================



workgroup

语法 workgtoup =
<
工作组群>;

预设 workgroup =
MYGROUP

说明 设定 Samba Server 的工作组

workgroup =
workgroup
WIN2000S设为一个组,可在网上邻居可中看到共享



server string

语法 server string =
<
说明>;

预设 sarver string =
Samba Server

说明 设定 Samba Server 的注释

其他 支持变量 t%-访问时间 I%-客户端IP m%-客户端主机名 M%-客户端域名 S%-客户端用户名

server string =
this is a Samba Server
设定出现在Windows网上邻居的 Samba Server 注释为 this is a Samba
Server



hosts allow

语法 hosts aoolw = ;
...

预设 ; host allow =
192.168.1. 192.168.2. 127.

说明 限制允许连接到 Samba Server 的机器,多个参数以空格隔开。表示方法可以为

完整的IP地址,如 192.168.0.1

网段,如 192.168.0.

hosts allow =
192.168.1. 192.168.0.1
表示允许192.168.1
网段的机器 网址为192.168.0.1 的机器 连接到自己的samba server





printcap name

语法 printcap name =
<
打印机配置文件>;

预设 printcap name =
/etc/printcap

说明 设定 samba srever 打印机的配置文件

printcap name =
/etc/printcap
设定 samba srever 参考 /etc/printcap 档的打印机设定



load printers

语法 load printers =
;

预设 load printers =
yes

说明 是否在开启 samba server 时即共享打印机





printing

语法 printing = <打印机类型>;

预设 printing =
lprng

说明 设定 samba server 打印机所使用的类型,37行为目前所支持的类型





guest account

语法 guert account =
<
帐户名称>;

预设 guert account =
pcguest

说明 设定访问 samba server 的来宾帐户(即访问时不用输入用户名和密码的帐户),若设为pcguest的话则为默认为"nobody"用户

guert account =
andy
设定设定访问 samba server 的来宾帐户以andy用户登陆,则此登陆帐户享有andy用户的所有权限



log file

语法 log file = <日志文件>;

预设 log file =
/var/log/samba/%m.log

说明 设定 samba server 日志文件的储存位置和文件名(%m代表客户端主机名)



max log size

语法 max log size =
;

预设 max log size =
0

说明 设定日子文件的最大容量,单位KB 这里的预设值0代表不做限制



security

语法 security = <等级>;

预设 security = user

说明 设定访问 samba server 的安全级别 共有四种

share---
不需要提供用户名和密码

user----
需要提供用户名和密码,而且身份验证由 samba server 负责

server--
需要提供用户名和密码,可指定其他机器(winNT/2000/XP)或另一台 samba server作身份验证

domain--
需要提供用户名和密码,指定winNT/2000/XP域服务器作身份验证



password server

语法 password server
= ;

预设 password server
= ;

说明 指定某台服务器(包括windows linux)的密码,作为用户登入时验证的密码

其他 此项需配合 security =
server
,才可设定本参数



password level

username level

语法 password level
= <
位数>;

username level = <
位数>;

预设 password level
= 8

username level = 8

说明 设定用户名和密码的位数,预设为8位字符





encrypt passwords

语法 encrypt
passwords = ;

预设 encrypt
passwords = yse

说明 设定是否对samba的密码加密



smb passwd file

语法 smb passwd file
= <
密码文件>;

预设 smb passwd file
= /etc/samba/smbpasswd

说明 设定samba的密码文件



local master

语法 local master =
;

预设 local master =
no

说明 设定 samba server 是否要担当LMB角色(LMB负责收集本地网络的Browse List资源),通常无特殊原因设为no



os level = 33

语法 os level = <数字>;

预设 os level = 33

说明 设定 samba serveros level. os
level
0 255 . winNTos level33, win95/98os level 1 .

若要拿samba server LMBDMB则它的os level至少要大于NT33以上



domain master

语法 domain master =
;

预设 domain master =
yes

说明 设定 samba server 是否要担当DMB角色(DMB会负责收集其他子网的Browse List资源),通常无特殊原因设为no



preferred master

语法 preferred
master = ;

预设 preferred
master = yes

说明 设定 samba server 是否要担当PDC角色(PDC会负责追踪网络帐户进行的一切变更),通常无特殊原因设为no.

(
同一网段内不可有两个PDC,他们会每5分钟抢主控权一次)



wins support

语法 wins support =
;

预设 wins support =
yes

说明 设定samba server 是否想网络提供WINS服务,通常无特殊原因设为no.

除非所处网络上没有主机提供WINS服务且需要此台samba server提供WINS服务是才设yes

其他 wins support wins server 只能选择一个



wins server

语法 wins server = ;

预设 wins server =
w.x.y.z

说明 设定samba server 是否要使用别台主机提供的WINS服务.通常无特殊原因设为no.除非所处网络上有一台主机提供WINS服务才要设yes

其他 wins support wins server

wins server =
192.168.0.1
表示samba server要使用192.168.0.1提供的WINS服务





#============================== Share Definitions =============================



[homes]

comment = Home Directories

browseable = no

writable = yes

valid users = %S



使用者本身的""目录,当使用者以samba使用者身份登入samba server 后,

samba server
底下会看到自己的家目录,目录名称是使用者自己的帐号





[
分享的资源名称]

<
指令1>; = (参数)

<
指令2>; = (参数)

..........................



要提供分享资源时,须先把欲分享的资源以 [ ] 符号括住,底下通常会带指令和参数来表示此资源的设定和存取权限等,详情如下



comment---------
注释说明

path------------
分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对

browseable------
yes/no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取

printable-------
yes/no允许打印

hide dot ftles--
yes/no隐藏隐藏文件

public----------
yes/no公开共享,若为否则进行身份验证(只有当security = share
时此项才起作用)

guest ok--------
yes/no公开共享,若为否则进行身份验证(只有当security = share
时此项才起作用)

read only-------
yes/no以只读方式共享当与writable发生冲突时也writable为准

writable--------
yes/no不以只读方式共享当与read only发生冲突时,无视read only

vaild users-----
设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)

invalid users---
设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)

read list-------
设定此名单内的成员为只读(用户名/@组名)

write list------
若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)

create mask-----
建立文件时所给的权限

directory mask--
建立目录时所给的权限

force group-----
指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)

force user------
指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)

allow hosts-----
设定只有此网段/IP的用户才能访问共享资源

allwo hosts =
网段 except IP

deny hosts------
设定只有此网段/IP的用户不能访问共享资源



allow hosts=
本网段指定IP指定IP



deny hosts=
指定IP本网段指定IP



声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。





Disable
the SELinux:



sudo nano /etc/selinux/config



Change
SELinux from 
enforcing to disabled:



SELINUX=disabled





samba共享软链接目录



leave
comment
 0 comments
list
 1149 views By iHao At 2011-09-07 16:11

因为samba目录磁盘空间不足,于是挂载新硬盘准备给共享目录扩容。于是格式化新硬盘挂载到新目录,再将原目录中比较占空间的大目录移到新磁盘目录里,再软链接回原来的位置。

于是乎,问题来了,软链回去的目录死活不给访问,说无权限。找万能的谷哥,告诉我说要加以下代码到samba的配置文件中去:

follow symlinks = yes

wide links = yes

unix extensions = no

试验来试验去,正确的方式是这段配置不仅要设置到 [global] 区内还得设置到你的 共享目录 的设置区内, 缺一处都无访问权限 FML~~

阅读(3184) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~