一、samba服务简介
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
二、samb服务基础
软件包:samba
协议:SMP(TCP139)CIFS(445)
配置文件路径:/etc/samba/smb.conf
所需服务器:svr7(ip192.168.4.7)和myhost2
三、samba服务器的配置步骤
1、安装软件
[root@svr7 ~]# yum -y install samba
2、起服务
[root@svr7 ~]# systemctl restart smb
3、samba帐号的管理
samba用户:a、提前建立同名的系统用户(可不设置密码)
b、采用独立于系统的密码
管理工具:pdbedit
添加用户:-a
查询用户:-L
删除用户:-x
[root@svr7 ~]# useradd user //添加系统用户 [root@svr7 ~]# pdbedit -a user //添加与系统用户同名的samba用户 new password: //交互式设置密码 retype new password: Unix username: //添加成功后显示的内容 NT username: Account Flags: [U ] User SID: S-1-5-21-2938114846-3327256202-3573822823-1000 Primary Group SID: S-1-5-21-2938114846-3327256202-3573822823-513 ......................
[root@myhost1 smb]# pdbedit -L //查看samba用户列表 user:1001: user1:1002:
4、配置文件及参数
[root@svr7 ~]# vim /etc/samba/smb.conf [global] //全局配置 workgroup = MYGROUP [homes] //家目录共享 [printers] //打印机共享 [samba] path = /smb/ //共享目录路径 ; public = yes|no //默认no;公用的 ; browseable = yes|no //默认yes;是否可以浏览 ; read only = yes|no //默认yes;只读 ; writable = yes|no //默认yes;可写 write list = user //默认无;可写入的用户列表 valid users = user,user1//默认所有用户;有效的用户列表 ; hosts allow = 客户地址 //允许的客户机地址 ; hosts deny = 客户地址 //禁止的客户机地址 ; comment = 注释 //说明
5、修改用户对目录的读写执行权限
root@svr7 ~]# setfacl -m u:user:rwx /smb
6、SELinux对samba共享的保护
a、用getseboolbool查看selinux开关
[root@svr7 ~]#getsebool -a | grep samba_export samba_export_all_ro --> off samba_export_all_rw --> off //是否允许可读写共享
b、用setsebool控制SELinux开关
[root@svr7 ~]# setsebool -P samba_export_all_rw=on [root@svr7 ~]# setsebool -P samba_export_all_ro=on //打开
四、客户端访问共享目录
所需软件包:samba-client
1、列出共享资源:smbclient -L 服务器地址
[root@myhost2 ~]smbclient -L 192.168.4.7 Enter root's password: //此处无需输入密码,直接回车 Anonymous login successful Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.2.3] Sharename Type Comment --------- ---- ------- ................................
2、连接到目标主机的共享目录
[root@myhost2 ~]# smbclient -U user //192.168.4.7/tools(共享名) Enter user's password: //输入samba用户user的密码 Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.2.3] smb: \> ls . D 0 Fri Jul 28 22:02:25 2017 .. DR 0 Fri Jul 28 21:32:58 2017 123 D 0 Fri Jul 28 22:02:25 2017
配置过程中可能遇到的问题
1、客户端登录samba时出现以下提示:
session setup failed: NT_STATUS_LOGON_FAILURE
该错误提示表示用户有误,可能是用户不存在,也可能是密码错误,或者只是在samba用户和系统用户及密码出现错误,总之就是用户和密码的问题。
tree connect failed: NT_STATUS_BAD_NETWORK_NAME
该错误表示坏的网络名,表示共享目录不存在,或共享目录权限问题
可用setfacl -m给用户加权限
Connection to 192.168.4.7 failed (Error NT_STATUS_HOST_UNREACHABLE)
2、客户端连接到samba共享目录时出现以下提示:
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
文件权限不足,或者存在selinux限制
调整文件的权限,并打开selinux开关
3、执行setsebool -P 操作启用SElinux开关参数时失败,提示:Killed
内存不足,而且交换空间也不足
添加交换分区(1GB)在重试