· SAMBA文件共享服务
服务相关介绍
1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block)服务器消息块协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单
到了1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了SMBServer服务程序
这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作
当时,Tridgwell想把这款软件的名字SMBServer注册成为商标,但却被商标局以SMB是没有意义的字符而拒绝了申请。后来Tridgwell不断翻看词典,突然看到一个拉丁舞蹈的名字—Samba,而且这个热情洋溢的舞蹈名字中又恰好包含了“SMB”,于是Samba服务程序的名字由此诞生。Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择
服务参数介绍
Samba:服务程序的名字也恰巧是软件包的名
samba-client:用于测试共享目录的客户端程序
1.安装samba服务
[root@xiudaochengxian ~]# yum -y install samba samba-client
Complete!
2.编辑samba主配置文件(只有37行)
第17至22行代表共享该登录用户的家目录内容,虽然某些情况下可以更方便的共享文件,但这个默认操作着实有些危险,建议删除掉不要共享
第24-29行是用SMB协议共享本地的打印机设备,方便局域网内的用户可以远程使用,当前我们没有打印机设备,因此也删除掉不共享
第31至37行依然为共享打印机设备的参数,同样建议予以删除
[root@xiudaochengxian ~]# cd /etc/samba/
[root@xiudaochengxian samba]# ls
lmhosts smb.conf smb.conf.example
[root@xiudaochengxian samba]# vim smb.conf
1 # See smb.conf.example for a more detailed config file or
2 # read the smb.conf manpage.
3 # Run 'testparm' to verify the config is correct after
4 # you modified it.
5
6 [global] #全局参数
7 workgroup = SAMBA #工作组名称
8 security = user #安全验证的方式,user 使用账号密码进行验证
9
10 passdb backend = tdbsam #定义用户后台的类型,共有四种
11
12 printing = cups #打印服务协议
13 printcap name = cups #打印服务名称
14 load printers = yes #是否加载打印机
15 cups options = raw #通用UNIX打印系统服务
16
# 第17至22行代表共享该登录用户的家目录内容【可删除】
17 [homes] #共享名称
18 comment = Home Directories #描述信息
19 valid users = %S, %D%w%S #可用账户
20 browseable = No #指定共享信息是否在“网上邻居”中可见
21 read only = No #是否只读
22 inherit acls = Yes #是否继承访问控制列表
23
# 第24-29行是用SMB协议共享本地的打印机设备【可删除】
24 [printers] #共享名称
25 comment = All Printers #描述信息
26 path = /var/tmp #共享路径
27 printable = Yes #是否可打印
28 create mask = 0600 #文件权限
29 browseable = No #指定共享信息是否在“网上邻居”中可见
30
# 第31至37行为共享打印机设备的参数【可删除】
31 [print$] #共享名称
32 comment = Printer Drivers #描述信息
33 path = /var/lib/samba/drivers #共享路径
34 write list = @printadmin root #可写入文件的用户列表
35 force group = @printadmin #用户组列表
36 create mask = 0664 #文件权限
37 directory mask = 0775 #目录权限
3.有效配置文件
[root@xiudaochengxian samba]# cat smb.conf
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
· 配置共享资源
1.安装samba和samba-client服务
[root@xiudaochengxian ~]# yum -y install samba samba-client
Complete!
2.配置Samba服务程序的主配置文件
[root@xiudaochengxian ~]# cd /etc/samba
[root@xiudaochengxian samba]# ls
lmhosts smb.conf smb.conf.example
[root@xiudaochengxian samba]# vim smb.conf
1 [global]
2 workgroup = SAMBA
3 security = user
4 passdb backend = tdbsam
5 [rick]
6 comment = sadsakdsad
7 path = /rick
8 public = no
9 writable = yes
用于设置Samba服务程序的参数以及作用
3.重启samba服务并加入开机启动项
[root@xiudaochengxian samba]# systemctl restart smb
[root@xiudaochengxian samba]# systemctl enable smb
4.创建用于访问共享资源的账户信息
在RHEL 8系统中,Samba服务程序默认使用的是用户口令认证模式(user)
这种认证模式可以确保仅让有密码且受信任的用户访问共享资源
只有建立账户信息数据库之后,才能使用用户口令认证模式。另外,Samba服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误
#新建用户
[root@xiudaochengxian samba]# useradd zhangsan
[root@xiudaochengxian samba]# id zhangsan
uid=1001(zhangsan) gid=1001(zhangsan) groups=1001(zhangsan)
#管理samba服务程序的账户信息数据库
[root@xiudaochengxian samba]# pdbedit -a -u zhangsan #第一次把账户信息写入到数据库时使用-a参数
new password:
retype new password:
Unix username: zhangsan
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2786892955-2209903556-728344356-1000
Primary Group SID: S-1-5-21-2786892955-2209903556-728344356-513
Full Name:
Home Directory: \\xiudaochengxian\zhangsan
HomeDir Drive:
Logon Script:
Profile Path: \\xiudaochengxian\zhangsan\profile
Domain: XIUDAOCHENGXIAN
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Wed, 25 Aug 2021 10:59:22 CST
Password can change: Wed, 25 Aug 2021 10:59:22 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
5.创建用于访问共享资源的文件目录,修改文件权限
[root@xiudaochengxian samba]# mkdir -p /rick
[root@xiudaochengxian samba]# chown -Rf zhangsan:zhangsan /rick
[root@xiudaochengxian samba]# chmod -Rf 777 /rick
6.设置SELinux服务与策略
[root@xiudaochengxian samba]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_load_libgfapi --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
tmpreaper_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off
[root@xiudaochengxian samba]# setsebool -P samba_export_all_rw=on
7.配置防火墙策略
[root@xiudaochengxian samba]# iptables -F
[root@xiudaochengxian samba]# iptables-save
[root@xiudaochengxian samba]# firewall-cmd --zone=public --permanent --add-service=samba
success
[root@xiudaochengxian samba]# firewall-cmd --reload
success
8.在服务器本地检查samba服务是否启动
[root@xiudaochengxian samba]# smbclient -U zhangsan -L 192.168.1.105
#-U 指定用户名称
#-L 列举共享清单
Enter SAMBA\zhangsan's password: #输入该账户在Samba服务数据库中的密码
Sharename Type Comment
--------- ---- -------
rick Disk sadsakdsad
IPC$ IPC IPC Service (Samba 4.7.1)
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
· Windows挂载共享
1.测试网络连通性
Microsoft Windows [版本 10.0.19041.1165]
(c) Microsoft Corporation。保留所有权利。
C:\Users\xiudaochengxian>ping 192.168.1.105
正在 Ping 192.168.1.105 具有 32 字节的数据:
来自 192.168.1.105 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.105 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.105 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.105 的回复: 字节=32 时间<1ms TTL=64
192.168.1.105 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
2.在Windows系统中访问共享资源
3.输入账户名和pdbedit命令设置的密码后,就可以登录到共享界面中了
可以尝试执行查看、写入、更名、删除文件等操作
· Linux挂载共享
1.客户端安装支持文件共享服务的软件包(cifs-utils)
[root@test ~]# yum -y install cifs-utils
Complete!
2.客户端创建一个用于挂载Samba服务共享资源的目录
可以与服务器上的共享名称同名,便于日后查找
[root@test ~]# mkdir /rick
3.客户端写入一个认证文件,让/etc/fstab文件和系统自动挂载
[root@test ~]# vim auth.smb
1 username=zhangsan #用户名
2 password=123456 #密码
3 domain=SAMBA #共享域(工作组名称)
[root@test ~]# vim /etc/fstab
12 //192.168.1.105/rick /rick cifs credential=/root/auth.smb
0 0
4.客户端挂载samba服务共享资源目录
[root@test ~]# mount -t cifs -o username=zhangsan,password=123 //192.168.1.105/rick /rick
[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 17G 5.0G 13G 30% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 21M 1.9G 2% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 165M 850M 17% /boot
tmpfs 378M 48K 378M 1% /run/user/0
/dev/sr0 4.2G 4.2G 0 100% /run/media/root/CentOS 7 x86_64
//192.168.1.105/rick 17G 3.5G 14G 21% /rick
5.客户端查看共享文件资源
[root@test ~]# cd /rick/
[root@test rick]# ls
haha.txt
[root@test rick]# cat haha.txt
windows访问成功[root@test rick]#
#客户端修改共享文件资源
[root@test rick]# vim haha.txt
1 window10 共享成功
2 linux can edit it
6.服务器查看共享文件资源
[root@xiudaochengxian samba]# cd /rick/
[root@xiudaochengxian rick]# ls
haha.txt
[root@xiudaochengxian rick]# cat haha.txt
window10 共享成功
linux can edit it