linux 搭建Samba服务

简介: Samba是一个实现跨操作系统文件和打印机共享的免费软件,基于SMB协议,允许Linux/Unix系统在Windows网络中共享资源。它由nmbd(NetBIOS名称解析)和smbd(共享资源管理)进程组成。关键配置文件是`/etc/samba/smb.conf`。在Redhat 9环境下,安装Samba后,配置全局参数如工作群组、主机名,并设置共享目录。然后,启动服务,创建共享目录和文件,并添加用户。关闭防火墙和SELinux,从Windows登录测试资源共享,调整权限以允许读写操作。


Samba简介

SAMBA是⼀个实现不同操作系统之间⽂件共享和打印机共享的⼀种SMB协议的免费软件, SMB(Server Message block)协议是window下所使⽤的⽂件共享协议,我们在linux系统或 者其类unix系统当中可以通过samba服务来实现SMB功能。

(1)在⽹络上共享⽬录,决定访问权限;

(2)在⽹络上共享打印机,决定访问权限;

(3) 加⼊⼀个windows域环境 ;

(4)通过windows域环境进⾏认证操作。这个相⽐于NFS是安 全的。NFS缺乏认证机制,在局域⽹当中没有得到更安全的保障

Samba服务是由两个进程组成,分别是nmbd和smbd

nmbd:其功能是进⾏NetBIOS名解析,并提供浏览服务显示⽹络上的共享资源列表。

smbd:其主要功能就是⽤来管理Samba服务器上的共享⽬录、打印机等,主要是针对⽹络 上的共享资源进⾏管理的服务。当要访问服务器时,要查找共享⽂件,这时我们就要依靠 smbd这个进程来管理数据传输

samba软件结构

/etc/samba/smb.conf //samba服务的主要配置⽂件

/etc/samba/lmhosts //samba服务的域名设定,主要设置IP地址对应的域名, 类似linux系统的/etc/hosts

/var/log/samba //samab服务存放⽇志⽂件

/var/lib/samba/private/{passdb.tdb,secrets.tdb} //存放samba的⽤ 户账号和密码数据库⽂档

环境

Redhat 9

基础仓库以搭建完成 参考:搭建本地YUM仓库-CSDN博客

步骤:

机器更名

[root@admin ~]# hostnamectl set-hostname samba
[root@admin ~]# bash
[root@samba ~]#
安装samba软件包

[root@samba ~]# yum -y install samba
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

AppStream 3.1 MB/s | 3.2 kB 00:00
BaseOS 2.7 MB/s | 2.7 kB 00:00
依赖关系解决。
省略。。。。。。。

已更新安装的产品。

已安装:
libnetapi-4.17.5-102.el9.x86_64 samba-4.17.5-102.el9.x86_64 samba-common-tools-4.17.5-102.el9.x86_64
samba-dcerpc-4.17.5-102.el9.x86_64 samba-ldb-ldap-modules-4.17.5-102.el9.x86_64 samba-libs-4.17.5-102.el9.x86_64

完毕!
[root@samba ~]#
samba服务器最主要的配置文件其实只有一个,就是/etc/samba/samba.conf,这个配置文件可以分为两个部分,一个部分是全局参数,一部分是共享资源相关参数。

全局参数
[global]

    #与主机名相关的设置
    workgroup = zkhouse    //工作组名称
    netbios name = zkserver  //主机名称,跟hostname不是一个概念,在同一个组中,netbios name必须唯一
    serverstring = this is a test samba server //说明性文字,内容无关紧要
    #与登录文件有关的设置
    log file = /var/log/samba/log.%m  //日志文件的存储文件名,%m代表的是client端Internet主机名,就是hostname
    max log size = 50     //日志文件最大的大小为50Kb
    #与密码相关的设置
    security = share       //表示不需要密码,可设置的值为share、user和server
    passdb backend = tdbsam
    #打印机加载方式
    load printer = no //不加载打印机

⽤户控制:
public = 匿名⽤户访问,需要下⾯的指令配合
map to guest = Bad User 匿名访问
browseable = 可浏览
valid users = 有效⽤户
writable = yes 可写,还要看⽬录权限
writable list = maomao,@GROUPNAME,+GROUPNAME
readonly = yes 只读设置
create mask = 0744 客户机创建⽂件权限
directory mask = 0744 客户机创建⽬录的权限
访问控制
max connections = 最⼤连接数⽬
deadtime = 断掉连接时间(分钟,0为不限制)
hosts allow = 允许主机
hosts deny = 拒绝主机
启动samba 创建一个共享目录添加一个文件

[root@samba ~]# systemctl start smb.service
[root@samba ~]#
[root@samba ~]# mkdir /gongxiang
[root@samba ~]# cd /
[root@samba /]# ls
afs bin boot dev etc gongxiang home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@samba /]#
[root@samba /]# cd gongxiang/
[root@samba gongxiang]# ls
[root@samba gongxiang]# vim abc.txt
[root@samba gongxiang]# cat abc.txt
isadj
[root@samba gongxiang]#
修改SAMBA配置文件增加参数

[root@samba gongxiang]# vim /etc/samba/smb.conf
[root@samba gongxiang]# cat /etc/samba/smb.conf

See smb.conf.example for a more detailed config file or

read the smb.conf manpage.

Run 'testparm' to verify the config is correct after

you modified it.

#

Note:

SMB1 is disabled by default. This means clients without support for SMB2 or

SMB3 are no longer able to connect to smbd (by default).

[global]
workgroup = SAMBA
security = user

    passdb backend = tdbsam

    printing = cups
    printcap name = cups
    load printers = yes
    cups options = raw

[homes]
comment = Home Directories
valid users = %S, %D%w%S
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

[public] //共享资源名称
comment = test //随意的解释
path = /gongxiang //实际共享的目录
writable = yes //是否可以写入
guest ok = yes //可以让用户随意登录
browseable = yes //可以被所有用户浏览到资源名称
[root@samba gongxiang]#
创建一个用户登录

[root@samba /]# useradd sm
[root@samba ~]# smbpasswd -a sm //增加用户并赋予登录密码
New SMB password:
Retype new SMB password:
Added user sm.
[root@samba ~]#
关闭防火墙和selinux 重启samba服务

[root@samba gongxiang]# systemctl restart smb.service
[root@samba gongxiang]#
[root@samba gongxiang]# setenforce 0
[root@samba gongxiang]# systemctl stop firewalld.service
[root@samba gongxiang]#
回到windows进行登录测试

弹出登录窗口输入用户名密码登录

查看创建的abc.txt文件

root@samba /]# cat /gongxiang/abc.txt
isadj
[root@samba /]#
创建新文件发现没有权限 回到Linux查看权限

[root@samba /]# ll
总用量 32

drwxr-xr-x. 2 root root 21 4月 5 13:14 gongxiang
修改权限

[root@samba /]# chmod a+rwx /gongxiang/
[root@samba /]# ll
drwxrwxrwx. 2 root root 21 4月 5 13:14 gongxiang
回到windows窗口增加文件测试

删除文件

目录
相关文章
|
5月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
401 25
|
6月前
|
Linux iOS开发 MacOS
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
147 0
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
|
8月前
|
Linux Docker 容器
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
577 19
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
|
8月前
|
监控 Linux
Linux systemd 服务启动失败Main process exited, code=exited, status=203/EXEC
通过以上步骤,可以有效解决 systemd 服务启动失败并报错 `Main process exited, code=exited, status=203/EXEC` 的问题。关键在于仔细检查单元文件配置、验证可执行文件的有效性,并通过日志分析具体错误原因。确保可执行文件路径正确、文件具有执行权限,并且可以独立运行,将有助于快速定位和解决问题。
3759 7
|
10月前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
196 5
linux系统服务二!
|
10月前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
166 3
linux系统服务!!!
|
9月前
|
运维 监控 Linux
Linux操作系统的守护进程与服务管理深度剖析####
本文作为一篇技术性文章,旨在深入探讨Linux操作系统中守护进程与服务管理的机制、工具及实践策略。不同于传统的摘要概述,本文将以“守护进程的生命周期”为核心线索,串联起Linux服务管理的各个方面,从守护进程的定义与特性出发,逐步深入到Systemd的工作原理、服务单元文件编写、服务状态管理以及故障排查技巧,为读者呈现一幅Linux服务管理的全景图。 ####
|
10月前
|
Linux 数据库
Linux服务如何实现服务器重启后的服务延迟自启动?
【10月更文挑战第25天】Linux服务如何实现服务器重启后的服务延迟自启动?
1282 3
|
10月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
570 3