目录
以前每次安装samba,都要折腾一会。今天仔细研究了下,发现配置起来还是很容易的。因此记录下来,方便日后复用。
1.samba的原理
SMB协议是建立在NetBIOS协议之上的应用协议,是基于TCP138、139两个端口的服务,NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统。这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block)协议,这个协议被用于LanManager和Windows服务器系统中,实现不同计算机之间共享打印机和文件等。因此,为了让Windows和Unix/Linux计算机相集成,最好的办法就是在Unix/Linux计算机中安装支持SMB协议的软件。这样使用Windows的客户端不需要更改设置,就能像使用Windows NT或Windows 2000服务器一样,使用Unix/Linux计算机上的共享资源了。
2.安装samba
1). 先把cd挂载到/mnt/cdrom目录下。
[root@localhost shltsh]# mkdir /mnt/cdrom
[root@localhost shltsh]# mount -t iso9660 /dev/cdrom /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
2). 切换到安装盘的Packages目录下,安装samba。
[root@localhost shltsh]# cd /mnt/cdrom/Packages/
[root@localhost Packages]# ls *samba*
kdenetwork-fileshare-samba-4.7.2-2.fc16.i686.rpm samba-common-3.6.0-69rc2.fc16.1.i686.rpm system-config-samba-docs-1.0.9-2.fc15.noarch.rpm
samba-3.6.0-69rc2.fc16.1.i686.rpm samba-winbind-clients-3.6.0-69rc2.fc16.1.i686.rpm
samba-client-3.6.0-69rc2.fc16.1.i686.rpm system-config-samba-1.2.93-1.fc16.noarch.rpm
[root@localhost Packages]# rpm -ivh samba-3.6.0-69rc2.fc16.1.i686.rpm
warning: samba-3.6.0-69rc2.fc16.1.i686.rpm: Header V3 RSA/SHA256 Signature, key ID a82ba4b7: NOKEY
error: Failed dependencies:
samba-common = 0:3.6.0-69rc2.fc16.1 is needed by samba-0:3.6.0-69rc2.fc16.1.i686
[root@localhost Packages]# rpm -ivh samba-common-3.6.0-69rc2.fc16.1.i686.rpm
warning: samba-common-3.6.0-69rc2.fc16.1.i686.rpm: Header V3 RSA/SHA256 Signature, key ID a82ba4b7: NOKEY
Preparing... ########################################### [100%]
1:samba-common ########################################### [100%]
[root@localhost Packages]# rpm -ivh samba-3.6.0-69rc2.fc16.1.i686.rpm
warning: samba-3.6.0-69rc2.fc16.1.i686.rpm: Header V3 RSA/SHA256 Signature, key ID a82ba4b7: NOKEY
Preparing... ########################################### [100%]
1:samba ########################################### [100%]
3.配置samba
samba的配置在/etc/samba/smb.conf目录下。本文的目的是将文件共享在局域网中,并使得共享目录有访问以及读写权限。
[root@localhost Packages]# vi /etc/samba/smb.conf
设置下面的各项
workgroup = MYGROUP //设置工作组
server string = Samba Server Version %v //共享文件(夹)的描述信息
netbios name = MYSERVER //NetBIOS名字。Fedora16默认没有启动
log file = /var/log/samba/log.%m //日志文件的保存路径,%m代表windows主机名
max log size = 50 //日志的最大容量
security = user //安全级别。user需要用户名以及密码,share不需要
接下来设置具体的需要共享的文件的信息。
[samba] //建立一个名字为samba的共享文件
comment = share folder //描述信息
path = /home/samba //需要共享的文件(夹)路径
public = no //是否允许guest用户访问(相当于guest ok = yes/no)
writable = yes //是否可写
printable = no //指定打印能否启动。取值为no时,则无打印权限
write list = @users //可写用户的列表(@代表用户组)
配置信息准备好之后,接下来设置共享文件(夹)的信息
[root@localhost ~]# mkdir /home/samba //创建共享文件的目录
[root@localhost ~]# chown -R nobody /home/samba/ //设置目录的拥有者为nobody
[root@localhost ~]# chmod 777 /home/samba/ //设置目录属性(权限)为777,即任意读写以及执行权
在进行到服务端的连接之前,需要预先对用于登录Samba的用户进行设置。这里我们以标准的Samba用户数据库管理工具“smbpasswd”为例,创建用于登录Samba的用户数据。这里需要注意的一点:用smbpasswd创建用户的前提是,系统用户中存在该用户--在基于系统用户之上,才可以创建该用户在Samba用户数据库中的信息。
[root@localhost samba]# smbpasswd -a samba
New SMB password: //输入密码
Retype new SMB password: //再次确认输入密码
Added user samba.
4.防火墙的设置
在启用samba服务之前,需要进行防火墙的设置。开放samba执行时所需要的端口。
[root@localhost ~]# vi /etc/sysconfig/iptables
//打开后的内容如下:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
在这一行(*****tcp --dport 22 -j ACCEPT)后面加入下面的几行:
-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 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -p udp -m udp --dport 138 -j ACCEPT
重启启动iptables,使规则生效
[root@localhost ~]#/etc/rc.d/init.d/iptables restart
restartFlushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
5.启动samba服务
其中,samba的服务中包含两个守护进程(后台进程), 即smb以及nmb.
[root@localhost ~]# chkconfig smb on //设置samba自启动
[root@localhost ~]# chkconfig --list smb //确认samba的启动标签,其中2-5应该为on状态
smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# chkconfig nmb on //设置nmb自启动
[root@localhost ~]# chkconfig --list nmb //确认nmb的启动标签,其中2-5应该为on状态
nmb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# /etc/rc.d/init.d/smb restart //启动samba服务
Restarting smb (via systemctl): [ OK ]
[root@localhost ~]# /etc/rc.d/init.d/nmb restart //启动nmb服务
Restarting nmb (via systemctl): [ OK ]