首页 > 代码库 > 4.2 Samba文件共享
4.2 Samba文件共享
Samba是Linux、UNIX与Windows之间进行交互操作的软件组件,Samba是基于GPL协议的自由开源软件。自1992年以来,Samba开始通过SMB/CIFS协议为Windows、OS/2、Linux,以及众多其他支持该协议的操作系统提供安全、稳定、快速的文件与打印服务,在使用winbind将Linux/UNIX无缝整合到活动目录环境中时,Samba也是一个重要组件。
所需软件包括,Samba(服务器端软件包)、Samba-client(客户端软件包)和Samba-common(Samba公共文件软件包)。其中,Samba由smbd和nmbd两个守护进程组成,两个进程的启动脚本是独立的。下面分别介绍每个守护进程的作用。
Smbd服务进程为客户端提供文件共享与打印机服务。另外,该进程还负责用户权限验证以及锁功能,smbd默认监听的端口是TCP协议139与445,Samba通过smb服务启动smbd进程,使用netstat-nutlp查看进程端口信息。
nmbd进程提供NetBIOS名称服务,以满足于Common Internet File System(CIFS)协议的共享访问环境。Samba通过nmb服务启动nmbd进程,该进程默认使用的是UDP 137端口。
由于iptables与SELinux默认策略会阻止远程用户对Samba的访问,目前我们暂时先关闭这些服务,以确保共享服务的正常使用。关于如何合理设置防火墙与SELinux策略,将在第6章中详细介绍。
4.2.1 快速配置Samba服务器
客户端访问Samba共享时所用的账户名称就是服务器端操作系统中真实存在的系统账户名称,但不同于微软的共享设置,访问Samba共享的密码必须是独立的Samba密码,而不可以使用系统密码,这样即使有人获得了Samba账户和密码,也不能使用这些信息登录服务器本机的操作系统。所以,成功访问Samba服务器还需要使用smbpasswd将系统账户添加到Samba,并设置相应的密码,Centos6.3系统自带的Samba软件包安装后,默认会将账户与密码文件存放在/var/lib/samba/private目录下。
smbpasswd命令的描述和用法如下。
描述:修改账户samba密码
用法:smbpasswd [选项] 账户名称
选项:-a 添加账户并设置密码 -x 删除SMB账户
-d 删除SMB账户 -e 启用SMB账户
4.2.2 访问Samba共享
1.Windows客户端访问
在Windows环境中,通过“开始”---->“运行”菜单或直接按win+R快捷键开启运行对话框,在该对话框中输入\\IP(其中的IP为Samba服务器的IP地址),单击“确定”按钮访问Samba共享,如果是基于用户名和密码的访问,系统会提示输入账户和密码。
2. Linux客户端访问
Linux客户端使用smbclient命令可以访问服务器上的共享资源,如果安装有图形环境,也可以通过Linux图形界面连接服务器,下面是具体方法。
[root@instructor Desktop]# smbclient -L //192.168.0.254 查看192.168.0.254主机共享信息 Enter root‘s password: Anonymous login successful Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-169.el6_5] Sharename Type Comment --------- ---- ------- ceshi Disk IPC$ IPC IPC Service (Samba Server Version 3.6.9-169.el6_5) [root@instructor Desktop]# smbclient -U user1 //192.168.0.254/ceshi 访问Samba目录共享 Enter user1‘s password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-169.el6_5] smb: \> ls . D 0 Sun Jul 20 07:41:17 2014 .. DR 0 Mon Jul 28 16:58:38 2014
有时候,挂载Samba共享目录实现如本地文件系统一样的使用体验是很有意义的,使用root管理员身份运行mount命令可以挂载这样的文件系统,将挂载信息写入fstab文件可以实现永久挂载的目的。
[root@instructor Desktop]# mkdir /com [root@instructor Desktop]# mount -t cifs //192.168.0.254/ceshi /com -o username=user1,password=redhat [root@instructor Desktop]# echo "//192.168.0.254/ceshi /com cifs defaults,username=user1,passwd=redhat 0 0" >> /etc/fstab
若希望使用图形界面访问Samba共享时,首先通过nautilus-connect-server命令开启图形配置界面,输入Samba服务器的IP地址、共享目录、账户名称等信息。另外,通过图形访问Samba后会在桌面生成挂载图标,以后可以随时通过双击该图标打开共享目录。
[root@instructor Desktop]# nautilus-connect-server
4.2.3 配置文件详解
Samba所以配置都在/etc/samba/smb.conf配置文件中进行。默认情况下,Samba会已开启本地帐号家目录共享与打印机共享,配置文件中以#或;符号开头的行为注释行,配置文件分成了若干段,除了global(全局配置段)之外的其余所有段用来描述共享资源,全局段中的配置代表全局有效,是全局的默认设置。但是如果全局配置段中的设置项与共享段中的设置项有冲突,则共享设置段中的设置为实际有效值。
[root@instructor Desktop]# vim /etc/samba/smb.conf [global] #定义全局策略 workgroup = MYGROUP #定义工作组 server string = Samba Server Version %v #服务器提示字串,默认显示samba版本,建议修改默认值防止针对版本的网络攻击 ; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 #如果服务器有多个网络接口,可以通过interfaces选项指定Samba监听哪些网络接口 ; hosts allow = 127. 192.168.12. 192.168.13. #hosts allow指定仅允许哪些主机有权访问Samba服务器资源,该参数可以放置在全局段也可以放置在共享段。与此相反的选项是hosts deny,用来设置黑名单列表,这里可以指定允许访问的主机名、IP地址或网段,当指定网段时可以使用192.168.12.或192.168.12.0/255.255.255.0两张格式,使用EXCEPT可以指定例外的IP地址。 log file = /var/log/samba/log.%m #定义日志文件,因为使用了Samba变量%m,所以每个访问共享的主机会产生独立的日志文件,%m会被替换为客户端主机名 max log size = 50 #定义日志单个文件最大容量为50KB security = user #设置security选项将影响客户端访问Samba的方式,是非常重要的设置选项之一。Security可以被设置为user、share、server或domain,user代表通过用户名、密码验证访问者的身份,账户需要是服务器本机系统账户;share代表匿名访问;server代表基于验证身份的访问,但账户信息保存在另一台SMB服务器上;domain同样是基于验证的访问,账户信息保存在活动目录中。 passdb backend = tdbsam #账户与密码额存储方式,smbpasswd代表使用老的明文格式存储账户及密码;tdbsam代表基于TDB的密文格式存储;ldapsam代表使用LDAP存储账户资料。 deadtime = 10 #客户端在10分钟内没有打开任何Samba资源,服务器将自动关闭会话,在大量的并发环境中,这样的设置可以提高服务器性能。 display sharset = UTF8 #设置显示使用的字符集为UTF8 max connections = 0 #设置最大连接数,0代表无限制,若设置该规则超过此限制的连接请求服务器将拒绝连接。 guest account = nobody #设置匿名帐号为nobody load printers = yes #是否共享打印机 cups options = raw #打印属性 [homes] #共享名称 comment = Home Directories #注释,共享描述信息 browseable = no #共享目录是否可以被浏览 writable = yes #共享目录是否可以进行写操作 [printers] #打印机共享 comment = All Printers path = /var/spool/samba #打印共享池 browseable = no guest ok = no writable = no printable = yes [common] #共享名称为common comment = Common share #注释,共享描述信息 path = /common #重要,指定共享路径 valid users = tom jerry #有效账户列表 create mask = 0750 #客户端上传文件的默认权限 directory mask = 0775 #客户端创建目录的默认权限 browseable = yes #共享目录是否对所有人可见 writable = no write list = tom #写账户列表 admin users = tom #该共享的管理员,具有完全权限 invalid users = root bin #禁止root和bin访问common共享 guest ok = no #是否也许匿名访问,仅当全局设置security=share时有效
4.2 Samba文件共享