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. 在Mac OSX下使用ssh建立隧道(在Windows下建立隧道可以使用putty,其间会用到ppk文件)

    在Windows下建立隧道可以使用putty,其间会用到ppk文件.在Mac OSX下,同样的功能可以用ssh命令实现.具体是: ssh -D 8088 -Nf user@ip -i myppk.ss ...

  2. JS数据结构第三篇---双向链表和循环链表之约瑟夫问题

    一.双向链表 在上文<JS数据结构第二篇---链表>中描述的是单向链表.单向链表是指每个节点都存有指向下一个节点的地址,双向链表则是在单向链表的基础上,给每个节点增加一个指向上一个节点的地 ...

  3. python算法与数据结构-单链表(38)

    一.链表 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括 ...

  4. java中list和Arrylist的区别

    List:是一个有序的集合,可以包含重复的元素.提供了按索引访问的方式.它继承 Collection. List有两个重要的实现类:ArrayList 和 LinkedList ArrayList:我 ...

  5. Django之forms组件使用

    注册功能 1.渲染前端标签获取用户输入 >>> 渲染标签 2.获取用户输入传递到后端校验 >>> 校验数据 3.校验未通过展示错误信息 >>> 展 ...

  6. ajax入门级

    AJAX AJAX:即异步的JavaScript 和 XML,是一种用于创建快速动态网页的技术: 传统的网页(不使用AJAX)如果需要更新内容,必需重载整个网页面: 使用AJAX则不与要加载更新整个网 ...

  7. python的数据类型之字符串(一)

    字符串(str) 双引号或者单引号中的数据,就是字符串. 注意事项 1.反斜杠可以用来转义,使用r可以让反斜杠不发生转义. 2.字符串可以用+运算符连接在一起,用*运算符重复. 3.Python中的字 ...

  8. 什么是JS跨域请求

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  9. python - 博客目录

    博客目录 python基础部分 函数 初识函数 函数进阶 装饰器函数 迭代器和生成器 内置函数和匿名函数 递归函数 常用模块 常用模块 模块和包 面向对象 初识面向对象 面向对象进阶 网络编程 网络编 ...

  10. Skyline WEB端开发1——入门

    Skyline是一套优秀的三维数字地球平台软件.凭借其国际领先的三维数字化显示技术,它可以利用海量的遥感航测影像数据.数字高程数据以及其他二三维数据搭建出一个对真实世界进行模拟的三维场景.目前在国内, ...