samba
-
samba概述
-
samba原理
-
samba服务
-
samba的命令
-
samba搭建实例
-
使用GUI工具SWAT管理samba
samba概述
什么是samba?
samba是基于smb(Server Message Block)协议的一种实现方式。
samba的功能是什么?
samba能够用来在windows,unix平台间实现文件共享服务,不同于FTP与NFS的是,samba能够很好的跨平台实现共享,并在本地挂载共享文件夹。
samba原理
1.SMB是基于NetBIOS的一个网络文件共享协议,允许cilent从服务器端访问文件资源。 2.NetBIOS协议是一个用来让局域网内的主机互相连接的通讯协议,被广泛用于windows平台间的通信。 3.samba就是基于smb开发的,让unix主机能够通过mbr协议与windows平台进行文件共享。
samba服务
samba的安装包:
samba samba服务器端程序。 libsmbclient samba客户端库文件。 samba-client samba客户端程序。 samba-common samba客户端以及服务端都会用到的文件,如samba.conf等。 samba-winbind samba对于windows域的支持的服务端的库。 samba-winbind-clients samba windwos域的客户端。
samba的进程文件:
nmb:负责管理工作组,NETBIOS解析,工作在UDP的137,138端口上。 smb:负责对通过验证的请求调用系统资源,工作在TCP的139或445端口上。
samba的文件:
/etc/samba/smb.conf samba的主要配置文件。 /etc/samba/smbusers 共享服务中,linux与windows的账号的映射,格式为 linuxuser = windowsuser1,windowsuser2 /var/lib/samba/private/passdb.tdb / secrets.tdb samba用户账号密码存放的数据库。
samba.conf
[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
smb.conf基础共享属性格式小结:
[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 只有在此条中组或用户才能写入。
账号,权限相关
与nfs相同,samba的可行性权限也是用户权限与文件夹权限的交集,所以在设置时请确认用户,文件夹权限两点。 如果没有设定guest ok,samba默认是不允许匿名登陆的,一定要设定账号。
samba的命令与客户端访问
testparm:测试有效的exports内的属性。
testparm
pdbedit:管理smb的用户数据库。
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计算机账号] 添加一个计算机账号,域相关。
smbpasswd:改变samba账户的密码。
smbpasswd -a [user] 新增用户以及密码。 smbpasswd -r [user] 修改用户密码。 smbpasswd -x [user] 删除用户。 smbpasswd -d [user] 禁止登陆。 smbpasswd -e [user] 启用用户。
smbclient:unix客户端访问工具。
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 ....
挂载访问。
mount -t cifs -o username=xiao,password=redhat -l //192.168.1.1/test /tmp
samba搭建实例
smb服务搭建:
host1(192.168.1.1):
[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。
测试:
host2(192.168.1.2):
[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
windows8(192.168.1.10):
访问192.168.1.1的共享文件夹:
身份验证:
尝试创建文件并查看所有者:
使用GUI工具SWAT管理samba
swat是samba的图形化管理工具,我们可以在配置后通过http来通过网页配置,并且内嵌帮助文档,能够非常直观的配置samba服务,swat是基于xinetd超级守护进程。
[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 :::*
访问服务器的901端口:
进行身份验证:
进入图形设定界面:
原创文章,作者:Net18_肖肖,如若转载,请注明出处:http://www.178linux.com/15661