Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
环境:Win7_64位+VMware11+Ubuntu1204
一,同其他网络服务一样,使用Samba服务必须要保证服务器与客户端能够联网,即能够ping通,否则请先调试网络。
二,如果使用的是Ubuntu1204以前的版本,建议先卸载samba,smbclient,samba-common。
1 sudo apt-get remove samba-common 2 sudo apt-get remove smbclient 3 sudo apt-get remove samba
下载安装Samba服务:
1 sudo apt-get install samba 2 sudo apt-get install samba-common 3 sudo apt-get install smbfs //在旧版的Ubuntu中,你可能需要使用 smbfs替代cifs-utils。 4 sudo apt-get install cifs-utils //新版本 ubuntu1204已安装
注:如果在安装samba过程中出现错误
samba : Depends: libwbclient0 (= 2:3.6.3-2ubuntu2) but 2:3.6.3-2ubuntu2.3 is to be installed
则卸载后重新安装samba
sudo apt-get remove libwbclient0 samba-common samba
sudo apt-get install samba //apt-get会自动补全依赖包
三,创建共享目录
sudo mkdir /home/share
sodu chmod 777 /home/share
四,开始配置/etc/samba/smb.conf
1. 保存现有的配置文件
2. 修改现配置文件
3. 在smb.conf最后添加
path = /home/share #共享目录绝对路径
available = yes #共享资源可用
browseable = yes #共享目录可浏览
public = yes #允许匿名用户登录
writable = yes #共享目录可写
【共享属性详解】
comment = 任意字符串
注:如果不习惯使用配置文件,也可以使用图形界面
安装Ubuntu samba图形管理界面
sudo apt-get install system-config-samba
启动samba图形管理界面
sudo system-config-samba
五. 创建samba帐户
sudo smbpasswd -a john
然后会要求你输入samba帐户的密码
[如果没有这一步,当你登录时会提示 session setup failed: NT_STATUS_LOGON_FAILURE]
smbpasswd 命令的用法:
smbpasswd -a 增加用户(要增加的用户必须以是系统用户)
smbpasswd -d 冻结用户,就是这个用户不能在登录了
smbpasswd -e 恢复用户,解冻用户,让冻结的用户可以在使用
smbpasswd -n 把用户的密码设置成空,要在global中写入 null passwords -true
smbpasswd -x 删除用户
六,配置完成后要重启samba
sudo /etc/init.d/smbd restart
七,测试及使用
测试:输入smbclient -L //localhost/share
使用:到windows在文件夹处输入 "\\" + "Ubuntu机器的ip或主机名" + "\\" + "share"
高级:用户账号映射
samba的用户帐号信息是保存在smbpasswd文件中滴,而且可以访问samba服务器的帐号也必须对应一个同名的系统帐号。基于这 一点,所以,对于一些hacker来说,只要知道samba服务器滴samba帐号,就等于是知道了Linux系统帐号,只要crack其samba帐号密码加以利用就可以攻击samba服务器。所以我们要使用用户帐号映射这个功能来解决这个问题。
用户帐号映射这个功能需要建立一个帐号映射关系表,里面记录了samba帐号和虚拟帐号的对应关系,客户端访问samba服务器时就使用虚拟来登录。
1)编辑主配置文件vi /etc/samba/smb.conf
在global下添加一行字段username map = /etc/samba/smbusers开启用户帐号映射功能。
2)编辑 vi /etc/samba/smbusers
smbusers文件保存帐号映射关系,其有固定滴格式:
samba帐号 = 虚拟帐号(映射帐号)
myname = networkusername
帐号myname就是我们上面建立的samba帐号(同时也是Linux系统帐号),networkusername就是映射的帐号名(虚拟帐号),帐号 myname在我们访问共享目录时只要输入networkusername就可以成功访问了,但是实际*问samba服务器的还是我们的myname帐号,这样一来就解决了安全问题。