Linux系统配置 Samba客户端
参考:
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
还有一点,如果搞这么复杂的samba配置有些晕头而不太放心,最简单的方式就是配置完成后分别用windows客户端和linux客户端多试验几次,看看达到的文件权限是否满足自己的需求。而且把smb.conf和客户端挂载权限给满也是一种比较好操作的简易方法。
=================================================
Linux系统配置 Samba客户端的更多相关文章
- linux之SAMBA共享目录服务端架设
samba 共享目录 1.SAMBA服务概述 协议 监听端口137 架构 samba:Linux系统的一种文件共享程序服务 通常在主机文件共享的应用场景中,由于文件系统的差异化,Windows和L ...
- Linux下samba的安装与配置
背景 在window7下面虚拟了一个CentOS6.3,为了学习命令行就没有装图形包,所以我的CentOS是黑屏的那种,呵呵,当然了,VMWare提供 的增强功能我就不能用了(或许能 ...
- Linux中samba服务器的搭建
使用的vmware12虚拟机安装的centos6.8和物理机上的windows10,实现在windows10 上访问CentOs上的samba服务. 一.先查看系统中是否安装有samba服务相关的软件 ...
- Linux之Samba部署
1.Samba介绍 Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成,SMB(Server Messages Block,信息服务块)是一种 ...
- 利用Linux的Samba服务模拟NT域
利用Linux的Samba服务模拟NT域 Samba是一个与Windows NT具有相同协议的软件包.我们可以利用Samba服务来模拟 Windows NT域,使用户从Windows计算机上直接使用一 ...
- Linux服务-samba
目录 1. samba简介 2. samba访问 Linux服务-samba 1. samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. 在 ...
- Linux 配置samba服务实现与Windows文件共享
目录: 1.samba服务介绍 2. 安装samba服务和客户端 3.samba配置文件详解 4.配置实例 5.客户端挂载与测试 6.samba排错 1.Samba服务介绍 Samba 最先在 ...
- Linux系统配置VSFTP软件详解
Linux系统配置VSFTP软件详解 出处 http://www.sudu.cn/service/detail.php?id=11656 vsftpd.conf 是vsftpd的配置文件,用来控制vs ...
- linux下Samba服务配置
SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可 ...
- linux系统内SAMBA共享问题
最近将项目迁移到了公司服务器上,以后客户端调试和服务端开发都要去链接这台服务器,但是开发就需要调试,也需要log信息,同一局域网内,如何链接服务器并随时查看服务器上的log信息呢? 今天搞了一下,把步 ...
随机推荐
- json LocalDateTime转对象
json LocalDateTime转对象 feign.codec.DecodeException: JSON parse error: Can not deserialize instance of ...
- java8 Optional使用 stream filter多级过滤
java8 Optional使用 stream filter多级过滤 package com.example.core.mydemo.java8; public class MyModel { pri ...
- Exception:kylin构建cube, Cannot modify mapReduce.queue.name at runtime
Failed to open new session: java.lang.IllegalArgumentException: Cannot modify tez.queue.name at runt ...
- ZYNQ:提取PetaLinux中Linux和UBoot配置、源码
说明 默认情况下,PetaLinux在编译完成后会删除源代码,以节省硬盘空间. 在project-spec/meta-user/conf/petalinuxbsp.conf里,添加如下内容,可以保留L ...
- 使用Swig转换C++到别的编程语言
项目github地址: aoce 设定aoce能分别与UE4/Unity3D/android demo对接,就这三来看,分别是C++/C#/java三种语言. C++导出给别的语言使用,一般来说,分为 ...
- Yaml配置文件语法详解
YAML 简介 YAML,即 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写,YAML 意思其实是" Yet Ano ...
- Java中final用法与详解
final作为Java中经常用到的关键字,了解final的使用方法是非常有必要的. 这里从final关键字在数据域.方法和类中三个方面分析final关键字的主要用法. final应用于基本数据类型 1 ...
- dubbo面试题及答案
Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目. 面试官问你如果这个都不清楚,那下面的就没必要问了. 官网:ht ...
- Microsoft Compatibility telemetry占cpu资源高
1.在Windows10系统卡的时候,打开任务管理器,发现Microsoft Compatibility telemetry占用了大量的系统资源,特别是CPU占用率非常高. 位置:控制面板->管 ...
- 推荐一款Python接口自动化测试数据提取分析神器!
1.引言 在处理JSON数据时,我们常常需要提取.筛选或者变换数据.手动编写这些操作的代码不仅繁琐,而且容易出错.Python作为一个功能强大的编程语言,拥有丰富的库和工具来处理这些数据.今天,将介绍 ...