前言
1、配置Samba服务为什么要关闭防火墙(firewalld)和Selinux?
在linux操作系统中默认开启了防火墙,Selinux也处于启动状态,一般状态为enforing;所以,在我们搭建任何服务(每个服务都有自己的端口),由于防火墙和Selinux的存在导致服务的端口被拦截了,虽然可以用命令查看服务的监听端口,任然会访问不到自己搭建的服务!
2、关闭防火墙和Selinux
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. //关闭防火墙开机自启 [root@localhost ~]# vim /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing //将enforcing换成disabled # SELINUXTYPE= can take one of these three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted [root@localhost ~]# setenforce 0 //临时关闭selinux,也可以重启(永久生效) [root@localhost ~]# getenforce //与setenforce是一对,这个是查看selinux是否生效 Permissive
一、Samba服务
1、Samba服务介绍
1️⃣:服务全称:Samba — SMB(Server Message Block服务器消息块--微软研发 CIFS)
2️⃣:服务功能:为网络(局域网)中客户机(Linux/Windows)提供文件和目录资源共享
3️⃣:服务模式:C/S 客户机服务器模式
4️⃣:模式的特点:服务的提供就需要在服务器端运行服务端程序,服务的访问则需要在客户机端运行客户端程序
5️⃣:服务客户端程序
Linux:smbclient(查看共享、访问共享) mount.cifs == mount -t cifs
Windows:GUI-资源管理器(查看、访问) 映射网络驱动器
2、Samba服务相关软件包
1️⃣:服务软件包:samba
2️⃣:服务进程名:smbd(核心) 和 nmbd
smbd:提供文件和目录共享,以及身份验证(默认情况下,是基于IP地址的访问共享)
nmbd:提供客户端通过服务器主机名的方式访问共享
3️⃣:服务端口号:
TCP:139和445(smbd) tcp端口相对应的服务是smbd服务,其作用是提供对服务器中文件、打印资源的共享访问
UDP:137和138(nmbd) udp端口相对应的服务是nmbd服务,其作用是提供基于NetBIOS主机名称的解析
3、Samba服务配置文件
1️⃣:服务配置主文件:/etc/samba/smb.conf (包括全局配置、共享配置[用户目录及打印机共享、自定义共享])
2️⃣:服务管理脚本文件:/etc/rc.d/init.d/smb | nmb
3️⃣:技术手册:/usr/share/doc/samba-版本号(直接Tab两下查看)
4、Samba主配置文件中相关参数介绍
1️⃣:SAMBA安全级别
share:匿名访问,即客户端访问共享时不必输入用户名和密码,较为常用
user:(默认)基于身份认证访问,即客户端访问共享时必须输入正确的用户名和密码,较为常用
server:使用指定主机进行身份验证。即基于远程主机完成认证的访问
domain:使用指定域控制器进行身份验证。即基于远程主机完成认证的访问
2️⃣:配置文件中规则:
#号开头的行为注释行
;号开头的行为备用设置参数,需要启用时,删除分号
设置参数的方式为 参数 = 值 (等于号前后各有一个空格)
可采用缩进功能,仅使文档清晰
3️⃣:常用参数及意义
workgroup = MYGROUP //工作组名称
server string = qiangge Samba Server //服务器描述
netbios name = SMBSERVER1 //SAMBA服务NETBIOS名,可与hostname不同
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 //提供服务的接口,可写接口名,IP地址等
hosts allow = 127. 192.168.12. 192.168.13. //允许访问服务的客户端,可写网络号,主机IP地址等
log file = /var/log/samba/log.%m //以每一个客户机建立一个独立的日志文件,%m代表以客户机主机名或IP地址为文件名的组成部分
max log size = 50 //日志文件的大小,单位默认为KB
security = user
share:匿名访问,即客户端访问共享时不必输入用户名和密码,较为常用
user:基于身份认证访问,即客户端访问共享时必须输入正确的用户名和密码,较为常用
server:使用指定主机进行身份验证。即基于远程主机完成认证的访问
domain:使用指定域控制器进行身份验证。即基于远程主机完成认证的访问
passdb backend = tdbsam //SAMBA用户密码数据库文件
5、关于共享目录的说明
[shared_name] [共享资源的共享名称] //共享目录名称是客户端访问共享时所用的名称,建议与物理目录名称不同更安全
comment = Comment String 共享文件描述
* path = /path/to/share_directory 共享文件的绝对路径
allow hosts = host(subnet) 允许访问此共享资源的主机列表
deny hosts = host(subnet) 禁止访问此共享资源的主机列表
* writable = yes|no 是否有写权限
* browseable = yes|no 是否浏览权限(yes为可见共享,no为隐藏共享)
user = user(@group) 设置所有可能使用该共享资源的用户列表
valid users = user(@group) 指定能够使用该共享资源的用户和组列表
invalid users = user(@group) 指定不能够使用该共享资源的用户和组
read list = user(@group) 设置能够读取该共享资源的用户列表
write list = user(@group) 设置对该共享资源具有写权限的用户列表
admin list = user(@group) 设置对共享资源具有管理权限的用户列表
* public = yes|no 指明该共享资源是否能给游客帐号访问
guest ok = yes|no 与public相同
hide dot files = yes|no 是否隐藏以“.”号开头的文件
create mode = 0755 指明新建立的文件的属性,一般是0755
directory mode = 0755 指明新建立的目录的属性,一般是0755
sync always = yes|no 指明写操作后是否进行同步操作
short preserve case = yes|no 指明忽略文件名大小写
preserve case = yes|no 指明保持文件名大小写
case sensitive = yes|no 指明是否对大小写敏感
mangle case = yes|no 指明混合大小写
default case = upper|lower 指明缺省的文件名是全部大写还是小写
force user = lt 强制指定建立文件的属主是谁
wide links = yes|no 指明是否允许共享外符号连接
max connections = 100 设定同时连接数是n
delete readonly = yes|no 指明能否删除已经被定义为只读的文件
root preexec = /bin/mount -t iso9660 /dev/cdrom /mnt/cdrom 自动挂光驱
root postexec = /bin/umount /mnt/cdrom 自动