热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux初学者CIFS网络文件系统篇

linux初学者-CIFS网络文件系统篇linux初学者-CIFS网络文件系统篇CIFS是一种通用网络文件系统,主要用于网络设备之间的文件共享。CIFS可以在linux系统和win
  linux初学者-CIFS网络文件系统篇

        CIFS是一种通用网络文件系统,主要用于网络设备之间的文件共享。CIFS可以在linux系统和windows系统之间共享文件,因此这种文件系统主要用于客户端是windows系统。

       提供CIFS的服务是SAMBA,下文将介绍SAMBA服务的一些配置以及用法。

       1、SAMBA的安装和配置

         "yum install samba samba-common samba-client -y"。安装SAMBA服务。

技术分享图片

         "systemctl start smb",开启SAMBA服务。"systemctl enable smb",开机启动SAMBA服务。"systemctl stop firewalld",关闭防火墙,也可以对防火墙进行配置。

技术分享图片

       "smbpasswd -a student",在SAMBA服务中添加一个用户,这个用户必须为主机中真是存在的用户。"pdbedit -L",可以查看添加了哪些用户。

技术分享图片

        "smbclient -L //172.25.254.202 -U student",输入密码后可以看到SAMBA用户"student"共享了哪些目录,如下图,默认会共享用户的家目录。

技术分享图片

        "smbclient //172.25.254.202/student -U student",输入密码后可以查看共享目录"student"下的文件。但是在SElinux开启的情况下,是无法看到里面文件的,需要"setsebool -P samba_enable_home_dirs on"开启这个功能之后即可查看。

技术分享图片技术分享图片

技术分享图片

        "mount -o username=student,password=student //172.25.254.202/student /mnt",可以将这个"student"目录挂载在其他目录下,在这个目录下写入文件就会自动储存到"student"目录。

技术分享图片

        "vim /etc/samba/smb.conf",在配置文件中,修改第89行的"workgroup"可以改变域名,例如下图,设置"workgroup = text"。重启服务后生效。

技术分享图片技术分享图片

        可以在第96行加入"hosts deny = IP"或者"hosts allow = IP"来阻止或者允许该IP登陆。如下图所示,主机名"singlenet"的IP为"172.25.254.202"。

技术分享图片技术分享图片技术分享图片

       2、共享其他目录

        默认的共享目录是家目录,如果需要共享其他目录,如自建一个目录"/we",里面有"wefile{1..3}"三个文件。

技术分享图片

        此时需要如下步骤:

        a、"vim /etc/samba/smb.conf"。在第322行至第324行输入以下内容:

                        [DATA]

                        comment = local directory /we

                        path = /we

技术分享图片

             "[DATA]"为共享目录目标,可以自己编写。重启服务。"smbclient -L //172.25.254.202 -U student",可以看到这个"DATA"目录,但是却无法通过"smbclient //172.25.254.202/DATA -U student"看到这个目录里面的内容。这是因为SElinux的影响。

技术分享图片技术分享图片

         b、"semanage fcontext -a -t samba_share_t ‘/we(/.*)?‘"。修改自建目录"/we"的安全上下文,并通过"restorecon -RvvF /we"刷新。

技术分享图片

          完成后重启服务就可以通过"smbclient //172.25.254.202/DATA -U student"看到这个目录里面的内容了。

技术分享图片

         上述的步骤适合于自建目录,但是如果是系统的目录呢?就无法修改目录的安全上下文了。例如下图第326行至第328行,共享"/mnt"目录,目录下有"mntfile{1..3}"三个文件。

技术分享图片

         此时就需要用"setsebool -P samba_export_all_ro on"关闭在SAMBA中的安全上下文功能。完成后就可以看到"/mnt"下的文件了。需要注意的是,"samba_export_all_ro"打开后,因为安全上下文失效,所以共享自建目录也不需要再修改安全上下文了。

技术分享图片技术分享图片技术分享图片

     3、匿名用户登陆

         在配置文件"/etc/samba/smb.conf"中共享文件后输入"browseable = no"就会在查询是不显示这个目录,但是这个目录依旧存在,可以看到其中的文件。如下图第325行所示。

技术分享图片技术分享图片

         SAMBA也是可以通过匿名用户登陆的,需要在配置文件"/etc/samba/smb.conf"中加入"guest ok = yes",如下图第326行所示,这是开启了匿名用户登陆。

技术分享图片

         重启服务后就可以不通过用户,而直接输入"smbclient //172.25.254.202/DATA"直接登陆查看里面的文件。

技术分享图片

        但是,上述设置之后虽然可以匿名登陆,但是无法挂载在某个目录下,此时需要在配置文件中输入"map to guest = bad user",这是使匿名用户登陆或者挂载时以"guest"用户进行。重启服务后就可以进行挂载了。

技术分享图片技术分享图片技术分享图片

        如果匿名用户挂载需要开机自动挂载,则在"/etc/fstab"文件中输入"//172.25.254.202/DATA /mnt cifs defaults,username=guest 0 0"即可。

技术分享图片

      4、目录挂载后的写权限

        4.1、开启写权限

         如下图所示,目录挂载之后并不能在其中建立或者删除文件。这是因为并没有开启写权限。

技术分享图片

         开启写权限需要在配置文件中输入第327行的"writable = yes",并给予共享目录"/we"777权限,完成后还必须修改"/we"目录的安全上下文。完成后重新挂载就可以进行文件的建立和删除了。

技术分享图片技术分享图片技术分享图片

         与共享系统目录时相同,系统目录无法修改安全上下文,此时需要输入"setsebool -P samba_export_all_rw on"开启SElinux中的写权限功能,修改后系统目录挂载后就可以建立和删除文件了。开启功能后,自建目录也不需要再修改安全上下文。

技术分享图片

       4.2、写权限的限定

        上述配置是使所有用户在挂载时都可以建立或者删除文件,有时还需要对一些用户进行限制,例如现有两个用户"student"和"class",想要"student"可以建立文件,而"class"用户不可以。则需要在配置文件中输入"write list = student",这时只有"student"用户拥有写权限,则可以解决这个问题。

技术分享图片技术分享图片

        还可以在将配置文件"write list = "后的"student"该为"+student",这表示属于student用户组的用户拥有写权限,如下图所示,将student用户组添加为"class"用户的附加组,此时"class"用户就可以进行文件的建立和删除了。

技术分享图片技术分享图片技术分享图片

      4.3、建立文件的归属

         共享目录挂载之后建立的文件默认的是以哪个用户的身份登陆,文件的所有人就为哪个用户。可以在配置文件中输入下图第335行的"admin users = class",就可以使得以class用户在挂载这个共享目录后,以root用户的身份进行操作,如下图所示。可以看出设置之后建立的文件"file1"的文件所有人为"root",而之前以student用户挂载建立的文件"file3"的文件所有人为"student"。

技术分享图片技术分享图片技术分享图片

      5、用户的权限管理

         如下图所示,以root用户挂载一个共享目录,但是切换到普通用户kiosk,发现这个普通用户也可以看到里面的文件,这显然是很不安全的,也不合理,所以需要对客户端的用户进行权限管理。即客户端的其他用户需要进行认证才可以查看挂载内容。

技术分享图片

        其设置步骤如下所示:

        "yum install cifs-utils -y"。在客户端上,管理的软件是"cifs-utils"。

技术分享图片

        "vim /root/smbpassword"。在这个文件中写入SAMBA服务上真实存在的用户和密码,文件名称可以自行编辑,完成后为了安全给予600权限。

技术分享图片技术分享图片

        "mount -o credentials=/root/smbpassword,multiuser,sec=ntlmssp //172.25.254.202/SYSTEM /mnt"。如下图所示,以此命令进行挂载,挂载后kiosk用户无法看到挂载目录的文件。

技术分享图片

        如果kiosk用户需要看到里面的文件,则需要进行用户身份验证,kiosk用户输入"cifscreds add -u class 172.25.254.202"输入密码后即可完成认证,认证可以输入SAMBA服务中的任意一个真实存在的用户。

技术分享图片

        kiosk用户在挂载目录下建立一个文件"kioskfile",如下图,在客户端可以看到这个文件是属于kiosk用户的,但在SAMBA服务端,可以看到这个文件是属于class用户的。这是因为kiosk用户建立的文件在SAMBA服务端是属于客户端kiosk用户的uid在服务端所对应的那个用户的。kiosk的uid为1001,在SAMBA服务端,1001的uid对应的用户为class。

技术分享图片技术分享图片

        上述即是在客户端管理普通用户对共享目录操作的方式。

        还可以在配置文件中写入下图第328行中的"valid users = student",这是使得只能以student用户进行挂载,也可以写为"valid users = @student",这是使得只能student用户组内的用户可以进行挂载。

技术分享图片技术分享图片

        以上就是linux系统和windows系统通用的共享文件系统CIFS的主要内容。SAMBA服务主要用于客户端是windows系统的文件共享。而linux系统之间的文件共享是采用NFS的共享文件系统。

linux初学者-CIFS网络文件系统篇


推荐阅读
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 回顾两年前春节期间的一个个人项目,该项目原本计划参加竞赛,但最终作为练习项目完成。独自完成了从编码到UI设计的全部工作,尽管代码量不大,但仍有一定的参考价值。本文将详细介绍该项目的背景、功能及技术实现。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文介绍了如何通过安装 sqlacodegen 和 pymysql 来根据现有的 MySQL 数据库自动生成 ORM 的模型文件(model.py)。此方法适用于需要快速搭建项目模型层的情况。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文介绍了如何利用jQuery实现对网页上多个div元素的显示与隐藏控制,包括基本的toggle方法及更复杂的显示隐藏逻辑。 ... [详细]
  • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
  • 本文详细介绍了iOS应用的生命周期,包括各个状态及其转换过程中的关键方法调用。 ... [详细]
author-avatar
以真做假公馆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有