SAMBA学习笔记
概述:实现windows与linux文件共享。Samba是通过服务器消息块(SMB)协议在网络上的计算机之间共享文件和打印服务的软件包。SMB协议是一种客户端服务器协议,位于应用层,是windows共享文件和打印服务的标准化协议。
1. 安装软件
[ila@www ~]$ rpm -qa | grep samb
samba-common-3.0.33-3.29.el5_5.1 #服务器与客户端都使用的软件
samba-client-3.0.33-3.29.el5_5.1 #linux作为客户端时的软件
samba-3.0.33-3.29.el5_5.1 #linux作为服务器时的软件
2. 配置文件
[root@www ~]# ls /etc/samba/
lmhosts passdb.tdb secrets.tdb smb.conf smbusers
lmhosts:因为SMB是基于NetBIOS的,lmhost其实就是名称与IP的映射文件,与/etc/hosts类似。
passdb.tdb
和
secrets.tdb:管理帐号密码的文件
smb.conf:主配置文件
smbusers:windows账户与linux账户的映射文件
/etc/samba/smb.conf
Samba配置文件的解释行前面为#号,未启用的配置行前面为;号。
包括四个字段:
[global] 设置全局环境选项
Security = 指定安全模式,主要有share(无权限验证,不推荐),user(缺省,推荐,有验证),server(第三方验证),domain(第三方验证,要求验证主机为域控制器)。因为samba主机一般用在内网,所以一般user模式就足够了,用第三方验证反而比较复杂繁琐了。
Hosts allow = 主机访问限制 (还可以设置hosts deny),例如:
hosts allow = client1, alarm.com, 192.168.16. EXCEPT 192.168.16.1
[home]
设置用户宿主目录共享
Comment = 描述信息
Browseable = no 即你没有权限访问的目录是不可见的,这样看着就很清爽了
Writable = yes 对自己的宿主目录有写权限
[printers] 设置共享打印机
[sharefiles]设置文件共享
Interface = 设置监听的网卡
3. 启动服务
/etc/rc.d/init.d/smb start
Samba有两个守护进程:smbd(TCP 139),nmbd(UDP 137 138)。
Smbd进程的作用是处理SMB的请求包,负责用户验证和文件共享;nmbd的作用是处理浏览共享和计算机名称解析。
4. 启用samba服务器
1.防火墙配置。配置iptables开启相应的接口。如果开启了selinux,输入以下命令:setsebool –P samba_enable_home_dirs on。(注意,不同版本的selinux命令也会不一样,使用getsebool –a | grep samba 来查看相应的配置,然后修改)
例如:
[root@www ~]# getsebool -a | grep samba
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_share_fusefs --> off
samba_share_nfs --> off
use_samba_home_dirs --> off
virt_use_samba --> off
基本上大部分都要打开
2.设置用户密码。smbpasswd –a userxxx。注意,用户必须是linux系统内存在的用户,如果想修改samba密码,不加-a即可修改。这个命令会在/etc/samba文件夹下建立smbpasswd文件。
3.登录。在windows下运行: \\x.x.x.x输入用户密码,即可进入。
4.断开链接。在windows的cmd命令下输入net use可以产看当前的连接。断开摸个链接的话使用net use xx /delete ,进行相应的选择操作和确认。如果需要全部断开的话,使用net use * /delete /y即可。
5.查看状态:smbstatus
5. 建立共享目录
前面的示例实现了自己宿主目录与windows的共享,下面要实现的目录的多用户共享。
1. 如果开启了selinux,那么需要将共享的目录修改权限
chcon –t samba_share_t /sharedirxxx
2. 编辑samba.conf配置文件
[sharedirxxx]
#定义共享目录名称
path = /sharefolder
#共享目录的路径
valid users = ila edge
#定义可访问共享目录的用户。users一定不能写成单数形式,否则无效
writable = yes
#定义是否有写权限。注意,还需要在系统中对共享目录赋予一定的权限,他们之间是取交集的。
注:这部分内容最好在文件末尾写,这样查看的时候比较方便。
3. 检测配置文件 testparm 使用这个命令会检测配置文件,看看是否有语法错误。
4. 如果想让所有用户都可访问的话,valid users这行不写就可以了。
5.
用户映射
用于映射一般在windows和linux主机间进行,两个系统拥有不同的帐号,用户映射的目的就是将不同的用户映射为一个用户,这样就可以直接用windows账户访问samba资源。
首先将/etc/samba/smb.conf配置文件中的username map = /etc/samba/smbusers 前的注释号去掉,然后编辑/etc/samba/smbusers,将需要映射的用户添加到文件中,如:nobody = guest pcguest smbguest (前面是linux用户名,后面是windows用户名)