linuxwindowns文件共享之samba

ops/2024/9/23 4:37:26/

samba

我们所了解过的 FTP 文件传输,的确可以让不同主机之间进行文件传输,此方式特点是,传输文件,用户想要在客户端直接修改服务器的数据,还是较为麻烦。

既然如此,linux 上有一款应用叫 Samba,是一个能让 linux 系统应用微软网络通讯协议的软件。即 samba是一款能够让 linux 系统应用微软文件资料的工具。

微软为了解决局域网的文件共享,制定了 SMB 协议,也就是 (Server Messages Block,服务器消息块),后来 SMB 通信协议应用了 linux 系统上,就形成了现在的 Samba 软件。

Samba 特点:

  • Samba 最大的功能就是可以用于 linux 与 windows 系统直接的文件共享和打印

  • Samba 即可以用于 windows 与 linux 之间的文件共享

  • 也可以用于 linuxlinux 之间的资源共享

  • 由于 NFS(网络文件系统) 可以很好的完成 linuxlinux 之间的数据共享

  • 因而 Samba 较多的用在了 linux 与 windows 之间的数据共享上面。

一、ubuntu 和windos共享用什么?

Samba 共享:Samba 是一种用于 Linux 和 Windows 之间文件共享的协议 和工具集。您可以在 Ubuntu 上安装和配置 
Samba 服务器,使其能够与 Windows 计算机共享文件和目录。NFS 共享:NFS(Network File System)是一种用于在不同的计算机之间共享文件系统的协议。您可以在 Ubuntu 上设置
NFS 服务器,并在 Windows 上使用适当的客户端软件连接到共享的文件系统。FTP/SFTP 服务器:您可以在 Ubuntu 上设置 FTP 或 SFTP 服务器,然后在 Windows
上使用适当的客户端软件连接到该服务器进行文件传输。文件同步工具:您可以使用文件同步工具,例如 rsync、Syncthing 或 Nextcloud 等,来在 Ubuntu 和
Windows 之间同步文件和目录。云存储服务:使用云存储服务(如 Google Drive、Dropbox、OneDrive 等),您可以将文件上传到云端,然后在
Ubuntu 和 Windows 上使用相应的客户端应用程序进行访问和同步。综上所述,Samba 共享比较方便

二、Samba简介

Samba 是一种用于 Linux 和 Windows 之间文件共享的协议和工具集。它允许在 Linux 系统上创建一个文件共享服务器,使 Windows 计算机能够访问和共享其中的文件和目录。以下是 Samba 共享的一些特点和工作原理的简要介绍:

文件共享:通过 Samba,您可以在 Linux 系统上设置共享文件夹,使其在局域网内可被 Windows 计算机访问。这意味着您可以在Linux 和 Windows 之间轻松地共享文件和目录SMB/CIFS 协议支持:Samba 实现了 SMB(Server Message Block)和 CIFS(CommonInternet File System)协议,这是 Windows 系统用于文件和打印机共享的标准协议。通过支持这些协议,Samba 实现了与 Windows 的兼容性。用户认证和权限控制:Samba 可以与 Linux系统上的用户认证机制集成,使您可以对共享文件和目录进行用户级别的访问控制。您可以设置用户账号和密码,并分配相应的访问权限,以确保只有授权用户可以访问共享内容网络浏览和发现:Samba 具有网络浏览功能,可以在 Windows网络上显示共享服务器和共享资源,使用户能够方便地浏览和发现可用的共享内容。打印机共享:除了文件共享,Samba 还支持共享打印机,使 Windows 计算机能够使用连接到 Linux 系统上的打印机。配置灵活:Samba 的配置文件非常灵活,可以根据需要进行调整。您可以定义共享名称、路径、访问权限、工作组和其他相关设置

三、配置流程:

1、安装 Samba:

在 Ubuntu 上,打开终端,并运行以下命令以安装 Samba:

# 安装与升级
sudo apt update
sudo apt install samba samba-common -y# 卸载
sudo apt autoremove samba# 查看安装结果
root@ubuntu-master:~# dpkg -l | grep samba
ii  python3-samba   2:4.15.13+dfsg-0ubuntu1.6    amd64    Python 3 bindings for Samba
ii  samba 2:4.15.13+dfsg-0ubuntu1.6 amd64 SMB/CIFS file, print, and login server for Unix
ii  samba-common 2:4.15.13+dfsg-0ubuntu1.6 all common files used by both the Samba server and client
ii  samba-common-bin 2:4.15.13+dfsg-0ubuntu1.6 amd64 Samba common files used by both the server and the client
ii  samba-dsdb-modules:amd64  2:4.15.13+dfsg-0ubuntu1.6 amd64 Samba Directory Services Database
ii  samba-libs:amd64  2:4.15.13+dfsg-0ubuntu1.6         amd64        Samba core libraries
ii  samba-vfs-modules:amd64 2:4.15.13+dfsg-0ubuntu1.6 amd64 Samba Virtual FileSystem plugins
root@ubuntu-master:~#

2、配置共享目录:

打开 Samba 配置文件 /etc/samba/smb.conf:

sudo vim /etc/samba/smb.conf1. 查看 samba 的配置文件 如下:
root@ubuntu-master:~# ls /etc/samba
gdbcommands  smb.conf  tls
root@ubuntu-master:~#2.学习配置文件的含义
vim /etc/samba/smb.conf
在文件末尾添加共享目录的配置。例如,要共享名为 myshare 的目录,可以添加以下内容
[workspace]comment = share folder with usrname and passwdpath = /home/<username>/workspaceavailable = yesbrowseable = yes
#   public = yeswriteable = yesread only = no
其中,path 是共享目录的路径,writable 指定是否允许写入访问权限,guest ok 指定是否允许匿名访问。

3、配置用户账号:

创建 Samba 用户账号(与系统用户账号分离):

sudo smbpasswd -a username
​

其中,username 是要创建的 Samba 用户名。将被要求设置密码。

将 Samba 用户添加到共享目录的访问权限中。

找到共享目录的配置段,在其中添加以下行,以授予特定用户访问权限

valid users = username
​

4、重启 Samba 服务:

运行以下命令以重新启动 Samba 服务,以使配置生效

# sudo service smbd restart
systemctl restart smbd      # 重新启动 samba 服务
systemctl enable smbd       # 设置开机自动

5、Windows 客户端连接

your-ubuntu-ip\workspace中的 workspace对应前面在 Samba 配置文件 /etc/samba/smb.conf 中添加的共享目录的名称。在配置文件中,通过方括号括起来的部分定义了共享目录的配置,方括号内的名称即为共享目录的名称。在示例中,我们添加了 [workspace] 部分来定义名为 myshare 的共享目录,因此在访问时需要使用该名称。您可以根据需要在配置文件中定义多个共享目录,并在访问时使用相应的名称

上面是在ubuntu安装 samba 服务,以下是在centos上安装 samba 服务

安装 Samba 服务

 # 安装 sambayum install samba -y# 默认主配置文件cat /etc/samba/smb.conf -n# 查看是否配置 yum 源ls /etc/yum.repos.d/CentOS Base.repo	epel.repovim /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 [global]workgroup = SAMBAsecurity = userpossdb backend = tdbsamprinting = cupsprintcap name = cupsload printers = yescups options = raw[homes]comment = Home Directoriesvalid users = %s,%d,%w,%sbrowseable = NOread only = NOinherit acls = YES[printers]comment = ALL Printerspath = /var/tmpprintable = YEScreate mask = 0600browseable = NO[print$]comment = Printer Driverspath = /var/lib/samba/driverswrite list = @printadmin rootforce group = @printadmincreate mask = 0664directory mask = 0775

Samba 配置文件核心参数

ls /etc/samba/
lmhosts	 smb.conf	 smb.conf.example查看 samba 的配置文件,我们在 linux 平台,用各种软件,他的套路就是,下载,安装,修改配置文件,配置文件修改好了,这个软件就可以用了。我们所使用的各种各样的功能,都是在修改这款软件的配置文件,

smb.conf.example 配置样例文件,里面有关于配置 Samba 服务器样例

smb 的配置文件,主要分为 全局配置 和 共享配置

  • [global] 全局

  • 共享

    • [home]
    • [printers]

[全局配置]

workgroup = MYGROUP
Samba 服务器加入的工作组,一个局域网内,必须有相同的工作组名,server string = Samba Server Version %v
Samba 服务器注释,可以不选,%v 代表显示 Samba 版本号netbios name = samba
主机 NetBIOS 名interfaces = lo eth0
设置 Samba 服务器端监听网卡,可以写网卡名称或者 IP 地址hosts allow/deny = 10.10.10.1
允许连接到 samba server 客户端 IP,多个参数用空格分开,可以用一个 IP 表示,也可以用 一个网段表示。max connections = 0
用来指定连接 Samba server 服务器最大连接数如果操作则连接请求被拒绝。0表示不限制。deadtime = 0
来设置断掉一个没有任何文件的链接时间。单位+分钟,0代表 Samba server 不自动断开任何连接time server = yes/no
用来设置让 nmdb 成为 windows 客户端的时间服务器log file = /var/log/samba/%m.log
设置 Samba server 日志文件存储位置和日志名称,文件后面加一个%m (主机名),每个主机都会有一个主机名.log 日志文件max log size = 50
限制每个日志文件的最大容量为 50kb 0代表 不限制Security = user
设置客户端访问 Samba 服务器的验证方式,Samba4版本已经不使用 share 和 server 方式,这里不介绍
1)user: Samba 用户名和密码登录
2)domain: 添加 Samba 服务器到 N 域,由 NT 与控制起来进行身份验证,域安全级别,使用主域控制器 (PDC)passdb backend = tdbsam
后台管理用户密码方式:
1)sampasswd: 该方式是使用 smb 自己的工具 smbpasswd来给系统用户
2)tdbsam: 该方式则是使用一个数据库文件来建立用户数据库
3) ldapsam: 该方式则是基于 LDAP 的账号管理方式来验证用户smb passwd file = /etc/samba/smbpasswd
用来定义 samba 用户的密码文件。smbpasswd 文件如果没有那就要手工新建。username map = /etc/samba/smbusers
用来定义用户名映射,比如可以将 root 换 administrator,admin 等guset account = nobody
用来设置 geust 用户名---------------------------------------------------------------# 学习 samba 默认配置文件(/etc/samba/smb.conf)的含义,参数解释如下:
vim /etc/samba/smb.conf[global]workgroup = SAMBA	# 绿色的词都代表固有的关键词,等号后面就是我们自定义的值 定义一个工作组的名字security = user		# 使用账号密码进行验证  代表安全的验证方式possdb backend = tdbsam		# 验证方式printing = cupsprintcap name = cupsload printers = yescups options = raw[homes]comment = Home Directoriesvalid users = %s,%d,%w,%sbrowseable = NOread only = NOinherit acls = YES[printers]comment = ALL Printerspath = /var/tmpprintable = YEScreate mask = 0600browseable = NO[print$]comment = Printer Driverspath = /var/lib/samba/driverswrite list = @printadmin rootforce group = @printadmincreate mask = 0664directory mask = 0775[chaoge]	# 代表又定义了一个局部共享文件夹comment = Printer Driverspath = /var/lib/samba/driverswrite list = @printadmin rootforce group = @printadmincreate mask = 0664directory mask = 0775		'[global]'	是全局参数,是领导其他的是局部参数,都遵循 全局参数 规则 此参数是针对局部单个生效的

pdbedit命令

pdbedit是 samba 的用户管理命令

语法

pdbedit -a username 	# 新建 Samba 账户
pdbedit -r username		# 修改 Samba 账户
pdbedit -x username		# 删除 Samba 账户
pdbedit -u,--user=USER		use username
pdbedit -L 		# 列出 Samba 用户列表,读取 passdb,tdb 数据库文件
pdbedit -Lv		# 列出 Samba 用户列表详细信息
pdbedit -c "[D]" -u username		# 暂停该 Samba 用户账号
pdbedit -c "[]" -u username		# 恢复该 Samba 用户账号

创建用于访问 samba 共享资源的账户信息

注意 samba 创建的用户数据库必须在当前系统中存在

root@ubuntu-master:~# id chaoge
uid=1001(chaoge) gid=1001(chaoge) groups=1001(chaoge)
root@ubuntu-master:~#
​

演练 Samba 的共享文件夹配置

1. 修改配置文件,添加一个局部的共享区域
vim /etc/samba/smb.conf# 修改 smb.conf 如下,添加以下参数
[chaoge]comment = This is test configurepath = /home/chaogepublic = nowriteable = yesguest ok = yes------------------------------------------------------------
以上参数解释
[chaoge]	# comment = This is test configure	# 注释这是一个测试配置path = /home/chaoge		# 定义一个共享的文件夹路径public = no			# 代表这个共享文件夹不是公开的writeable = yes		# 用户登录以后,可以进行数据写入guest ok = yes		# 可以使用一个匿名用户登录2. 使用 pdbedit 命令,创建 samba 服务专用的用户密码信息3. 创建 samba 用户,必须保证这个用户在 linux 系统中存在
grep 'chaoge' /etc/passwda. 查看chaoge这个用户存在吗
root@ubuntu-master:~# grep 'chaoge' /etc/passwd
chaoge:x:1001:1001::/home/chaoge:/bin/sh
root@ubuntu-master:~#b. 查看chaoge这个用户存在吗
root@ubuntu-master:~# id chaoge
uid=1001(chaoge) gid=1001(chaoge) groups=1001(chaoge)
root@ubuntu-master:~#c. 如果没有就创建一个系统用户 useradd chaoge4. 创建一个 samba 用户,命令如下:
pdbedit -a -u chaoge	# 创建一个 samba 用户 chaoge 
pdbedit -a -u longchiroot@ubuntu-master:~# pdbedit -a -u chaoge
new password:
retype new password:
Unix username:        chaoge
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-4131362352-3367071731-2713888566-1000
Primary Group SID:    S-1-5-21-4131362352-3367071731-2713888566-513
Full Name:
Home Directory:       \\UBUNTU-MASTER\chaoge
HomeDir Drive:
Logon Script:
Profile Path:         \\UBUNTU-MASTER\chaoge\profile
Domain:               UBUNTU-MASTER
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          Wed, 06 Feb 2036 15:06:39 UTC
Kickoff time:         Wed, 06 Feb 2036 15:06:39 UTC
Password last set:    Tue, 30 Apr 2024 10:42:02 UTC
Password can change:  Tue, 30 Apr 2024 10:42:02 UTC
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
root@ubuntu-master:~#以上信息表示 samba 账户创建成功5.用户创建完毕,重启 samba 服务 ,并且检查 samba 端口是否存活 ,如果有端口了,表示服务已经正确启动了
systemctl restart smbd
netstat -tunlp | grep smbroot@ubuntu-master:~# systemctl restart smbdroot@ubuntu-master:~# netstat -tunlp | grep smb
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      5403/smbd
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      5403/smbd
tcp6       0      0 :::139                  :::*                    LISTEN      5403/smbd
tcp6       0      0 :::445                  :::*                    LISTEN      5403/smbd
root@ubuntu-master:~#root@ubuntu-master:~# systemctl status smbd
● smbd.service - Samba SMB DaemonLoaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled)Active: active (running) since Tue 2024-04-30 10:48:08 UTC; 49s agoDocs: man:smbd(8)man:samba(7)man:smb.conf(5)Process: 5393 ExecStartPre=/usr/share/samba/update-apparmor-samba-profile (code=exited, status=0/SUCCESS)Main PID: 5403 (smbd)Status: "smbd: ready to serve connections..."Tasks: 4 (limit: 4515)Memory: 8.7MCPU: 106msCGroup: /system.slice/smbd.service├─5403 /usr/sbin/smbd --foreground --no-process-group├─5405 /usr/sbin/smbd --foreground --no-process-group├─5406 /usr/sbin/smbd --foreground --no-process-group└─5407 /usr/lib/x86_64-linux-gnu/samba/samba-bgqd --ready-signal-fd=45 --parent-watch-fd=11 --debuglevel=0 -FApr 30 10:48:07 ubuntu-master systemd[1]: Starting Samba SMB Daemon...
Apr 30 10:48:08 ubuntu-master systemd[1]: Started Samba SMB Daemon.
root@ubuntu-master:~#6.防火墙是否关闭了
查看防火墙 iptables -L  看到如下信息,表示防火墙没有任何规则root@ubuntu-master:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destinationChain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhereChain OUTPUT (policy ACCEPT)
target     prot opt source               destinationChain DOCKER (1 references)
target     prot opt source               destinationChain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhereChain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhereChain DOCKER-USER (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
root@ubuntu-master:~#7.关闭防火墙操作(如果有防火墙)
a. 清空规则
iptables -Fb. 停止防火墙
systemctl stop firewalld

使用客户端连接 samba 服务器

  • windows 进行连接

  • ​
    直接找到 运行 功能
    ​
    输入 \\ smb服务器IP地址
    \\ 172.18.22.128\chaoge(共享目录)
    ​
    只要输入如上地址,就能够直接进入 账号密码验证环节,然后直接打开 samba 共享文件夹的目录了;

  • macos 进行连接


http://www.ppmy.cn/ops/36337.html

相关文章

经典面试题---环形链表

1. 环形链表1. - 力扣&#xff08;LeetCode&#xff09; 要解决这道题&#xff0c;我们首先要挖掘出带环的链表与不带环的链表之间的差别。 以此&#xff0c;才能设计出算法来体现这种差别并判断。 二者最突出的不同&#xff0c;就是不带环的链表有尾结点&#xff0c;也就是说…

Compose 状态管理

文章目录 Compose 状态管理概述使用MutableStaterememberStatelessComposable & StatefulComposable状态提升rememberSaveable支持parceable不支持parceable 使用ViewModelViewModelProvider.Factory 使用Flow Compose 状态管理 概述 当应用程序的状态发生变化时&#xf…

sql server

SQL Server 是微软开发的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛用于企业级应用开发和数据管理。它遵循 SQL&#xff08;Structured Query Language&#xff09;标准&#xff0c;提供了数据存储、查询、更新和管理的功能。以下是 SQL Server 的一些…

如何实现源代码防泄漏?十种有效方法防止源代码泄漏

由于研发人员比普通办公人员要精通电脑&#xff0c;除了常见的网络&#xff0c;邮件&#xff0c;U盘&#xff0c;QQ等数据扩散方法外&#xff0c;还有很多对于研发人员来 说非常容易的方法&#xff0c;比如&#xff1a; —网线直连&#xff0c;即把网线从墙上插头拔下来&#…

图片编辑工具-Gimp

一、前言 GIMP&#xff08;GNU Image Manipulation Program&#xff09;是一款免费开源的图像编辑软件&#xff0c;具有功能强大和跨平台的特性。 GIMP作为一个图像编辑器&#xff0c;它提供了广泛的图像处理功能&#xff0c;包括但不限于照片修饰、图像合成以及创建艺术作品…

STM32——WWDG(窗口看门狗)

技术笔记&#xff01; 1.WWDG&#xff08;窗口看门狗&#xff09;简介 本质&#xff1a;能产生系统复位信号和提前唤醒中断的计数器。 特性&#xff1a; 递减的计数器&#xff1b; 当递减计数器值从 0x40减到0x3F时复位&#xff08;即T6位跳变到0&#xff09;&#xff1b; …

OpenAI API搭建的智能家居助手;私密大型语言模型(LLM)聊天机器人;视频和音频文件的自动化识别和翻译工具

✨ 1: GPT Home 基于Raspberry Pi和OpenAI API搭建的智能家居助手 GPT Home是一个基于Raspberry Pi和OpenAI API搭建的智能家居助手&#xff0c;功能上类似于Google Nest Hub或Amazon Alexa。通过详细的设置指南和配件列表&#xff0c;用户可以自行组装和配置这个设备&#x…

Java Solon v2.7.6 发布

Java Solon 是什么框架&#xff1f; Java “新的”应用开发框架。开放原子开源基金会&#xff0c;孵化项目。从零开始构建&#xff08;非 java-ee 架构&#xff09;&#xff0c;有灵活的接口规范与开放生态。 追求&#xff1a; 更快、更小、更简单提倡&#xff1a; 克制、简洁…