一、Samba简介
samba是一个工具套件,在Unix上实现SMB(Server Message Block)协议,或者称之为NETBIOS/LanManager协议。SMB协议通常是被windows系列用来实现磁盘和打印机共享。samba的核心是两个守护进程smbd和nmbd程序,在服务器启动到停止期间持续运行。Smbd和nmbd使用的全 部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享, 共享输出给谁及如何进行输出。Smbd进程的作用是处理到来的SMB软件包,为使用该软件包的资源与 Linux进行协商,nmbd进程使其它主机(或工作站)能浏览Linux服务器。
如果安装时用rpm安装,那么启动samba不用service smb start,用service nmbd start,service smbd start也可以的。
二、Samba安装
1、临时关闭SElinux,使用如下命令就可以:
#/usr/sbin/setenforce 0 立刻关闭 SELINUX #/usr/sbin/setenforce 1 立刻启用 SELINUX
2、永久关闭,编辑配置文件
#vi /etc/selinux/config #set SELINUX=disabled
3、在可以联网的机器上使用yum工具安装,如果未联网,则挂载系统光盘进行安装。
# yum install samba samba-client samba-swat
2、查看安装状况
#rpm -qa|grep samba samba-winbind-3.6.9-151.el6.i686 samba-winbind-clients-3.6.9-151.el6.i686 samba-common-3.6.9-151.el6.i686 //主要提供samba服务器的设置文件与设置文件语法检验程序testparm samba-client-3.6.9-151.el6.i686 //客户端软件,主要提供linux主机作为客户端时,所需要的工具指令集 samba-swat-3.6.9-151.el6.i686 //基于https协议的samba服务器web配置界面 samba-3.6.9-151.el6.i686 //服务器端软件,主要提供samba服务器的守护程序,共享文档,日志的轮替,开机默认选项
Samba服务器安装完毕,会生成配置文件目录/etc/samba和其它一些samba可执行命令工具,/etc/samba/smb.conf是samba的核心配置文件,/etc/init.d/smb是samba的启动/关闭文件。
3、启动Samba服务器
#/etc/init.d/smb start #/etc/init.d/nmb start
4、查看samba的服务启动情况
#service smb status
5、设置开机自启动
# chkconfig --level 35 smb on //在3、5级别上自动运行samba服务
二、Samba配置
第一步: 新建smb.conf
# vim /etc/samba/smb.conf
我们来实现一个最简单的功能,让所有用户可以读写一个Samba 服务器共享的一个文件夹
然后把下面这段写入smb.conf中;
[global] workgroup = MYGROUP server string = Samba Server Version %v max connections = 100 deadtime = 30 smb passwd file = /etc/samba/smbpasswd encrypt passwords = yes log file = /var/log/samba/log.%m max log size = 50 security = user passdb backend = tdbsam load printers = yes cups option = raw dos charset=cp936 unix charset=cp936 #加上这二句就可以正确显示中文了。 [linuxidc] comment = This Is Test path = /home/test writeable = yes browseable = yes available = yes read only = no valid users = test
第二步:建立用户相应目录并授权;
1、创建用户组 #groupadd test 2、建立组用户 #useradd -s /sbin/nologin -d /home/test -g test test 3、修改用户密码 #passwd test 5、将刚才建立的两个帐户添加到samba的账户中 #smbpasswd -a test 检验samba是否安装成功 执行testparm # /usr/local/samba/bin/testparm 如果没有任何错误,那么恭喜你,samba已经安装成功了 重启samba # service smb restart
三、开启防火墙端口号
1)Port 137 (UDP) - NetBIOS 名字服务 ; nmbd 2)Port 138 (UDP) - NetBIOS 数据报服务 3)Port 139 (TCP) - 文件和打印共享 ; smbd (基于SMB(Server Message Block)协议,主要在局域网中使用,文件共享协议) 4)Port 389 (TCP) - 用于 LDAP (Active Directory Mode) 5)Port 445 (TCP) - NetBIOS服务在windos 2000及以后版本使用此端口, (Common Internet File System,CIFS,它是SMB协议扩展到Internet后,实现Internet文件共享) 6)Port 901 (TCP) - 用于 SWAT,用于网页管理Samba
开启UDP端口:
# iptables -I INPUT -p udp -m multiport --dport 137,138 -j ACCEPT
开启TCP端口:
# iptables -I INPUT -p tcp -m state --state NEW -m multiport --dport 139,445 -j ACCEPT
保存配置: # service iptables save
四、linux操作系统测试
# smbclient -L //服务器ip -U test
四、Samba访问
windows :浏览器或资源管理器,输入\\linux主机名,可以找到共享的目录read,成功。
mac :打开safari输入smb://ip,回车后出现输入用户名密码对话框,若是匿名则选择作为“客人”选项
注解:
全局参数: ==================Global Settings =================== [global] #这段是全局配置,是必段写的。其中有如下的几行; workgroup #设定Samba Server所要加入的工作组或者域,就是Windows中的工作组。); netbios name #就是在Windows中显示出来的计算机名; server string #就是Samba服务器说明,可以自己来定义;这个不是什么重要的; max connections = 0 #指定最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。 deadtime = 0 deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接。 log file = /var/log/samba/log.%m #设置日志的位置及名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件。 max log size = 0 #定义日志记录文件的大小,单位是KB,如果是0的话就不限大小 smb passwd file = /etc/samba/smbpasswd 用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。 encrypt passwords = yes/no 是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。 username map = /etc/samba/smbusers 用来定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,更贴近windows用户的习惯。 security = user #指定安全模式。大多数用户使用user级的安全模式,samba用本地linux口令文件验证。 定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。 share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。 user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。 server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。 domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。 后面三种安全级都要求用户在本linux机器上也要系统帐户。否则是不能访问的 passdb backend = tdbsam passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。 1.smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实 用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。 2.tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的参数很多,我们列出几个主要的。 pdbedit –a username:新建Samba账户。 pdbedit –x username:删除Samba账户。 pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。 pdbedit –Lv:列出Samba用户列表的详细信息。 pdbedit –c “[D]” –u username:暂停该Samba用户的账号。 pdbedit –c “[]” –u username:恢复该Samba用户的账号。 3.ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server” 共享参数: ================== Share Definitions ================== [Linuxidc] 这个在Windows中显示出来是共享的目录; path = 可以设置要共享的目录放在哪里; writeable 是否可写,这里我设置为可写; browseable 是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来,那就设置为 browseable=no available = yes/no 用来指定该共享资源是否可用。 guest ok 匿名用户以guest身份是登录; admin users = 该共享的管理者 用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效; valid users = 允许访问该共享的用户; invalid users = 禁止访问该共享的用户; write list = 允许写入该共享的用户 例如:write list = bobyuan,@bob; public = yes/no public用来指定该共享是否允许guest账户访问。 几个特殊共享: [homes] comment = Home Directories browseable = no writable = yes valid users = %S ; valid users = MYDOMAIN\%S [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes [netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon guest ok = yes writable = no share modes = no [Profiles] path = /var/lib/samba/profiles browseable = no guest ok = yes
参考:http://yuanbin.blog.51cto.com/363003/115761/