服务器配置教案 Help

3-2 Samba信息文件块

虚拟机准备

公共步骤:详见0-1

介绍

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 完毕!

安装-离线包方式

  1. 下载安装包:从互联网或作业下发得到老师准备好的安装包。本课中文件名形如samba-installers.tar.gz ,Windows默认不显示后缀的情况下.gz不可见。

  2. 复制到虚拟机:在宿主机右键复制压缩包,在虚拟机图形化文件管理器中右键复制。(这个过程实际并不简单,Vmware会自动帮我们复制(不只是跨机器跨操作系统,还有跨文件系统NTFS到ext4,VMware会帮我们自动转换,就像普通的复制粘贴。)

    3-2拖动安装程序到虚拟机.png
  3. (可选)如果提供有软件下载网址,虚拟机中用wget命令下载文件至当前目录更方便。


    wget http://172.31.4.212/fileshare/samba-installer.tar.gz

  4. 解压缩和解包:


    .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 ...
  1. 安装

rpm -iv --force --nodeps ./samba-installer/*.rpm

参数-i install安装,-v verbose详细信息,-h hash解压时打印文件哈希值, force强制安装 因为有的依赖库系统上已经有了这里需要覆盖掉以保证版本正确, nodeps no dependencies因为安装包已经包含依赖和机器未换源、安装某个rpm时就不用再检查依赖了。
6. 验证
软件装上后应该有smb服务
systemctl status smb

准备共享目录、用户

  1. 创建文件共享目录


    mkdir /share

  2. 在/share目录下创建测试文件 cd /share


    touch 1.txt


    touch 2.mp4

  3. 创建用户zhangsan ,密码设置111111


    useradd zhangsan


    passwd zhangsan


    返回信息虽然说密码太简单无效,但其实能设置

新的 密码: 无效的密码: 密码是一个回文 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。
  1. (可选)创建用户组


    (本节不要求,如果想进一步测试权限,创建一些用户和组)


    groupadd students


    usermod -g students zhangsan

  2. 关闭防火墙


    systemctl stop firewalld

  3. 关闭selinux


    setenforce 0

  1. 记录下服务端ip地址


    nmcli 桥接网络下教室的ip形如172.31.5.123,本文中假设服务端IP172.31.5.100

  2. 客户端


    由于Windows资源管理器自带samba客户端工具,本课可以用宿主机充当客户端 ,一人即可完成实验。也可以两人一组。

配置文件

  1. 编辑配置

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 。有阅读成本,目前我们先放开权限先把服务搞通再说。

  1. 校验配置:


    检查配置是否正确

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.
  1. 修改文件夹和文件允许所有人访问。


    可选,因为配置中guest ok已经允许所有人访问。


    ll / | grep share返回/share文件夹权限为rwxr-xr-x root root ,这样即使服务正确,张三登录后也无法修改其中文件。

修改文件夹和其下的文件权限:

chmod -R 777 /share

启动服务

  1. 启动服务,名为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.
  1. (跳过)启动nmb服务,nmb服务负责主机名解析,可以访问主机名的方式访问。后面我们用的是ip访问服务端。

测试

Windows

Windows系统本身天然支持作为samba协议,"网上邻居"中可发现samba服务(由于服务端配置问题,可能不可直接看见,但能访问)。

  1. 访问服务端IP: 在运行 (快捷键win+R )或资源管理器 (快捷键win+E )中输入服务端IP地址即可访问。


    3-2window客户端访问服务端ip.png
  1. 输入用户名密码: 初次访问输入之前添加的smb用户名zhangsan和smb密码222222


    3-2输入凭证.png
  1. 访问成功,测试文件读写。


    3-2访问共享文件夹成功.png

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