Samba
2017-10-18 本文已影响0人
不知岁月惜
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 #服务器介绍信息,参数%v为显示SMB版本号
; 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>
[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 共享文件夹的路径。
create mask = 0644 设置上传文件权限(默认744)
browseable = yes|no 是否让所有人都看到此目录。
guest ok = yes|no 是否允许来宾账号。
writable = yes|no 是否允许写入。
read only = yes|no 是否设定只读。
write list = group,user 只有在此条中组或用户才能写入。
账号,权限相关
valid users=wang,@admins 添加可访问用户,或者组
与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