如何在CentOS 6.3中安装和配置samba服务器
Samba是SMB/CIFS网络协议的免费软件重新实现,最初由Andrew Tridgell开发。
从版本3开始,Samba为各种windows客户机提供文件和打印服务,可以作为主域控制器(PDC)或者域成员与Windows服务器域集成。它也可以是Active Directory域的一部分。
Samba运行在大多数Unix和类Unix的系统上。
Samba几乎是所有Linux发行版的标准配置,在其他基于Unix的操作系统上,Samba通常也作为基本系统服务包含在其中。
Samba的名称来自SMB(服务器消息块 Server Message Block),它是windows网络文件系统使用的标准协议的名称。
软件信息
操作系统: CentOS release 6.3 (Final)
软件包: On Samba Version 3.5
samba-winbind-clients-3.5.10-125.el6.i686
samba-3.5.10-125.el6.i686
samba-common-3.5.10-125.el6.i686
内核信息: Linux 2.6.32-279.el6.i686 #1 SMP / i686 i686 i386 GNU/Linux
Samba服务器使用以下端口号
137/tcp
137/udp
138/tcp
138/udp
udp/139协议
udp/139协议
445/tcp协议
445/udp协议
samba守护程序名称 : smb和nmb
Samba服务实现为两个守护进程:
smbd,提供文件和打印机共享服务
nmbd,提供NetBIOS到IP地址名服务。TCP/IP上的NetBIOS通过某个方法将计算机名映射到TCP/IP网络的IP地址。
如何安装和配置samba服务器
通过yum命令安装用于打印机的cups-libs包。
yum install -y samba samba-commons cups-libs
创建一个要共享的目录
mkdir /sharedrepo
创建一个新的组或者使用现有的组
这个组用于控制对共享目录的访问
groupadd staff
更改共享文件夹的组和权限
chgrp -R staff /sharedrepo chmod -R 777 /sharedrepo
更改共享目录上的selinux安全上下文
如果禁用了selinux, 则可以跳过此步骤。
chcon -R -t samba_share_t /sharedrepo/ semanage fcontext -a -t samba_share_t /sharedrepo/ setsebool -P samba_enable_home_dirs on
创建用户并将其添加到staff组中。
useradd test usermod -G staff test smbpasswd -a test
备份/etc/samba/smb.conf文件,然后编辑它。
cd /etc/samba/ cp -p smb.conf smb.conf.orig
在最后一行添加下面内容:
vi /etc/samba/smb.conf [sharedrepo] comment = shared-directory path = /sharedrepo public = no valid users = test, @staff writable = yes browseable = yes create mask = 0765
在/etc/samba/smb.conf中修改下面内容. 允许通过网络访问samba服务器。
interfaces = lo eth0 eth1 192.168.56.0/24 hosts allow = 127. 192.168.56.
在/etc/services文件中添加服务
vi /etc/services netbios-ns 137/tcp # netbios name service netbios-ns 137/udp # netbios name service netbios-dgm 138/tcp # netbios datagram service netbios-dgm 138/udp # netbios datagram service netbios-ssn 139/udp # netbios session service netbios-ssn 139/udp # netbios session service
配置防火墙
为samba的端口号137,138,139和445添加iptables规则。
编辑/etc/sysconfig/iptables文件
[root@localhost ~]# vi /etc/sysconfig/iptables # Generated by iptables-save v1.4.7 on Sun Feb 17 19:36:23 2013 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [199:25862] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -s 192.168.56.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT -A INPUT -s 192.168.56.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT -A INPUT -s 192.168.56.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT -A INPUT -s 192.168.56.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A INPUT -j REJECT --reject-with icmp-port-unreachable -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Sun Feb 17 19:36:23 2013 [root@localhost ~]# Now restart the iptable [root@localhost ~]# /etc/init.d/iptables restart Check the iptable is it implemented or not [root@localhost ~]#iptables -nL
启动smb和nmb服务。
/etc/init.d/smb start /etc/init.d/nmb start
设置smb和nmb服务在开机时自启动
# chkconfig smb on # chkconfig nmb on chkconfig --list | egrep "smb|nmb" nmb 0:off 1:off 2:on 3:on 4:on 5:on 6:off smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
在linux和windows机器上测试samba
Windows用户:
\samba服务器ip\共享目录
Linux用户:
必须在系统中安装smbclient。
查看samba服务器中的共享对象列表:
smbclient -L \ipaddress-samba-server -U username
通过smb控制台访问samba服务器:
smbclient //ip-samba-server/sharedDirectory -U username
获取控制台后,可以使用get和put命令获取文件或者把文件放到共享目录
例如:
Hyman@theitroad:~$ smbclient //192.168.56.101/sharedrepo -U redtest Enter redtests password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6] smb: > ls . D 0 Sun Feb 17 10:50:01 2013 .. DR 0 Sun Feb 17 22:38:55 2013 Untitled Folder D 0 Sun Feb 17 19:45:51 2013 50553 blocks of size 262144. 44708 blocks available smb: > help ? allinfo altname archive blocksize cancel case_sensitive cd chmod chown smb: >
要在系统中挂载samba服务器共享的目录,客户端系统必须支持cifs文件系统。
mount -t cifs //samba-server-ipaddress/shared-directory-name -o username=USERNAME /mnt/
在ubuntu中
通过 smb://ipaddr-samba-server/shared-directory
访问。