Loading... <h1 id="wiz_toc_0">samba</h1> <hr /> <ul class=" list-paddingleft-2"> <li> <p>samba概述</p> </li> <li> <p>samba原理</p> </li> <li> <p>samba服务</p> </li> <li> <p>samba的命令</p> </li> <li> <p>samba搭建实例</p> </li> <li> <p>使用GUI工具SWAT管理samba</p> </li> </ul> <hr /> <h2 id="wiz_toc_1">samba概述</h2> <h5 id="wiz_toc_2">什么是samba?</h5> <p>samba是基于smb(Server Message Block)协议的一种实现方式。</p> <h5 id="wiz_toc_3">samba的功能是什么?</h5> <p>samba能够用来在windows,unix平台间实现文件共享服务,不同于FTP与NFS的是,samba能够很好的跨平台实现共享,并在本地挂载共享文件夹。</p> <h2 id="wiz_toc_4">samba原理</h2> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161650-80.png" alt="samba" title="" style="border: 0px;max-width: 100%;margin: 2px 0px;height: auto !important" /></p> <pre>1.SMB是基于NetBIOS的一个网络文件共享协议,允许cilent从服务器端访问文件资源。 2.NetBIOS协议是一个用来让局域网内的主机互相连接的通讯协议,被广泛用于windows平台间的通信。 3.samba就是基于smb开发的,让unix主机能够通过mbr协议与windows平台进行文件共享。</pre> <h2 id="wiz_toc_5">samba服务</h2> <h3 id="wiz_toc_6">samba的安装包:</h3> <pre> samba samba服务器端程序。 libsmbclient samba客户端库文件。 samba-client samba客户端程序。 samba-common samba客户端以及服务端都会用到的文件,如samba.conf等。 samba-winbind samba对于windows域的支持的服务端的库。 samba-winbind-clients samba windwos域的客户端。</pre> <h3 id="wiz_toc_7">samba的进程文件:</h3> <pre>nmb:负责管理工作组,NETBIOS解析,工作在UDP的137,138端口上。 smb:负责对通过验证的请求调用系统资源,工作在TCP的139或445端口上。</pre> <h3 id="wiz_toc_8">samba的文件:</h3> <pre>/etc/samba/smb.conf samba的主要配置文件。 /etc/samba/smbusers 共享服务中,linux与windows的账号的映射,格式为 linuxuser = windowsuser1,windowsuser2 /var/lib/samba/private/passdb.tdb / secrets.tdb samba用户账号密码存放的数据库。</pre> <h4 id="wiz_toc_9">samba.conf</h4> <pre>[global] [network] workgroup = MYGROUP 工作组名称,要与windows的工作组名称一致。 server string = Samba Server Version %v ; netbios name = MYSERVER ; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 ; hosts allow = 127. 192.168.12. 192.168.13. [login] log file = /var/log/samba/log.%m 日志文件路径。 max log size = 50 一个日志文件最大多少Kb进行轮替。 [独立服务器设定 Standalone Server] security = user|share|domain 安全认证方式 share:共享模式 user:使用samba服务器的密码库 domain:使用外部域服务器的密码。 passdb backend = tdbsam 密码库格式。 [域成员设定 domain members] ; security = domain ; passdb backend = tdbsam ; realm = MY_REALM ; password server = <NT-Server-Name> .................... 海量设置请自行查看此文件,或者查看/usr/share/doc/samba[version] 帮助手册。 #============================ Share Definitions ============================== [homes] comment = Home Directories 注释信息。 browseable = no 是否让所有人都看到此目录。 writable = yes 是否可以写入。 ; valid users = %S 有效的用户。 ; valid users = MYDOMAIN\%S [printers] comment = All Printers path = /var/spool/samba 共享文件夹路径。 browseable = no guest ok = no 是否允许来宾账号访问。 writable = no printable = yes 是否允许打印。 # Un-comment the following and create the netlogon directory for Domain Logons 格式参考模板1 ; [netlogon] ; comment = Network Logon Service ; path = /var/lib/samba/netlogon ; guest ok = yes ; writable = no ; share modes = no # Un-comment the following to provide a specific roving profile share 格式参考模板2 # the default is to use the user's home directory ; [Profiles] ; path = /var/lib/samba/profiles ; browseable = no ; guest ok = yes # A publicly accessible directory, but read only, except for people in 格式参考模板3 # the "staff" group ; [public] ; comment = Public Stuff ; path = /home/samba ; public = yes ; writable = yes ; printable = no ; write list = +staff</pre> <h4 id="wiz_toc_10">smb.conf基础共享属性格式小结:</h4> <pre>[NAME] 共享名称,windows看见的文件夹名称。 comment = [STRING] 注释信息。 path = /PATH/TO/SHARE_DIR 共享文件夹的路径。 browseable = yes|no 是否让所有人都看到此目录。 guest ok = yes|no 是否允许来宾账号。 writable = yes|no 是否允许写入。 read only = yes|no 是否设定只读。 write list = group,user 只有在此条中组或用户才能写入。</pre> <h3 id="wiz_toc_11">账号,权限相关</h3> <pre>与nfs相同,samba的可行性权限也是用户权限与文件夹权限的交集,所以在设置时请确认用户,文件夹权限两点。 如果没有设定guest ok,samba默认是不允许匿名登陆的,一定要设定账号。</pre> <h2 id="wiz_toc_12">samba的命令与客户端访问</h2> <h3 id="wiz_toc_13">testparm:测试有效的exports内的属性。</h3> <pre>testparm</pre> <h3 id="wiz_toc_14">pdbedit:管理smb的用户数据库。</h3> <pre>pdbedit -L [-vm] 列出数据库中的用户等信息,-v详细信息,-w使用smbpasswd格式。 pdbedit -a -u [user] 新增一个用户,但必须存在实体用户。 pdbedit -r -u [user] 修改一个用户的信息,需搭配其他参数,可参考man文档。 pdbedit -x -u [user] 删除一个用户。 pdbedit -a -m -u [machine account计算机账号] 添加一个计算机账号,域相关。</pre> <h3 id="wiz_toc_15">smbpasswd:改变samba账户的密码。</h3> <pre>smbpasswd -a [user] 新增用户以及密码。 smbpasswd -r [user] 修改用户密码。 smbpasswd -x [user] 删除用户。 smbpasswd -d [user] 禁止登陆。 smbpasswd -e [user] 启用用户。</pre> <h3 id="wiz_toc_16">smbclient:unix客户端访问工具。</h3> <pre>smbclient -L //IPADDR [-U smbuser] 测试查看目标服务器所开放的共享文件夹 smbclient //IPADDR/dir -U smbuser 连接共享服务器文件夹。 [root@host2 ~]# smbclient //192.168.1.1/test -U xiao 命令行形式访问。 Enter xiao's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7] smb: \> help ? allinfo altname archive blocksize cancel case_sensitive cd chmod chown ....</pre> <h3 id="wiz_toc_17">挂载访问。</h3> <pre>mount -t cifs -o username=xiao,password=redhat -l //192.168.1.1/test /tmp</pre> <h2 id="wiz_toc_18">samba搭建实例</h2> <h3 id="wiz_toc_19">smb服务搭建:</h3> <hr /> <h4 id="wiz_toc_20">host1(192.168.1.1):</h4> <pre>[root@host1 ~]# yum install samba [root@host1 ~]# vim /etc/samba/smb.conf [test] comment = test on 192.168.1.1 server! path = /tmp/samba writable = yes guest ok = yes write list = xiao [root@host1 ~]# testparm [root@host1 ~]# pdbedit -a -u xiao [root@host1 ~]# pdbedit -L [root@host1 ~]# mkdir -pv /tmp/samba [root@host1 ~]# setfacl -m u:xiao:rwx /tmp/samba [root@host1 ~]# service nmb start [root@host1 ~]# service smb start ps.配置iptables并设置selinux。</pre> <h3 id="wiz_toc_21">测试:</h3> <hr /> <h4 id="wiz_toc_22">host2(192.168.1.2):</h4> <pre>[root@host2 ~]# smbclient -L //192.168.1.1 -U xiao 查看192.168.1.1共享的文件夹,并指定账户。 Enter xiao's password: 输入密码。 Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7] Sharename Type Comment --------- ---- ------- test Disk test on 192.168.1.1 server! IPC$ IPC IPC Service (Samba Server Version 3.6.23-30.el6_7) xiao Disk Home Directories Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7] Server Comment --------- ------- HOST1 Samba Server Version 3.6.23-30.el6_7 可以看到host1。 Workgroup Master --------- ------- MYGROUP HOST1 WORKGROUP XIAOLAOPO [root@host1 ~]# smbclient //192.168.1.1/test -U xiao 访问192.168.1.1的共享文件夹test Enter xiao's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7] smb: \> ls 列出文件夹。 . D 0 Tue Apr 26 19:03:03 2016 .. D 0 Wed Apr 27 17:32:03 2016 a.txt A 0 Tue Apr 26 19:02:57 2016 35418 blocks of size 524288. 23572 blocks available smb: \> get a.txt 尝试下载a.txt getting file \a.txt of size 0 as a.txt (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec) smb: \> put install.log 尝试上传。 putting file install.log as \install.log (440.0 kb/s) (average 440.0 kb/s) smb: \> ls 查看,上传成功。 . D 0 Wed Apr 27 17:46:55 2016 .. D 0 Wed Apr 27 17:32:03 2016 a.txt A 0 Tue Apr 26 19:02:57 2016 install.log A 49565 Wed Apr 27 17:46:55 2016 35418 blocks of size 524288. 23572 blocks available</pre> <hr /> <h4 id="wiz_toc_23">windows8(192.168.1.10):</h4> <h5 id="wiz_toc_24">访问192.168.1.1的共享文件夹:</h5> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161650-4.png" alt="windowstest1" title="" style="border: 0px;max-width: 100%;margin: 2px 0px;height: auto !important" /></p> <h5 id="wiz_toc_25">身份验证:</h5> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161651-46.png" alt="windowstest2" title="" style="border: 0px;max-width: 100%;margin: 2px 0px;height: auto !important" /></p> <h5 id="wiz_toc_26">尝试创建文件并查看所有者:</h5> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161651-27.png" alt="windowstest3" title="" style="border: 0px;max-width: 100%;margin: 2px 0px;height: auto !important" /></p> <h2 id="wiz_toc_27">使用GUI工具SWAT管理samba</h2> <h5 id="wiz_toc_28">swat是samba的图形化管理工具,我们可以在配置后通过http来通过网页配置,并且内嵌帮助文档,能够非常直观的配置samba服务,swat是基于xinetd超级守护进程。</h5> <pre>[root@host1 tmp]# yum install xinetd -y 安装xinetd超级守护进程 [root@host1 tmp]# yum install samba-swat -y 安装swat程序,主机安装包名为samba-swat,如果直接输入swat是找不到包的!! [root@host1 tmp]#vim /etc/xinetd.d/swat 编辑swat的配置文件。 # default: off # description: SWAT is the Samba Web Admin Tool. Use swat \ # to configure your Samba server. To use SWAT, \ # connect to port 901 with your favorite web browser. service swat { port = 901 <--- 监听的端口默认为901。 socket_type = stream <--- socket类型为stream,面向连接的稳定数据传输,即为TCP协议。 wait = no only_from = 192.168.1.0 <---只监听指定范围内的主机,即限制登陆主机,设置为0.0.0.0 则默认为监听所有主机。 user = root <---只允许使用指定用户登录。 server = /usr/sbin/swat <---指定主程序路径。 log_on_failure += USERID disable = no <---开启swat工具,yes为关闭。 } [root@host1 tmp]# service xinetd start 开启xinetd服务即可,因为swat是由xinetd来管理的。 [root@host1 tmp]# ss -tunl | grep 901 查看901端口号,的确为设置的tcp的901 tcp LISTEN 0 64 :::901 :::*</pre> <h5 id="wiz_toc_29">访问服务器的901端口:</h5> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161651-66.png" alt="swat1" title="" style="border: 0px;max-width: 100%;margin: 2px 0px;height: auto !important" /></p> <h5 id="wiz_toc_30">进行身份验证:</h5> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161651-83.png" alt="swat2" title="" style="border: 0px;max-width: 100%;margin: 2px 0px;height: auto !important" /></p> <h5 id="wiz_toc_31">进入图形设定界面:</h5> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161651-80.png" alt="swat3" title="" style="border: 0px;max-width: 100%;margin: 2px 0px;height: auto !important" /></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信