局域网中linux和window共享文件方案——samba
注明:
曾经写过:局域网中如何为Ubuntu20.04和window10共享文件,本文可以视作为该篇的续篇。
本文主要内容为Samba软件的安装和配置,以及相关的磁盘操作。
注意:(硬盘的UUID会受格式化影响而改变,或者说硬盘的UUID就是格式化时所生成的,在不改变分区结构的情况下PARTUUID是会保持不变的)
在fstab中配置指定挂载时如果使用/dev/sda1这种形式会出现一定的问题的,如果挂载的磁盘为多块,重启的时候可能会出现挂载错误,比如把之前的/dev/sdb1识别为/dev/sda1,因此如果挂载多块磁盘的情况下最好使用UUID或者LABEL的方式进行挂载。
UUID查询命令:
sudo blkid
给出个人主机的一个演示:

这里个人建议使用PARTUUID,因为这样写会简单些,或者使用LABEL。
另一个查询UUID的命令:
ls -l /dev/disk/by-uuid/
演示:

-------------------------------------------------
参考:
https://www.disktool.cn/content-center/linux-hard-disk-partition-369.html
https://www.yingsoo.com/news/servers/67277.html
https://www.cnblogs.com/ranxf/p/14523367.html
https://blog.csdn.net/qq_50929489/article/details/127055286
https://blog.csdn.net/Mcy7ycM/article/details/124404425
https://www.linuxprobe.com/linux-fdisk-size.html
磁盘分区的创建:
1. 使用fdisk工具查看分区情况,删除分区,新建分区
1.1 查看整机的磁盘情况
sudo fdisk -l
成功查询到磁盘,这里假设得到结果: /dev/sda,/dev/sda1,/dev/sda2,/dev/sda3。
1.2 删除分区、新建分区
这里我们假设要删除分区 /dev/sda3 :
sudo fdisk /dev/sda
提示输入,这里输入d,然后输入需要删除的分区号。
新建分区:
sudo fdisk /dev/sda
提示输入,这里输入n,根据提示选择新建主分区或者扩展分区,然后输入需要新建分区的起始分区号和结束扇区号。
2. 使用mkfs对新建分区进行格式化
mkfs -t ext4 /dev/sda3
加入磁盘检测(-c),加上最小分区块(-b),加入Label的设置(-L)的例子:
sudo mkfs.ext4 /dev/sda3 -b 4096 -L win-linux -c
----------------------------------------------------------------
参考:
https://www.orcy.net.cn/2996.html
https://blog.csdn.net/weixin_47461537/article/details/126706277
https://blog.csdn.net/m0_46829545/article/details/128413662
https://ubuntu.dovov.com/10147/dmask%E5%92%8Cfmask%E6%8C%82%E8%BD%BD%E9%80%89%E9%A1%B9.html
https://blog.csdn.net/qq_42138566/article/details/110921234
fstab的编辑:
注意:
uid、gid、umask、fmask、dmask 只能对FAT或NTFS文件系统进行挂载权限设置,如果是其他文件系统则会进行文件系统错误的报错。
不同的文件系统(ntfs、ext4、fat32等),进行挂载时其参数名都是不同的。
给出一个ext4的例子(三种形式):
/dev/sda3 /home/devil/share ext4 defaults,nofail 0 0
LABEL=win-linux /home/devil/share ext4 defaults,nofail 0 0
PARTUUID=8296629c-03 /home/devil/share ext4 defaults,nofail 0 0
给出一个ntfs的例子:(挂载的文件系统为ntfs时文件权限系统是无效的,比如这里把用户及组设置为1000:1000后,所有用户在挂载空间下创建文件其uid及gid均为1000:1000,即使使用umask对新建文件设置默认权限,但是所有用户对挂载空间下的操作都是为1000:1000用户和组的,而且由umask指定的文件权限是不能修改的,也就是说ntfs系统挂载后只能起到显示作用,并没有实际的权限作用)。挂载的为ntfs的话,那么挂载空间下的文件权限是没有区分度的。
例子:
/dev/sda1 /home/devil/share2 ntfs defaults,nofail,uid=1000,gid=1000,umask=0077,utf-8 0 0
编写好后检查fstab中是否有语法错误:
sudo mount -a
重启后查看挂载的情况(查看磁盘挂载情况):
df -Th
========================================
在Ubuntu上安装samba:
sudo apt install samba samba-common-bin
配置:
修改文件:
sudo vim /etc/samba/smb.conf
在文件末尾添加内容:
[data]
comment = Pi HardWare Storage
path = /home/devil/share/devil_data
valid users = devil
guest ok = no
read only = no
create mask = 0700
directory mask = 0700
browseable = yes
public = yes
第一行的[data]是只samba的网络路径名,比如samba服务器地址为192.168.1.102,那么网络磁盘地址则为\\192.168.1.102\data 。
comment行为注释,说明,无实际意义。
path行指明samba服务器端的网络磁盘的实际物理路径。
guest ok设置是否允许匿名访客访问。
read only设置是否只读。
create mask设置通过samba访问时文件的权限上限。
directory mask设置通过samba访问时文件夹的权限上限。
browseable设置是否网络上可以发现该网络磁盘。
valid users 设置允许范围该网络磁盘路径的用户名,这里需要注意,这里的用户名和系统的用户名是一样的,也就是说samba中的用户名必须为系统passwd中真实存在的用户名,但是二者密码不必相同。
public 设置允许匿名用户访问。
valid users = @devil 是指允许的用户组。
其中,最需要注意的是valid users必须为系统中真实存在的用户名。
重启samba服务:
sudo service smbd restart
为samba创建用户:
samba的权限系统是和宿主机(搭建samba主机)保持一致的,因此samba中的用户名以及配置中的允许访问的用户名都必须和passwd中的用户名一致。
sudo smbpasswd -a username
samba服务器上配置完成后就可以在windows上配置网络磁盘了,根据前面的例子,这里的网络磁盘路径为:\\192.168.1.102\data
用户名为:devil,密码则为刚才设定的(sudo smbpasswd -a username)



这里需要注意的是,无论是linux还是windows,只要通过samba访问这个网络磁盘,其文件权限都是和samba中的用户名在samba主机系统中一致的。
也就是说,即使是windows端通过samba访问这个磁盘,对非devil用户属主的文件(权限假设为700),也是无法访问和编辑的,例子:
samba主机上的一个文件xxx:

在windows上也是无法使用devil用户来通过samba对其进行编辑的:

PS:
使用挂载磁盘进行samba共享,需要注意的有两点,第一,挂载磁盘的文件系统和挂载时的权限,这里经过分析后选择使用ext4文件系统;第二,samba配置时对访问路径的权限设置(create mask、directory mask、read only)。
========================================
注意:
如果使用ntfs格式的磁盘分区进行挂载,并且挂载时没有进行权限设置(umask等的设置),那么任何用户均可以对挂载空间(ntfs格式)进行任何读写操作,并且所有创建的文件其创建用户均显示为root。
如果挂载的是ntfs文件系统,那么不管如何设置挂载权限,所有用户对挂载文件均具有所有者权限(所有用户均可视为挂载文件的所有者),任何用户对挂载文件的操作都会按照fstab中指定的uid和gid来进行权限操作,可以认为使用ntfs挂载时文件的权限系统是无效的。
如果挂载的是ext4文件系统,那么不管如何设置挂载权限(ext4文件系统挂载时只能在挂载后手动改权限),root用户对挂载文件均具有所有权限(root用户均可视为挂载文件的所有者),但是除了root用户外所有用户均遵守正常的权限规则,因此如果使用挂载那么最安全的文件系统就是使用ext4。挂载ext4文件系统后,只有root具有user所有的权限,但是user是不具备root的权限的,所有挂载ext4的文件系统,root具有最高的文件权限。
局域网中linux和window共享文件方案——samba的更多相关文章
- 开发及应用中 Linux与Window 取舍
Linux是开源的,而Windows不是.这个也是Linux与Windows之间最大的差异.一般来说,开源似乎收到了更多系统管理员的亲睐,而开源的软件似乎更受个人电脑用户的欢迎.两种类型之间有很多不同 ...
- linux centos7--linux和window共享文件(samba)
这里以VMWARE与主控真机来做实现实现 由于SMB在centos中自带,所以,无需像网上说的样子,要这删除,那卸载,直接搜索是否存在SAMBA的安装文件 一 查询包是否存在 [root@localh ...
- Linux访问Window共享文件夹的配置步骤
1. Window下创建用户XXX(作用:Linux mount时需要提供用户和密码) 2. Window下共享文件夹给XXX用户,并根据实际需要设置读取/写入权限 3. Linux下创建挂载的目录 ...
- (原创)Linux跟Window共享文件的两个简单方法
第一中种方法: Linux中启动shell,输入如下命令: mount -t cifs -o username="my-pc-name",password="my-pas ...
- VMware中linux与window目录共享
在虚拟机下来实如今windows下共享一个目录: (前提已安装完毕vmtools:http://blog.csdn.net/pipisorry/article/details/21318931) 打开 ...
- Samba实现Linux与Window文件的传输
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通 ...
- Linux 和 Windows 之间共享文件之 samba
导语 如果对windows有过实际操作技巧的人都会明白,在windows下的文件共享加上网络驱动器映射是多么方便的体验,甚至比ftp更加的简单,就像本地多了一块可与他人交流的硬盘一样. 问题 由于性能 ...
- VMware Workstation中linux(centos)与windows7共享文件夹
引用网站有: http://www.jb51.net/LINUXjishu/161994.html http://www.cnblogs.com/xiehy/archive/2011/12/19/22 ...
- 主机和VMware中的Linux如实现共享文件夹
当我在网上查了几小时的挂载文件夹方法后发现,VMware中的Linux的挂载和双系统的挂载不同 最终目的就是在/mnt目录下有个hgfs的文件夹 效果图: 首先打开VMware中的Linux系统 具体 ...
- JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构
一.简介 JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构 二.依赖 <!-- https://mvnrepository.com/artifact/org.fus ...
随机推荐
- Sass报错: Using / for division is deprecated
原因是:当sass版本>= 1.33.0时,会不支持 / 这种语法: 解决方式一: 降低sass版本,将sass版本换成:"sass": "^ ...
- npm ERR! code EPERM npm ERR! syscall open npm ERR! path C:\Program Files\nodejs\node_cache\_cacache\
报错信息 让人摸不着头脑的报错 解决方式 简单粗暴 直接删文件 方法1:需要删除npmrc文件. 强调:不是nodejs安装目录npm模块下的那个npmrc文件 而是在C:\Users{账户}\下的. ...
- css 让页面变灰色
html { -webkit-filter: grayscale(1); }-webkit-filter(滤镜)有十种效果,分别是: // grayscale 灰度 // sepia ...
- 10-Python进程与线程
Python进程 创建新进程 from multiprocessing import Process import time def run_proc(name): #子进程要执行的代码 for i ...
- 鸿蒙生态伙伴SDK市场正式发布,驱动千行百业鸿蒙原生应用开发
6月21-23日,华为开发者大会(HDC 2024)在东莞举办.在22日举办的[鸿蒙生态伙伴SDK]论坛中,正式发布了[鸿蒙生态伙伴SDK市场](以下简称:伙伴SDK市场),伙伴SDK市场是为开发者提 ...
- XIP技术与Flash
XIP技术与Flash 参考: 串行NAND Flash的两大特性导致其在i.MXRT FLASH控制器下无法XiP norflash芯片内执行(XIP) NOR Flash 和 NAND Flash ...
- QT 使用相对路径读取.txt文件
QT可以使用QFile来读取.txt文件,具体代码实现如下: 1 #include <QCoreApplication> 2 #include <QString> 3 #inc ...
- css 手稿
CSS 网页的布局和外观的显示样式 没有一张图解决不了的事:https://www.processon.com/mindmap/5e368a8be4b0d27af184e118 选择器 * 通配符选择 ...
- JVM学习笔记-如何在IDEA打印JVM的GC日志信息
若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可. 拿<深入Java虚拟机>书中的3-7代码例子来演示,如 1 public ...
- 合合TextIn - 大模型加速器
TextIn是合合信息旗下的智能文档处理平台,在智能文字识别领域深耕17年,致力于图像处理.模式识别.神经网络.深度学习.STR.NLP.知识图谱等人工智能领域研究.凭借行业领先的技术实力,为扫描全能 ...