3-2 Samba信息文件块 介绍 Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做链接的自由软件。 第三版不仅可访问及分享SMB的文件夹及打印机,本身还可以集成入Windows Server的网域,扮演为网域控制站(Domain Controller)以及加入Active Directory成员。 简而言之,此软件在Windows与UNIX系列操作系统之间搭起一座桥梁,让两者的资源可互通有无。
(跳过)安装-在线方式 (在线方式需要先换源,由于机房环境,后面课程采用离线包安装方式)
yum install samba
安装过程中有询问是否确认安装和接受软件源的公钥,键入y 然后↵ 。返回信息如下
上次元数据过期检查:0:03:13 前,执行于 2024年10月11日 星期五 07时43分27秒。
依赖关系解决。
================================================================================
软件包 架构 版本 仓库 大小
================================================================================
安装:
samba x86_64 4.19.4-4.el8 baseos 1.0 M
安装依赖关系:
libnetapi x86_64 4.19.4-4.el8 baseos 217 k
samba-common-tools x86_64 4.19.4-4.el8 baseos 543 k
samba-dcerpc x86_64 4.19.4-4.el8 baseos 756 k
samba-ldb-ldap-modules x86_64 4.19.4-4.el8 baseos 113 k
samba-libs x86_64 4.19.4-4.el8 baseos 205 k
事务概要
================================================================================
安装 6 软件包
总下载:2.8 M
安装大小:8.1 M
确定吗?[y/N]: y
下载软件包:
(1/6): libnetapi-4.19.4-4.el8.x86_64.rpm 1.3 MB/s | 217 kB 00:00
(2/6): samba-common-tools-4.19.4-4.el8.x86_64.r 2.0 MB/s | 543 kB 00:00
(3/6): samba-4.19.4-4.el8.x86_64.rpm 2.9 MB/s | 1.0 MB 00:00
(4/6): samba-dcerpc-4.19.4-4.el8.x86_64.rpm 3.4 MB/s | 756 kB 00:00
(5/6): samba-ldb-ldap-modules-4.19.4-4.el8.x86_ 881 kB/s | 113 kB 00:00
(6/6): samba-libs-4.19.4-4.el8.x86_64.rpm 1.4 MB/s | 205 kB 00:00
--------------------------------------------------------------------------------
总计 5.7 MB/s | 2.8 MB 00:00
CentOS Stream 8 - BaseOS 1.6 MB/s | 1.6 kB 00:00
导入 GPG 公钥 0x8483C65D:
Userid: "CentOS (CentOS Official Signing Key) <security@centos.org>"
指纹: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
确定吗?[y/N]: y
导入公钥成功
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
安装 : samba-libs-4.19.4-4.el8.x86_64 1/6
安装 : libnetapi-4.19.4-4.el8.x86_64 2/6
安装 : samba-dcerpc-4.19.4-4.el8.x86_64 3/6
安装 : samba-ldb-ldap-modules-4.19.4-4.el8.x86_64 4/6
安装 : samba-common-tools-4.19.4-4.el8.x86_64 5/6
安装 : samba-4.19.4-4.el8.x86_64 6/6
运行脚本: samba-4.19.4-4.el8.x86_64 6/6
验证 : libnetapi-4.19.4-4.el8.x86_64 1/6
验证 : samba-4.19.4-4.el8.x86_64 2/6
验证 : samba-common-tools-4.19.4-4.el8.x86_64 3/6
验证 : samba-dcerpc-4.19.4-4.el8.x86_64 4/6
验证 : samba-ldb-ldap-modules-4.19.4-4.el8.x86_64 5/6
验证 : samba-libs-4.19.4-4.el8.x86_64 6/6
已安装:
libnetapi-4.19.4-4.el8.x86_64 samba-4.19.4-4.el8.x86_64
samba-common-tools-4.19.4-4.el8.x86_64 samba-dcerpc-4.19.4-4.el8.x86_64
samba-ldb-ldap-modules-4.19.4-4.el8.x86_64 samba-libs-4.19.4-4.el8.x86_64
完毕!
安装-离线包方式 下载安装包:从互联网或作业下发得到老师准备好的安装包。本课中文件名形如samba-installers.tar.gz ,Windows默认不显示后缀的情况下.gz不可见。
复制到虚拟机:在宿主机右键复制压缩包,在虚拟机图形化文件管理器中右键复制。(这个过程实际并不简单,Vmware会自动帮我们复制(不只是跨机器跨操作系统,还有跨文件系统NTFS到ext4,VMware会帮我们自动转换,就像普通的复制粘贴。)
(可选)如果提供有软件下载网址,虚拟机中用wget命令下载文件至当前目录更方便。
wget http://172.31.4.212/fileshare/samba-installer.tar.gz
解压缩和解包:
.gz是一种类似Windows上rar的压缩算法,gzip解压文件,命令略。
.tar是一种类似Windows上zip的打包,tar命令可以解包,命令略。
经常用的是压缩/解压缩、封包/解包二合一命令:
tar -zxvf samba-installers.tar.gz
参数z gzip压缩/解压缩,x extract检出文件解压缩,v verbose打印详细过程,f file跟压缩文件名。 4. 查看解压后的结果ls
看到多了一个文件夹samba-installer (压缩前的文件夹名,不一定与文档中完全一致) 查看文件夹下内容ls ./samba-installer
看到几十上百个.rpm安装程序,这是samba和其依赖和依赖的依赖。 思维上跟windows有些不一致,windows是把所有依赖封装为一个安装程序,linux上是散的。
cl-2.2.53-3.el8.x86_64.rpm
audit-libs-3.1.2-1.el8.x86_64.rpm
...
samba-4.19.4-4.el8.x86_64.rpm
samba-client-libs-4.19.4-4.el8.x86_64.rpm
samba-common-4.19.4-4.el8.noarch.rpm
...
安装
rpm -iv --force --nodeps ./samba-installer/*.rpm
参数-i install安装,-v verbose详细信息,-h hash解压时打印文件哈希值, force强制安装 因为有的依赖库系统上已经有了这里需要覆盖掉以保证版本正确, nodeps no dependencies因为安装包已经包含依赖和机器未换源、安装某个rpm时就不用再检查依赖了。 6. 验证 软件装上后应该有smb服务systemctl status smb
(课外)制作离线安装包: 1. 在一台软件源正常的已联网电脑上。 2. 安装一个包管理的工具 `yum install yum-utils` 3. 下载软件和软件的所有依赖 `repotrack samba`,得到许多rpm安装包。 4. 压缩,cd到上层文件夹,`tar -zcvf samba-installers.tar.gz ./samba-installers-dir`
准备共享目录、用户 创建文件共享目录
mkdir /share
在/share目录下创建测试文件 cd /share
touch 1.txt
touch 2.mp4
创建用户zhangsan ,密码设置111111
useradd zhangsan
passwd zhangsan
返回信息虽然说密码太简单无效,但其实能设置
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
(可选)创建用户组
(本节不要求,如果想进一步测试权限,创建一些用户和组)
groupadd students
usermod -g students zhangsan
关闭防火墙
systemctl stop firewalld
关闭selinux
setenforce 0
记录下服务端ip地址
nmcli
桥接网络下教室的ip形如172.31.5.123,本文中假设服务端 IP172.31.5.100
客户端
由于Windows资源管理器自带samba客户端工具,本课可以用宿主机充当客户端 ,一人即可完成实验。也可以两人一组。
配置文件 编辑配置
nano /etc/samba/smb.conf
在文件最后添加新配置块配置/share目录行为。
[global]
workgroup = SAMBA
security = user # 安全级别
passdb backend = tdbsam # 用户密码和权限存储于数据库
printing = cups
printcap name = cups
load printers = yes
cups options = raw # 没有host allow配置代表允许所有客户端ip访问
# Install samba-usershares package for support
include = /etc/samba/usershares.conf
[homes] # 默认会共享运行服务的用户的家目录
comment = Home Directories
valid users = %S, %D %w %S # (个人备注:此处字符引起WriteSide bug)
browseable = No # 在共享邻居中是否可见
read only = No # 是否所有人只读
inherit acls = Yes
[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 = /share # 共享文件夹路径
hosts allow = ALL # 允许的客户端IP,允许网段的写法是172.31.5. ,ALL代表允许所有客户端ip
browsable = yes # 可浏览
writeable = yes # 可读写
guest ok = yes # 允许匿名访问不需要密码
# #开头的行不用写,如果你做拓展实验,用户组的话需要做如下配置
# comment = My Custom Share # 描述
# valid users = root,zhangsan,xiaoming # 允许的用户。不写也行,用户已经由smbpasswd命令加入数据库
# valid users = @smbgroup # 允许的用户组。不写也行,本节没做用户组的权限实验。
samba配置详见英文文档samba doc 。有阅读成本,目前我们先放开权限先把服务搞通再说。
校验配置:
检查配置是否正确
testparm
如果正确,返回信息OK
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback)
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
添加用户授权
smbpasswd -a zhangsan
跟随向导设置为linux用户添加smb访问授权和smb密码,设置密码为222222
New SMB password:
Retype new SMB password:
Added user zhangsan.
修改文件夹和文件允许所有人访问。
可选,因为配置中guest ok 已经允许所有人访问。
ll / | grep share
返回/share文件夹权限为rwxr-xr-x root root ,这样即使服务正确,张三登录后也无法修改其中文件。
修改文件夹和其下的文件权限:
chmod -R 777 /share
启动服务 启动服务,名为smb
systemctl start smb
(可选)设置为开机自启动systemctl enable smb
2. 查看服务状态
systemctl status smb
返回信息active(running)为成功
smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset:>
Active: active (running) since Fri 2024-10-11 08:25:23 EDT; 12s ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 34890 (smbd)
Status: "smbd: ready to serve connections..."
Tasks: 3 (limit: 14017)
Memory: 11.5M
CGroup: /system.slice/smb.service
├─34890 /usr/sbin/smbd --foreground --no-process-group
├─34892 /usr/sbin/smbd --foreground --no-process-group
└─34893 /usr/sbin/smbd --foreground --no-process-group
10月 11 08:25:23 localhost.localdomain systemd[1]: Starting Samba SMB Daemon...
10月 11 08:25:23 localhost.localdomain smbd[34890]: [2024/10/11 08:25:23.294607>
10月 11 08:25:23 localhost.localdomain smbd[34890]: smbd version 4.19.4 start>
10月 11 08:25:23 localhost.localdomain smbd[34890]: Copyright Andrew Tridgell>
10月 11 08:25:23 localhost.localdomain systemd[1]: Started Samba SMB Daemon.
(跳过)启动nmb服务,nmb服务负责主机名解析,可以访问主机名的方式访问。后面我们用的是ip访问服务端。
测试 Windows Windows系统本身天然支持作为samba协议,"网上邻居"中可发现samba服务(由于服务端配置问题,可能不可直接看见,但能访问)。
访问服务端IP: 在运行 (快捷键win+R )或资源管理器 (快捷键win+E )中输入服务端IP地址 即可访问。
输入用户名密码: 初次访问输入之前添加的smb用户名zhangsan 和smb密码222222
访问成功,测试文件读写。
linux (下面为参考文章内容,未测试)
[root@node01 ~]# dnf -y install samba-client cifs-utils
# with [smbclient] command access
# smbclient (share name) -U (user name)
[root@node01 ~]# smbclient '\\smb.srv.world\Share01' -U cent
Enter SAMBA\cent's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Mon Mar 15 21:38:38 2021
.. D 0 Mon Mar 15 21:35:20 2021
testfile.txt N 15 Mon Mar 15 21:38:33 2021
testdir D 0 Mon Mar 15 21:38:38 2021
27245572 blocks of size 1024. 24883772 blocks available
# download a file
smb: \> mget testfile.txt
Get file testfile.txt? y
getting file \testfile.txt of size 15 as testfile.txt (4.9 KiloBytes/sec) (average 4.9 KiloBytes/sec)
smb: \> !ls
anaconda-ks.cfg testfile.txt
smb: \> exit
# with [mount] command access
# [vers=(SMB protocol version)]
[root@node01 ~]# mount -t cifs -o vers=3.0,username=cent '\\smb.srv.world\Share01' /mnt
Password for cent@\smb.srv.world\Share01: ******** # password
[root@node01 ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/cs-root xfs 26G 2.3G 24G 9% /
/dev/vda1 xfs 1014M 259M 756M 26% /boot
tmpfs tmpfs 374M 0 374M 0% /run/user/0
\\smb.srv.world\Share01 cifs 26G 2.3G 24G 9% /mnt
# if share does not require authentication, specify [none] for username
[root@node01 ~]# mount -t cifs -o vers=3,username=none,password=none '\\smb.srv.world\Share' /mnt
管理 smbstatus
,查看当前分享的目录和连接的客户端用户。 其它,略。
作业 实现samba服务。建议网络模式桥接,一人一组或两人一组。做完的上网搜命令在linux环境用linux的samba客户端连服务。
Last modified: 25 十一月 2024