Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置"NetBIOS over TCP/IP"使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。 简单来说,Samba是实现Windows和Linux跨平台文件共享的;Samba有两个守护进程,分别是smbd和nmbd; smb:监听tcp 139 445端口,实现档案共享、用户验证等; nmb:监听udp137和138端口,实现netBIOS解析,处理浏览共享等 Linux上要实现Samba需要以下套件 Samba 实现服务 samba-client Linux客户端 cifs-utils 实现跨平台访问 环境检查 1.环境中是否已安装Samba及相关套件 [root@SAMBA ~]# rpm -qa samba samba-client cifs-utils samba-client-3.6.23-12.el6.x86_64 cifs-utils-4.8.1-19.el6.x86_64 2) 安装samba 经过检查,samba-client和cifs-utils已经默认安装(如果没有安装,安装即可),所以安装samba主服务即可; [root@SAMBA ~]# yum -y install samba 采用yum安装,自动解决依赖关系; samba主配置文件介绍 主配置文件: /etc/samb/smb.conf 默认配置: [root@SAMBA ~]# grep -vE "^#|^$|^;" /etc/samba/smb.conf [global] workgroup = MYGROUP //samba全局设置 server string = Samba Server Version %v # logs split per machine log file = /var/log/samba/log.%m # max 50KB per log file, then rotate max log size = 50 security = user passdb backend = tdbsam # the login script name depends on the machine name # the login script name depends on the unix user used # disables profiles support by specifing an empty path load printers = yes cups options = raw #obtain list of printers automatically on SystemV [homes] //用户共享目录设置 comment = Home Directories browseable = no writable = yes [printers] //打印设置 comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes 另外该配置文件还提供了共享设置案例,只不过用;注释掉了 [root@SAMBA ~]# grep -n "^;" /etc/samba/smb.conf |tail -n 20 243:; store dos attributes = yes 252:; valid users = %S//指定授权访问用户或用户组 253:; valid users = MYDOMAIN\%S 264:; [netlogon]//指定共享的自定义标识 265:; comment = Network Logon Service//指定共享目录的说明文字 266:; path = /var/lib/samba/netlogon//指定共享的实际路径 267:; guest ok = yes//相当于public = yes ,所有人可用 268:; writable = no//与read only相反,是否可写 269:; share modes = no 274:; [Profiles] 275:; path = /var/lib/samba/profiles 276:; browseable = no//设置为隐藏 277:; guest ok = yes 282:; [public] 283:; comment = Public Stuff 284:; path = /home/samba 285:; public = yes 286:; writable = yes 287:; printable = no 288:; write list = +staff 常见配置语句解析 workgroup: 工作组名称 server string:服务器描述 security: 安全级别,user为要求用户验证 comment: 对此共享目录的说明文字 path: 共享目录的实际位置 browseable: 是否可见,no为隐藏 public: 是否所有人可见 writable: 是否可写,与read only相反 除了以上说明之外,还可以采用 man 5 smb.conf来帮助 账号说明 SAMBA使用可以采用匿名使用,可认证使用,具体采用方式由主配置文件中security决定; samba一共有5种,分别是share、user、server、domain、ads。 1.share:所有人都可以访问这台samba服务器(不需要输入用户名和密码)。 2.user:需要输入有效的用户名和密码才能访问samba服务器(身份验证由samba服务器负责)。 3.server:与user相同,只是将身份验证交由指定的另一台samba服务器负责。 4.domain:将身份验证交由域控制器负责。 5.ads:将身份验证交由域控制器负责(比domain更为安全一点)。 共享访问 Windows访问 Linux访问 smbclient访问 smbclient L 服务器地址 smbclient //服务器地址/共享名 smbclient U 用户名 //服务器地址/共享名 账号管理 账号设置 账号名称必须存在于系统中,但采用独立的密码,账号文件存在于/var/lib/samba/private/passwd.tdb;访问共享时,采用用户和密码登陆,权限取决于对应的系统账号的权限; 账号管理工具 pdbedit 工具 -a 指定系统账户为samba账户,并设置密码; -L 查看共享账号信息 -x 删除共享账号 案例解析 根目录下/samba为共享目录,目录内有music、carton、MV目录,其中分别对应各类档案,供上传和下载;其中vip账户woon可以写; 1)设置环境 [root@SAMBA samba]# ls carton music MV 2)配置共享 [root@SAMBA samba]# vim /etc/samba/smb.conf [music] path = /samba public = yes read only = yes write list = woon 3) 添加共享账户 [root@SAMBA samba]# pdbedit -a woon [root@SAMBA samba]# useradd samba [root@SAMBA samba]# pdbedit -a samba [root@woon samba]# setfacl -d -m u:woon:rwx /samba/ 4)重启samba服务; service smb restart service nmb estart 实验验证 1.woon用户验证 [root@woon ~]# ls -al /etc/ >> /samba/ls.log [root@woon ~]# rm -rf /samba/install.log [root@woon ~]# smbclient -U woon //192.168.239.128/music Enter woon's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-12.el6] smb: \> ls . D 0 Tue Mar 3 17:48:13 2015 .. DR 0 Tue Mar 3 17:32:03 2015 MV D 0 Tue Mar 3 17:38:00 2015 music D 0 Tue Mar 3 17:38:59 2015 ls.log 15220 Tue Mar 3 17:48:03 2015 acl D 0 Tue Mar 3 17:34:37 2015 carton D 0 Tue Mar 3 17:33:47 2015 33788 blocks of size 262144. 14918 blocks available smb: \> put install.log putting file install.log as \install.log (8637.9 kb/s) (average 8638.1 kb/s) smb: \> ls . D 0 Tue Mar 3 17:48:39 2015 .. DR 0 Tue Mar 3 17:32:03 2015 MV D 0 Tue Mar 3 17:38:00 2015 music D 0 Tue Mar 3 17:38:59 2015 ls.log 15220 Tue Mar 3 17:48:03 2015 Linux访问Windows共享文件夹 mount -t smbfs -o username=user,iocharset=GB2312 -l //192.168.1.100/test /mnt/test (责任编辑:IT) |