简介
Samba服务器是一个开源的网络文件共享服务,其主要功能是在不同操作系统之间实现文件和打印机共享。它最常用于将Linux/Unix系统与Windows系统互联,但也支持其他操作系统。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。
主要功能:
-
文件共享:Samba允许用户在网络上共享文件和目录,使其可从不同计算机和操作系统访问。这使得在混合环境中(例如Linux、Windows和macOS)共享文件变得容易。
-
打印机共享:Samba还可以用于共享网络打印机,以便多台计算机可以通过网络访问共享的打印设备。
-
身份验证和授权:Samba支持不同类型的身份验证和授权机制,包括基于用户的、基于域的和Kerberos身份验证。这使得用户可以通过其用户名和密码访问共享资源,并且管理员可以对访问进行更精细的控制。
-
集成Windows域控制器:Samba还可以用作Windows域控制器的替代品,允许管理Windows域内的用户、组和计算机。这使得在没有Windows服务器的情况下构建和管理Windows域成为可能。
-
数据备份:Samba可以用于将文件从不同计算机备份到中央存储位置,以确保数据的可用性和冗余。
Samba服务组成
Samba服务器提供smbd、nmbd两个服务程序,分别完成不同的功能
smbd
:其主要功能就是用来管理Samba服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管理的服务。当要访问服务器时,要查找共享文件,这时我们就要依靠smbd这个进程来管理数据传输。
nmbd
:其功能是进行NetBIOS名解析,并提供浏览服务显示网络上的共享资源列表。
修改主机名
hostnamectl set-hostname samba
bash
上传镜像并配置yum源
# 上传镜像
mount -o loop CentOS-7-x86_64-DVD-2009 (1).iso /mnt/
mkdir /opt/centos
cp -rvf /mnt/* /opt/centos
umount /mnt/
# yum源备份
mv /etc/yum.repos.d/* /media/
# 配置yum源
vi /etc/yum.repos.d/samba.conf
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
关闭防火墙
systemctl stop firewalld (暂时关闭防火墙)
systemctl disable firewalld (永久关闭防火墙)
# 修改selinux
vi /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=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
安装Samba服务
yum install -y samba
配置Samba服务
vi /etc/samba/smb.conf
[global]
workgroup = SAMBA #表示设置工作组名称
security = user #表示设置安全级别,其值可为 share、user、server、domain
passdb backend = tdbsam #表示设置共享帐户文件的类型,其值可为 tdbsam(tdb数据库文件)、ldapsam(LDAP目录 认证)、smbpasswd(兼容旧版本 samba 密码文件)
printing = cups
printcap name = cups #指定系统中定义的用于打印机共享的 Printcap 文件的路径和文件名
load printers = yes #控制 Samba 是否加载系统中定义的打印机
cups options = raw #用来设置与 CUPS(通用 UNIX 打印系统)相关的选项。
disable spoolss=yes #控制是否禁用 Samba 的打印支持功能
[homes]
comment = Home Directories # 用于提供对共享资源的描述性注释
valid users = %S, %D%w%S #允许访问该共享的用户
browseable = No #共享是否可被查看
read only = No #指定共享的资源是否只读
inherit acls = Yes #指定是否继承父目录的访问控制列表(ACL)
[printers]
comment = All Printers #共享描述
path = /var/tmp #共享路径
printable = Yes #是否可以打印
create mask = 0600 #指定新创建的文件的默认权限掩码
browseable = No #共享是否可被查看
[print$]
comment = Printer Drivers #共享描述
path = /var/lib/samba/drivers #表示共享目录的路径
write list = @printadmin root #表示设置允许写的用户和组,组要用 @ 表示
force group = @printadmin #设置共享资源的强制组名称
create mask = 0664 #指定新创建的目录的默认权限掩码
directory mask = 0775 #指定新创建的目录的默认权限掩码
[share]
path=/opt/share # 将要共享的目录
browseable=yes # 操作权限
public=yes # 访问权限
writable=yes # 对文件的操作权限
创建目录并赋予权限
mkdir /opt/share
chmod 777 /opt/share 777 为最大权限
启动Samba服务
systemctl start smb
systemctl start nmb
创建Samba用户
[root@samba~]# smbpasswd -a root
New SMB password:000000
Retype new SMB password:000000
Added user root.
重启Samba服务
service smb restart
使用Samba服务
使用 p c 机, 按 “ win+R ” 键 ,并输入Samba服务的IP地址 ( 在使用 pc 访问 Samba 服务前, 确保 Samba 服务 器的 Selinux 服务 与防火墙服务均处于关闭状态 )
可以看到一个root 目录一个 share 目录,Samba 会默认共享用户目录,share 则是通过配置文件共享的目录。使用 Samba 服务,可以简单地理解为共享文件服务器,将需要被共享的文件,放入 share 目录即可,将之前移动到/media 中的 repo 文件,移动到 share 目录,命令如下:
[root@samba~]# mv /media/* /opt/share/