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网络文件系统篇的更多相关文章

  1. linux初学者-NFS网络文件系统篇

    linux初学者-NFS网络文件系统篇 在上一篇的SAMBA篇中介绍了linux系统和windows系统之间共用的网络文件系统CIFS,主要用于客户端是windows的情况.在linux系统之间,所用 ...

  2. linux初学者-普通磁盘分区篇

    linux初学者-普通磁盘分区篇 磁盘是计算机的重要组成部分,是记录数据的场所.在使用磁盘时,经常需要对其进行分区来实现不同的用途.下文将介绍在linux系统中普通磁盘分区的方法. "fdi ...

  3. Linux系统NFS网络文件系统

    Linux系统NFS网络文件系统 NFS(network file system)网络文件系统,就是通过网络让不同的主机系统之间可以共享文件或目录,此种方法NFS客户端使用挂载的方式让共享文件或目录到 ...

  4. linux初学者-DNS集群篇

    linux初学者-DNS集群篇 DNS服务器一般在使用时,为了缓解服务器的压力,多使用一个主DNS服务器,多个副DNS服务器,这些DNS服务器就组成了一个DNS集群. 在DNS主服务器配置好后,需要另 ...

  5. linux初学者-磁盘拉伸缩减篇

    linux初学者-磁盘拉伸缩减篇 在系统的使用过程中,往往会出现这样的问题,由于刚开始无法估计需要的磁盘空间,导致后期磁盘空间不够,使得数据没地方存储,又或者后期磁盘空间过大,造成资源的浪费.这种在使 ...

  6. linux初学者-磁盘分区方式篇

    linux初学者-磁盘分区方式篇 一般的计算机都会采用mbr分区方式,这种分区方式只能够建立四个主分区,如果还需要或更多的分区,就需要将其中一个主分区建立成一个扩展分区,在里面建立逻辑分区,这些分区信 ...

  7. linux初学者-延迟及定时任务篇

    linux初学者-延迟及定时任务篇 在linux系统的学习工作中,南面会遇到需要延迟进行的任务和需要定时去完成的任务,就像手机的闹钟一样,这时候就需要用到linux系统当中的系统延迟和定时任务的设置了 ...

  8. linux一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书)

    一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书) --------------------------目录-网络无关篇-目录-------------------------- 0001 修 ...

  9. linux内核中网络文件系统的注册初始化

    针对内核3.9 系统开启时,会使用init/main.c,然后再里面调用kernel_init(),在里面会再调用do_basic_setup(),调用do_initcalls(),调用do_one_ ...

随机推荐

  1. 使用Scrapy爬取图片入库,并保存在本地

    使用Scrapy爬取图片入库,并保存在本地 上 篇博客已经简单的介绍了爬取数据流程,现在让我们继续学习scrapy 目标: 爬取爱卡汽车标题,价格以及图片存入数据库,并存图到本地 好了不多说,让我们实 ...

  2. dubbo源码分析02:服务引用

    一.何时创建服务引用 引用官方文档的原话,如果将Dubbo托管在Spring-IOC容器下,Dubbo服务引用的时机有两个,第一个是在Spring容器调用ReferenceBean的afterProp ...

  3. JAVA8之lambda表达式详解

    原文:http://blog.csdn.net/jinzhencs/article/details/50748202 lambda表达式详解 一.问题 1.什么是lambda表达式? 2.lambda ...

  4. 创建一个简单的Django项目

    1.首先,启动pycharm,点击File->New Project,如下图所示. 2.在New Project对话框中,选择Django,在Location中设置项目路径以及项目名称,在App ...

  5. Unity 通用透明物体漫反射Shader(双面渲染&多光源&光照衰减&法线贴图&凹凸透明度控制)

    Shader "MyUnlit/AlphaBlendDiffuse" { Properties { _Color("Color Tint(贴图染色)",Colo ...

  6. 06、MySQL—列类型

    1.整数类型 I.有符号整型 (1) Tinyint:单字节整形,系统采用一个字节来保存的整形:一个字节 = 8位,最大能表示的数值是0-255. (2) Smallint:双字节整形,系统采用两个字 ...

  7. QT 资料收集 (不定期添加)

    Qt之界面实现技巧 http://blog.sina.com.cn/s/blog_a6fb6cc90101dech.html

  8. mount -- 挂载理解

    1.挂载? 在windows操作系统中, 挂载通常是指给磁盘分区(包括被虚拟出来的磁盘分区)分配一个盘符. 第三方软件,如磁盘分区管理软件.虚拟磁盘软件等,通常也附带挂载功能. 在linux操作系统中 ...

  9. 2018.10.1 2018NOIP冲刺之立体图

    2008NOIP普及组立体图 请自行百度(事实上放不下了) 图不是很清楚 下面有 [输入] 输入文件 drawing.in 第一行有用空格隔开的 2 个整数 m 和 n,表示有 m*n  个格子 (1 ...

  10. mysql计算日期之间相差的天数

    TO_DAYS(NOW()) - TO_DAYS(createTime) as dayFactor,