参考:

https://blog.csdn.net/m0_63624418/article/details/127856957

本文为局域网中linux和window共享文件方案——samba后续篇。

===================================================

之前已经介绍了linux安装samba服务器端以及windows客户端的使用,本篇讲的是linux客户端的安装及使用。

本文开始前回顾下之前介绍的权限问题。

1. 物理机上挂载移动硬盘

物理机上挂载硬盘,挂载后的硬盘上文件的权限与文件系统以及挂载参数有关,如果挂载的是ntfs文件系统那么只能设置可读、可写权限,并不能细化到具体的用户(个人观点是ntfs文件系统本身就不支持ext4这种linux文件系统的文件权限设置),如果挂载的是ext4文件系统,那么就和正常的文件权限系统一样(只不过在挂载的ext4文件系统下root用户可以不受文件权限限制)。

2. windows客户端如果使用用户名+密码形式登录,那么windows用户见到的samba网络磁盘上的文件权限与物理机上的权限基本保持一直(虽然windows系统上无法显示文件权限,但是该权限依然有效,如果windows客户端写一个只读文件也会无法保存的),唯一的例外是受服务器/etc/samba/smb.conf上设置的文件和文件夹的权限上限影响,因为windows客户端所能看到的权限是不会超过服务器上/etc/samba/smb.conf上配置的权限上限的。举个例子:如果服务器上xxx.py文件的权限是0755,但是smb.conf上的文件权限上限是0740,那么windows上这个文件权限也就是0740,如果windows上登录samba的用户为devil,而这个xxx.py文件的属主用户david与devil不是一个组,那么windows上用户是无法读这个文件的;而如果smb.conf上的文件权限上限是0777,那么windows上samba访问这个文件权限也就是0755,此时windows用户就可以读这个文件。

3. (提前告知答案)linux客户端访问samba共享的磁盘文件(挂载cifs的方式),其文件权限与windows客户端类似,不过除了受服务器物理机上文件权限影响和smb.conf配置文件上的权限上限影响,同时也受挂载时的配置参数影响。

安装linux上的samba客户端:

sudo  apt install smbclient

sudo  apt install cifs-utils

安装成功后测试:

sudo smbclient -L //192.168.1.102/data -U devil

注意这里只是测试,出现下面的信息是正常的,不需要care:

Reconnecting with SMB1 for workgroup listing.
smbXcli_negprot_smb1_done: No compatible protocol selected by server.
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
Failed to connect with SMB1 -- no workgroup available

在linux客户机上利用samba客户端进行网络磁盘挂载:

例子:

sudo mount -t cifs //192.168.1.102/data /home/devil/creat -o username=devil -o password=123qwe -o uid=devil -o gid=devil -o file_mode=0777 -o dir_mode=0777

服务器端磁盘文件权限:

客户端执行命令(

sudo mount -t cifs //192.168.1.102/data /home/devil/creat -o username=devil -o password=123qwe -o uid=devil -o gid=devil -o file_mode=0777 -o dir_mode=0777

)挂载后的文件权限:

可以看到在客户端samba挂载后文件权限显示的和客户端挂载时的参数设置一致,但是实际上这两个txt文件都是不能读写的(因为服务器物理机上没有开权限)。

我们可以在客户端samba挂载后对文件进行操作:

从这里可以看出,linux的samba客户端所显示的权限是其挂载时的参数设置,但是其实际权限是物理机上的权限被smb.conf和客户端挂载参数所限制后的参数,也就是说实际权限是不能超过smb.conf中的上限和挂载参数的上限的。

linux的samba客户端的文件权限受:服务器端本身的权限,smb.conf的权限上限,挂载时的权限参数,这三者的影响。这三者中有一个设置不满足读写,那么最终的结果就是无法读写的。

-------------------------------------------------------------

服务器端sudo vim /etc/samba/smb.conf文件中的

create mask = 
directory mask =

对windows客户端、linux客户端其实都是起到一种mask的作用,在服务器物理文件权限基础上进一步做限制,而服务器端sudo vim /etc/samba/smb.conf文件中的

read only =

优先级高于creat mask和directory mask,也就是说如果read only = yes ,那么无论create mask和directory mask如何设置,最终的samba共享网络文件都是不可写的。

比如对samba服务器端修改:

重启samba服务器:sudo service smbd restart

再次在linux的samba客户端上操作,新建文件,发现无法创建,因为该空间已变成只读:

发现此时即使在linux客户端上显示权限满足条件,但是实际操作依旧会报错,因为linux客户端显示的权限是其挂载时的参数所设置的,但是最终权限还要受smb.conf和服务器物理机的权限通过。

------------------------------------------------

总结:

samba的权限设置十分的复杂,共受三者影响(物理机上的文件权限,服务器中smb.conf的上限设置,挂载时的权限参数),服务器端挂载不同的文件系统(ntfs还是ext4),不同的smb.conf设置,linux客户端挂载参数的不同,其最终权限都是不同的,samba服务的文件权限对于多人协同的情况其实支持度并不是很好的(设置过于复杂)。

因此samba服务器端配置共享时,最好是依据单用户的情况进行配置,比如:

/home/devil/share/devil_data路径就是配置给devil用户的,devil用户具有全部的rwx权限;

/home/devil/share/john_data路径就是配置给john用户的,john用户具有全部的rwx权限;

/home/devil/share/john_data路径就是配置给smith用户的,smith用户具有全部的rwx权限;

/home/devil/share/public_read_data路径就是配置给所有用户的,devil、john、smith用户具有只读权限。

/home/devil/share/public_write_data路径就是配置给所有用户的,devil、john、smith用户具有读写权限。

或许这样的samba配置才是比较靠谱的。

升级一下的设置:

/home/devil/share/data路径配置给devil、john、smith用户,但是data权限属主为root,然后再在/home/devil/share/data路径下面创建devil_data文件夹给devil用户并使其成为属主具有全部的rwx权限;在/home/john/share/data路径下面创建john_data文件夹给john用户并使其成为属主具有全部的rwx权限;在/home/devil/share/data路径下面创建smith_data文件夹给smith用户并使其成为属主具有全部的rwx权限。

然后在/etc/samba/smb.conf文件中配置

create mask = 0777
directory mask = 0777

在linux挂载时,使用参数-o file_mode=0777 -o dir_mode=0777,
这样就把samba网络文件权限全部给到物理机上进行管理,不过这样做的最大问题就是无法在客户端上看到文件的真实权限,不过这一点也不重要,因为不管如何设置在samba客户端上都是难以看到真实的文件权限和真实属主的。

还有一点,如果搞这么复杂的samba配置有些晕头而不太放心,最简单的方式就是配置完成后分别用windows客户端和linux客户端多试验几次,看看达到的文件权限是否满足自己的需求。而且把smb.conf和客户端挂载权限给满也是一种比较好操作的简易方法。

=================================================

Linux系统配置 Samba客户端的更多相关文章

  1. linux之SAMBA共享目录服务端架设

    samba 共享目录 1.SAMBA服务概述 协议 监听端口137 架构   samba:Linux系统的一种文件共享程序服务 通常在主机文件共享的应用场景中,由于文件系统的差异化,Windows和L ...

  2. Linux下samba的安装与配置

    背景          在window7下面虚拟了一个CentOS6.3,为了学习命令行就没有装图形包,所以我的CentOS是黑屏的那种,呵呵,当然了,VMWare提供 的增强功能我就不能用了(或许能 ...

  3. Linux中samba服务器的搭建

    使用的vmware12虚拟机安装的centos6.8和物理机上的windows10,实现在windows10 上访问CentOs上的samba服务. 一.先查看系统中是否安装有samba服务相关的软件 ...

  4. Linux之Samba部署

    1.Samba介绍 Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成,SMB(Server Messages Block,信息服务块)是一种 ...

  5. 利用Linux的Samba服务模拟NT域

    利用Linux的Samba服务模拟NT域 Samba是一个与Windows NT具有相同协议的软件包.我们可以利用Samba服务来模拟 Windows NT域,使用户从Windows计算机上直接使用一 ...

  6. Linux服务-samba

    目录 1. samba简介 2. samba访问 Linux服务-samba 1. samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. 在 ...

  7. Linux 配置samba服务实现与Windows文件共享

    目录: 1.samba服务介绍 2. 安装samba服务和客户端 3.samba配置文件详解 4.配置实例 5.客户端挂载与测试 6.samba排错 1.Samba服务介绍     Samba 最先在 ...

  8. Linux系统配置VSFTP软件详解

    Linux系统配置VSFTP软件详解 出处 http://www.sudu.cn/service/detail.php?id=11656 vsftpd.conf 是vsftpd的配置文件,用来控制vs ...

  9. linux下Samba服务配置

    SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可 ...

  10. linux系统内SAMBA共享问题

    最近将项目迁移到了公司服务器上,以后客户端调试和服务端开发都要去链接这台服务器,但是开发就需要调试,也需要log信息,同一局域网内,如何链接服务器并随时查看服务器上的log信息呢? 今天搞了一下,把步 ...

随机推荐

  1. MyBatis 关于查询语句上配置的详细内容

    1. MyBatis 关于查询语句上配置的详细内容 @ 目录 1. MyBatis 关于查询语句上配置的详细内容 2. 准备工作 3. SQL查询结果,返回为POJO实体类型 4. SQL查询结果,返 ...

  2. HttpServletRequest获取header参数 sign

    HttpServletRequest获取header参数 sign //从请求头中获取参数 private static Map<String, String> getHeaders(Ht ...

  3. elasticSearch RangeQuery范围查询from to的理解

    elasticSearch RangeQuery范围查询from to的理解 Elasticsearch Guide 选择版本号来查询对应的文档内容:https://www.elastic.co/gu ...

  4. /etc/shadow文件破解,密码破解,md5,SHA256,SHA512破解

    环境 Kali系统 John the Ripper密码破解者 shadow文件解析 文件的格式为: {用户名}:{加密后的口令密码}:{口令最后修改时间距原点(1970-1-1)的天数}:{口令最小修 ...

  5. NVIDIA Jetson AGX Xavier 从刷机之后到配置环境

    特殊的配置环境需求: cuda-10.2.python 3.6.9.torch 1.7.0.torchversion 0.8.1,剩下的顺其自然即可(逃. 顺便说一句,里面的指令请一行一行仔细复制粘贴 ...

  6. Oracle自动化编译无效对象

    问题描述:使用存储过程的方式对oracle数据库的无效对象,如视图或者同义词进行定期的编译,让他变成一个有效的对象,加上定时任务可以实现自动化的处理.同时在数据库内部创建一个记录表,用来记录被编译过的 ...

  7. Java -jar 启动程序参数说明

    Springboot环境下的启动参数说明 # Java启动命令语法: java [options] -jar file.jar [arguments] java -jar [options] file ...

  8. Java-Cookie客户端会话技术

    会话技术 会话:一次对话中包含多次请求和响应 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cook ...

  9. .NET 9 预览版6发布

    微软发布了 .NET 9 的第 6 个预览版,此版本包括对运行时.SDK..NET MAUI.ASP.NET Core 和 C# 的更新,预览版没有包含太多新的主要功能或特性,因为已接近 .NET 9 ...

  10. [oeasy]python0094_视频游戏_双人网球_pong_atari_mos_6502_雅达利_米洛华

    编码进化 回忆上次内容 上次 我们回顾了 微软之前的 比尔盖茨和保罗艾伦 mits 迎来的 是帮手 还是隐患? intel-8080 遇到了 mos-6502 底层硬件 驱动 游戏行业进化 不光是扑克 ...