Linux-Samba的使用

    科技2025-10-19  13

    Samba

    1、介绍

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件 目的:解决不同操作系统之间进行资源传递的问题

    我们可以将其架设成一个功能非常强大的文件服务器,也可以将其架设成打印服务器提供本地和远程联机打印

    原理:

    Samba 服务功能强大,这与其通信基于SMB 协议有关。SMB 不仅提供目录和打印机共享,还支持 认证、权限设置。在早期哈,SMB 运行于NBT 协议(NetBIOS over TCP/IP)上,使用UDP 协议 的137、138 及TCP 协议的139 端口,后期SMB 经过开发,可以直接运行于TCP/IP 协议上,没有 额外的NBT 层,使用TCP 协议的445 端口。

    1、协议协商 2、建立连接 3、访问 4、关闭

    端口:139、445

    模式:C/S模式

    扩展

    NETBIOS协议 NetBIOS是Network Basic Input/Output System的简称,网络基本输入/输出系统协议。主要作用:通过NETBIOS协议获得计算机名称,然后把计算机名解析为对应IP地址。

    使用场景

    文件和打印机共享:文件和打印机共享是Samba 的主要功能,SMB 进程实现资源共享,将文件和 打印机发布到网络之中,以供用户可以访问。 身份验证和权限设置:smbd 服务支持user mode 和domain mode 等身份验证和权限设置模式, 通过加密方式可以保护共享的文件和打印机。 名称解析:Samba 通过nmbd 服务可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS 名解析为IP 地址。

    浏览服务:局域网中,Samba 服务器可以成为本地主浏览服务器(LMB),保存可用资源列表, 当使用客户端访问Windows 网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。

    2、安装

    安装包

    安装包说明samba.*安装包samba-client.*客户端安装包

    挂载之后安装

    [root@qianshuiliyu ~]# yum -y install samba samba-client

    启动

    [root@qianshuiliyu ~]# systemctl restart smb [root@qianshuiliyu ~]# systemctl enable smb ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service' 如果重启且不需要断掉服务,可接reload加载配置文件 [root@qianshuiliyu ~]# systemctl reload smb

    查看端口

    3、配置文件

    查看配置文件

    [root@qianshuiliyu ~]# ls /etc/samba/smb.conf /etc/samba/smb.conf

    4、客户端的使用

    使用Linux客户端或windows都可以 关闭服务端的防火墙 1、linux客户端测试 smbclient -L 服务器ip

    [root@qianshuiliyu_client ~]# smbclient -L 192.172.168.100 Enter root's password: # 没有密码就直接回车 Anonymous login successful Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba Server Version 4.1.1) Anonymous login successful Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] Server Comment --------- ------- Workgroup Master --------- -------

    2、windows进行访问

    3、Linux访问 smbclient -L 目标IP 地址或主机名 -U 登录用户名%密码

    Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba Server Version 4.1.1) user1 Disk Home Directories Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] Server Comment --------- ------- Workgroup Master --------- -------

    4、Linux命令行访问 smbclient //目标IP 地址或主机名/共享目录 -U 用户名%密码

    [root@qianshuiliyu_client ~]# smbclient //192.172.168.100/public Enter root's password: Anonymous login successful Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.10-114.el6] smb: \> help # 通过help查询命令

    5、挂载

    mount -t cifs //目标IP 地址或主机名/共享目录名称 挂载点 -o username=用户名%密码 cifs 就是samba所使用的文件系统

    二、配置文件

    1、参数说明

    修改前进行备份,防止意外

    [root@qianshuiliyu ~]# vim /etc/samba/smb.conf [global] # 全局设置 workgroup = MYGROUP # 服务器所在的工作组或域名 server string = Samba Server Version %v # 描述信息 # username map = /etc/samba/smbusers # 账号映射设置,虚拟账号 log file = /var/log/samba/log.%m # 日志文件 security = user # 安全级别 # passdb backend = tdbsam smb passwd file = /etc/samba/smbpasswd # 指定密码文件 [homes] comment = Home Directories browseable = no writable = yes ; valid users = %S ; valid users = MYDOMAIN\%S # 为特殊共享目录,表示用户主目录,默认共享 [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes # 打印机机共享设置 # 自定义共享 [my gongxiang] comment = 我的共享 # 描述信息 browseable = yes # 是否允许查看此共享内容 path = /samba_server # 共享路径,写绝对路径 public = yes # 是否允许匿名查看 valid users = user1 # 设置访问用户 valid users = group1 # 设置访问组 readonly =yes #只读 readonly = no # 读写 writable = yes # 读写 writable = no # 只读 write list = 用户名 # list既可以组名可也以用户,用逗号分隔,这是写的权限 write list = @组名 browseable = no # 隐藏共享文件 writable yes 所有帐号都允许写入 writable no 所有帐号都禁止写入 write list 写入权限帐号列表 列表中的帐号允许写入 hosts allow = 192.172.168.0/24 # 字段定义允许访问的客户端 hosts deny =192.172.168.0/24,192.172.168.1. # 字段定义禁止访问的客户端,主机后面有个点 # 当hosts deny 和hosts allow 同时出现而且冲突滴时候,hosts allow 生效

    允许192.168.0.0 网段的IP 地址可以访问,但是192.168.0.100 及192.168.0.78 的主机禁止访问?就无法生效了我们可以使用EXCEPT 进行设置。 hosts allow = 192.168.0. EXCEPT 192.168.0.100 192.168.0.78 表示允许192.168.0.0 网段IP 地址访问,但是192.168.0.100 和192.168.0.78 除外

    2、安全模式

    常见模式有两种:share 安全级别模式和user 安全级别模式 samba 服务器有share、user、server、domain 和AD活动目录 五种安全模式。 share、user、server这三项属于:Standalone Server Options 单台服务器选项

    (1)share 安全级别模式 客户端登录samba 服务器,不需要输入用户名和密码就可以浏览samba 服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证samba 服务器的安全性。 (2)user 安全级别模式 客户端登录samba服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服 务器默认为此级别模式。 (3)server 安全级别模式 客户端需要将用户名和密码,提交到指定的一台samba 服务器上进行验证,如果验证出现错误, 客户端会用user 级别访问。 (4)domain 安全级别模式 如果samba 服务器加入windows 域环境中,验证工作服务,将由windows 域控制器负责,domain 级别的samba 服务器只是成为域的成员客户端,并不具备服务器的特性,samba早期的版本就是使用此级别登录windows 域。 (5)ads 安全级别模式 当samba 服务器使用ads 安全级别加入到windows 域环境中,其就具备了domain 安全级别模式 中所有的功能并可以具备域控制器的功能。

    3、用户设置

    1、密码文件

    samba 服务器发布共享资源后,客户端访问samba 服务器,需要提交用户名和密码进行身份验证,验证合格后才可以登录。samba 服务为了实现客户身份验证功能,将用户名和密码信息存放在/etc/samba/smbpasswd 中,在客户端访问时,将用户提交资料与smbpasswd 存放的信息进行比对,如果相同,并且samba 服务器其他安全设置允许,客户端与samba 服务器连接才能建立成功

    3、samba 帐号并不能直接建立滴,需要先建立Linux 同名的系统帐号,先设置配置文件,在添加用户,此时会自动创建密码文件

    把系统账号添加到samba服务器中 smbpasswd -a 用户名

    [root@qianshuiliyu samba]# useradd user1;echo user1:123456|chpasswd [root@qianshuiliyu samba]# smbpasswd -a user1 New SMB password: Retype new SMB password: Added user user1.

    2、密码文件设置

    [root@qianshuiliyu ~]# smbpasswd -a user1 New SMB password: Retype new SMB password: startsmbfilepwent_internal: file /etc/samba/smbpasswd did not exist. File successfully created. Added user user1.

    4、此时,会自动创建密码文件

    4、实战

    1、/samba_serve为共享路径,拷贝文件测试

    [root@qianshuiliyu ~]# mkdir /samba_server [root@qianshuiliyu ~]# cp /etc/passwd /samba_server/

    2、修改配置文件 也可以设置哪个组进行访问

    3、访问 4、此时不能新建,没有权限,但是可以下载 5、修改权限,两个权限,一个配置文件,一个目录本身的权限 修改之后

    5、虚拟账号

    创建系统用户,添加到samba服务账号中 1、配置文件设置

    2、对应账号设置,此时用qianshuiuser进行登录

    重启服务进行测试

    3、登录

    6、隐藏文件

    查看 在访问后面加上名字就出来了

    7、映射网络文件

    8、关闭连接

    windows关闭连接 使用命令行net use * /delete /y

    三、独立配置文件

    1、创建配置文件。必须包含用户名

    [root@qianshuiliyu samba]# cp smb.conf smb.conf.user1 [root@qianshuiliyu samba]# ls lmhosts smb.conf smb.conf.user1 smbpasswd smbuser

    2、在smb.conf配置文件中设置

    表示samba 服务器读取/etc/samba/smb.conf.%U 文件,其中%U 代表 当前登录用户

    3、 smb.conf.user1文件设置 设置共享内容,这个账号与其他账号都能访问,主配置文件设置隐藏,对这个账号是开放的(取消隐藏),两个账号都能访问;就是你干了什么我都能看见

    Processed: 0.014, SQL: 8