假装异步加载中...
09 Jan 2014

ubuntu下samba配置

年底2个月开发移动联机游戏,此次使用新的后台框架:python和c++的组合。交互协议使用protobuf,数据库是mysql,缓存是memcache(后期会缓存redis),lua来处理配置,日志用到了log4cplus。

这次的后台系统运行在linux下,开发还是使用vs,每次修改完代码,都去linux下make。本来想有ftp,挺麻烦的,最后发现了samba,下面记录下配置。

####简介

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

####安装

首先安装samba:

sudo apt-get install samba
sudo apt-get install smbfs

####配置

创建共享目录:/data

cd /
sudo mkdir data
chmod 777 data

修改配置文件/etc/samba/smb.conf,搜索; security = user,替换为下面:

security = user
username map = /etc/samba/smbusers

最下面增加:

[data]
comment = data
path = /data
public = yes 
writable = true
valid users = king
create mask = 0664
directory mask = 0775
force user = king
force group = king
available = yes
browseable = yes

添加用户,king是我的账号,如果是其他账号,可以自己创建:

sudo smbpassed -a king  #添加king,并设置密码
sudo vi /etc/samba/smbusers #创建sambausers,并修改为king = "king"

测试并重新启动:

sudo testparam
sudo /etc/init.d/samba restart

####使用

windows下右键 我的电脑 -> 映射网络驱动器 -> 文件夹,选择映射的驱动器,输入\\你的ip\data, 点完成,然后输入用户名密码就行了。这时候就可以访问samba共享的目录data了。

####问题

由于项目比较分散,最后发现samba下N多的配置项,够凌乱,开始我忍了。直到后来,在vs下开发,很多时候想查看一些库的定义,由于没有包含进来所以找不到定义,最后想到使用ln来创建软连接,这样可以减少samba下的共享文件夹的个数。

在网上搜索了下,需要设置添加下面三行:

wide links = yes  
follow symlinks = yes  
unix extensions  = no  

好了,这下可以在映射的驱动器中看到ln的目录了,但是访问的时候提示没有权限。查看了samba的日志提示,好多类似下面的提示:

[2014/01/09 13:37:53.659863, 0] param/loadparm.c:10344(widelinks_warning)
Share ‘data’ has wide links and unix extensions enabled. These parameters are incompatible. Wide links will be disabled for this share

google了N次,找到一篇文章Samba and symlinks, 原来是我填写错了,unix extensions = no 必须要放在 [global]下,我直接放在了[data]下,问题解决,samba还有好多高级用法以后再折腾。

扩展阅读:

上一篇: 2013年总结
上一篇: Ubuntu One命令行工具