零、问题需求经常要在Windows与Linux之间共享文件,Samba是一个很常见的选择:Linux运行Samba服务,Windows访问Linux上共享的文件。在不需要用户访问控制的场景下,Samba服务的安全级别设置为共享(share)就可以了。我的需求是想对Samba服务的访问者进行身份验证,所以选择用户安全级别(user)。user级别要求用户访问samba服务时提供用户名和密码,而且身份验证由 samba server 负责。下面是用smbpasswd方式做的,因我的需求很单一,所以Samba的配置文件也非常简单。这里做个笔记记录一下以备忘。
一、准备Samba软件1. 安装Samba相关软件包,安装过程略2. 备份samba配置文件,我们后面要自己从头新建一个配置文件
- sudo mv /etc/samba/smb.conf /etc/samba/smb-original.conf
- sudo touch /etc/samba/smb.conf
二、工作场所我们在/etc/samba目录下工作,涉及的文件都在这个目录下。
三、相关文件用smbpasswd完成user安全级别需要修改或者生成的文件只有下面3个:/etc/samba/smb.conf # samba配置文件,大家都懂的/etc/samba/smbusers # 用来定义用户名映射,比如可以将root换成administrator、admin等/etc/samba/smbpasswd # samba密码存放文件下面简单描述一下这3个文件。
四、smb.conf 文件samba自带的smb.conf文件注释很多,例子给的也不少,容易让人觉得这个文件很复杂,其实它的框架很简单,主要包括下面几个小节:
- [global]
- [homes]
- [printers]
- [自定义小节]
我们主要关注[global]小节和[自定义小节],[global]小节中我们此次关注的重要参数有以下几个:
- workgroup = WORKGROUP
- server string = samba server on ubuntu
- netbios name = ubuntu_smb
- interfaces = 127.0.0.0/8 eth0
- hosts allow = 192.168.1. 192.168.163. 192.168.153.
- security = user
- username map = /etc/samba/smbusers
- encrypt passwords = true
- passdb backend = smbpasswd
- smb passwd file =/etc/samba/smbpasswd
- log file = /var/log/samba/log.%m
- max open files = 1000
- socket options = TCP_NODELAY
[自定义小节]小节主要的参数如下:
- comment = code
- path = /home/songyd/code
- writable = yes
- browseable = yes
- available = yes
五、smbusers 文件该文件格式如下:系统用户名 = 映射的虚拟账号1,映射的虚拟账号2,...例如:
- songyd = admin
六、smbpasswd 文件该文件格式如下:
- name:uid:Lanman Password Hash:NT Password Hash:Account Flags:Last Change Time:
- sudo smbpasswd -a songyd
- songyd:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:BC53166B76BB840735D6AB4438B4CD5E:[U ]:LCT-4EA2F59B:
七、最后结果
- [global]
- workgroup = WORKGROUP
- server string = samba server on ubuntu
- netbios name = ubuntu_smb
- interfaces = 127.0.0.0/8 eth0
- hosts allow = 192.168.1. 192.168.163. 192.168.153.
- security = user
- username map = /etc/samba/smbusers
- encrypt passwords = true
- passdb backend = smbpasswd
- smb passwd file =/etc/samba/smbpasswd
- log file = /var/log/samba/log.%m
- max open files = 1000
- socket options = TCP_NODELAY
- ;[homes]
- ; comment = home directories
- ; browseable = no
- ; writable = yes
- ; valid users = %S
- ; create mode = 0664
- ;[printers]
- ; printable = Yes
- ; browseable = No
- ; path = /var/spool/samba
- [code]
- comment = code
- path = /home/songyd/code
- writable = yes
- browseable = yes
- available = yes
八、重启服务smb.conf修改完成,smbusers也已添加完毕,smbpasswd文件也已通过命令成功添加了记录,下面重启samba服务即可。Samba 有两个守护进程(nmbd 和 smbd),需要运行它们Samba 才能正常工作。nmbd 是一个服务器,它可以理解和响应 NetBIOS over IP 命名服务请求,比如 Windows 95/98/ME、Windows NT、Windows 2000、Windows XP 和 LanManager 客户机等 SMB/CIFS客户机产生的请求。它还参与浏览协议,从而构建 Windows 网络邻居视图。smbd 是服务器守护进程,它向 Windows 客户机提供文件共享和打印服务。这个服务器使用 SMB(或CIFS)协议向客户机提供文件空间和打印服务。
- sudo service smbd restart
- sudo service nmbd restart
九、软件环境Linux系统 :ubuntu 11.10Samba版本:Samba 3.5.11
十、小结这仅是快速实现user安全级别的samba共享的一个例子,介绍得很粗浅,省略了很多未涉及内容。网上介绍samba配置的文章很多,若有更复杂需求,请大家google之,baidu之:)