注明:

曾经写过:局域网中如何为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

说明:
smbpasswd只有一个参数
-a 新建用户,使用的时候创建的samba用户必须在系统用户中存在。否则samba找不到系统用户则创建失败
-d 冻结用户,就是这个用户不能在登录了
-e 恢复用户,解冻用户,让冻结的用户可以在使用
-n 把用户的密码设置成空.
-x 删除用户,删除的是samba中的用户,而不是系统用户

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的更多相关文章

  1. 开发及应用中 Linux与Window 取舍

    Linux是开源的,而Windows不是.这个也是Linux与Windows之间最大的差异.一般来说,开源似乎收到了更多系统管理员的亲睐,而开源的软件似乎更受个人电脑用户的欢迎.两种类型之间有很多不同 ...

  2. linux centos7--linux和window共享文件(samba)

    这里以VMWARE与主控真机来做实现实现 由于SMB在centos中自带,所以,无需像网上说的样子,要这删除,那卸载,直接搜索是否存在SAMBA的安装文件 一 查询包是否存在 [root@localh ...

  3. Linux访问Window共享文件夹的配置步骤

    1. Window下创建用户XXX(作用:Linux mount时需要提供用户和密码) 2. Window下共享文件夹给XXX用户,并根据实际需要设置读取/写入权限 3. Linux下创建挂载的目录 ...

  4. (原创)Linux跟Window共享文件的两个简单方法

    第一中种方法: Linux中启动shell,输入如下命令: mount -t cifs -o username="my-pc-name",password="my-pas ...

  5. VMware中linux与window目录共享

    在虚拟机下来实如今windows下共享一个目录: (前提已安装完毕vmtools:http://blog.csdn.net/pipisorry/article/details/21318931) 打开 ...

  6. Samba实现Linux与Window文件的传输

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通 ...

  7. Linux 和 Windows 之间共享文件之 samba

    导语 如果对windows有过实际操作技巧的人都会明白,在windows下的文件共享加上网络驱动器映射是多么方便的体验,甚至比ftp更加的简单,就像本地多了一块可与他人交流的硬盘一样. 问题 由于性能 ...

  8. VMware Workstation中linux(centos)与windows7共享文件夹

    引用网站有: http://www.jb51.net/LINUXjishu/161994.html http://www.cnblogs.com/xiehy/archive/2011/12/19/22 ...

  9. 主机和VMware中的Linux如实现共享文件夹

    当我在网上查了几小时的挂载文件夹方法后发现,VMware中的Linux的挂载和双系统的挂载不同 最终目的就是在/mnt目录下有个hgfs的文件夹 效果图: 首先打开VMware中的Linux系统 具体 ...

  10. JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构

    一.简介 JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构 二.依赖 <!-- https://mvnrepository.com/artifact/org.fus ...

随机推荐

  1. Sass报错: Using / for division is deprecated

         原因是:当sass版本>= 1.33.0时,会不支持 / 这种语法:  解决方式一:      降低sass版本,将sass版本换成:"sass": "^ ...

  2. 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{账户}\下的. ...

  3. css 让页面变灰色

    html { -webkit-filter: grayscale(1); }-webkit-filter(滤镜)有十种效果,分别是:     // grayscale 灰度     // sepia ...

  4. 10-Python进程与线程

    Python进程 创建新进程 from multiprocessing import Process import time def run_proc(name): #子进程要执行的代码 for i ...

  5. 鸿蒙生态伙伴SDK市场正式发布,驱动千行百业鸿蒙原生应用开发

    6月21-23日,华为开发者大会(HDC 2024)在东莞举办.在22日举办的[鸿蒙生态伙伴SDK]论坛中,正式发布了[鸿蒙生态伙伴SDK市场](以下简称:伙伴SDK市场),伙伴SDK市场是为开发者提 ...

  6. XIP技术与Flash

    XIP技术与Flash 参考: 串行NAND Flash的两大特性导致其在i.MXRT FLASH控制器下无法XiP norflash芯片内执行(XIP) NOR Flash 和 NAND Flash ...

  7. QT 使用相对路径读取.txt文件

    QT可以使用QFile来读取.txt文件,具体代码实现如下: 1 #include <QCoreApplication> 2 #include <QString> 3 #inc ...

  8. css 手稿

    CSS 网页的布局和外观的显示样式 没有一张图解决不了的事:https://www.processon.com/mindmap/5e368a8be4b0d27af184e118 选择器 * 通配符选择 ...

  9. JVM学习笔记-如何在IDEA打印JVM的GC日志信息

    若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可. 拿<深入Java虚拟机>书中的3-7代码例子来演示,如 1 public ...

  10. 合合TextIn - 大模型加速器

    TextIn是合合信息旗下的智能文档处理平台,在智能文字识别领域深耕17年,致力于图像处理.模式识别.神经网络.深度学习.STR.NLP.知识图谱等人工智能领域研究.凭借行业领先的技术实力,为扫描全能 ...