SAMBA简介
NFS只能实现在linux和unix系统之间实现文件共享,而CIFS(公共因特网文件系统)只能实现windows系统之间的文件共享。那么linux或unix系统怎么和windows系统之间共享文件呢?这就要用到SAMBA服务器了,SAMBA服务器能真正实现在不同主机、不同系统之间的文件共享。
主要程序
smbd:提供对文件/文件资源的共享访问
监听端口 TCP139、TCP445
nmbd:提供基于NetBIOS协议的主机名解析
监听端口 UDP137、UDP138
环境拓扑:
Linux Client
-----------RHEL5.9(vmnet1)-------------(vmnet1)
Win7 Client
要求一:Samba匿名共享
工作组为Tarena
将目录 /usr/src 共享给所有人
共享名设为 tools
允许所有人访问、无需密码验证
访问权限为只读
1、安装软件包
[root@localhost ~]# rpm -q samba-client samba samba-common //检查samba服务是否安装
package samba-client is not installed
package samba is not installed
package samba-common is not installed
提示没有安装Samba包
2、修改yum主配置文件
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# cp rhel-debuginfo.repo rhel- server.repo
[root@localhost yum.repos.d]# cat rhel-server.repo
[rhel-server] //源名称
name=Red Hat Enterprise Linux Server //本软件源的描述
baseurl=file:///misc/cd/Server //指定YUM服务端的URL地址
enabled=1 //是否启此通道
gpgcheck=0 //是否验证待安装的RPM包
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release //用于RPM验证的密钥文件
//放入rhel5.9 iso
[root@localhost yum.repos.d]# yum clean all //清空yum缓存
3、安装samba服务
[root@localhost yum.repos.d]# yum -y install samba samba-client samba-common
4、修改主配置文件
[root@localhost ~]# cd /etc/samba/
[root@localhost samba]# cp smb.conf smb.conf.bak //修改前备份
[root@localhost samba]# vim /etc/samba/smb.conf //samba主配置文件
...
74 workgroup = Tarena //工作组名称
75 server string = Win File Ser //服务器描述
...
89 log file = /var/log/samba/%m.log //日志路径,%m客户机地址
...
91 max log size = 50 //日志最大容量(KB)
...
101 security = share //使用的安全级别(share:匿名、user:用户认证、server:由指定的服务器认证、domain:Windows域认证)
...
221 load printers = no //屏蔽共享时看到的打印图标
...
289 [tools] //共享文件名
290 comment = Tools Public //描述
291 path = /usr/src //共享目录的位置
292 public = yes //所有人可用
293 read only = yes //可读(wrtable可写)
5、启动服务
[root@localhost ~]# service smb restart //开启smb服务
[root@localhost ~]# chkconfig smb on //设置开机自动启动
[root@localhost ~]# netstat -anptu | grep mbd //检查端口
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 7008/smbd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 7008/smbd
udp 0 0 192.168.10.10:137 0.0.0.0:* 7011/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 7011/nmbd
udp 0 0 192.168.10.10:138 0.0.0.0:* 7011/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 7011/nmbd
6、客户端测试:
Windown:
UNC路径 \\192.168.10.10
Linux:
[root@localhost ~]# yum -y install samba-client //安装samba客户端
[root@localhost ~]# smbclient -L 192.168.10.10 //查询
[root@localhost ~]# smbclient //192.168.10.10/tools //连接
[root@localhost ~]# mkdir -p /data/smb
[root@localhost ~]# mount -t cifs //192.168.10.10/tools /data/smb/ //挂载
[root@localhost ~]# grep smb /etc/fstab //设置开机自动挂载
//192.168.10.10/tools /data/smb cifs defaults 0 0
要求二 Samba用户验证
修改原有的 [tools] 匿名共享设置
不再允许所有人访问
只允许nick读取、tom写入
拒绝其他用户或匿名访问
上传目录的权限为755
上传文件的权限为644
1、新建相应账户与samba密码
[root@localhost ~]# useradd nick //建立系统用户
[root@localhost ~]# useradd tom
[root@localhost ~]# echo "redhat" | passwd --stdin nick //设置系统用户密码
[root@localhost ~]# echo "redhat" | passwd --stdin tom
[root@localhost ~]# pdbedit -a nick //添加为共享账号并设置密码(可以测试哪个密码会生效)
[root@localhost ~]# pdbedit -a tom
2、修改主配置文件
[root@localhost ~]# vim /etc/samba/smb.conf
...
101 security = user //启用用户认证
...
289 [tools] //共享名
290 comment = Tools Public
291 path = /usr/src //指定共享路径
292 public = no //不对所以人开放
293 valid users = nick,tom //指定合法用户
294 write list = tom //用户tom可读可写
295 read only = yes //默认权限为只读
296 directory mask = 0755 //上传的目录权限
297 create mask = 0644 //上传的文件权限
...
[root@localhost ~]# setfacl -m u:tom:rwx /usr/src/ //指定用户tom对这个目录具有读写执行权限
3、启动服务
[root@localhost ~]# service smb restart
4、客户端测试
[root@localhost ~]# smbclient -U nick //192.168.10.10/tools
[root@localhost ~]# mount -o username=nick //192.168.10.10/tools /data/smb //建立挂载
要求三 Samba账户别名与访问地址控制
把普通帐户nick设置别名为kaka
设置只允许192.168.10.5地址访问
1、修改Samba用户别名文件
[root@localhost ~]# vim /etc/samba/smbusers
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
nick = kaka
2、修改主配置文件
[root@localhost ~]# vim /etc/samba/smb.conf
...
76 username map = /etc/samba/smbusers
...
289 [tools]
290 comment = Tools Public
291 path = /usr/src
292 public = no
293 valid users = nick,tom
294 write list = tom
295 read only = yes
296 directory mask = 0755
297 create mask = 0644
298 hosts allow = 192.168.10.5
3、客户端测试