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. 自动获取淘宝API数据访问的SessionKey

    最近在忙与淘宝做对接的工作,总体感觉淘宝的api文档做的还不错,不仅有沙箱测试环境,而且对于每一个api都可以通过api测试工具生成想要的代码,你完全可以先在测试工具中测试之后再进行代码的编写,这样就 ...

  2. java之jdbc学习——QueryRunner

    jdbc是ORM框架的基础,但将数据库中的表映射到java对象,并进行增删改查,并不是一件简单的事情. 涉及到jdbc.注解和反射的一些基础知识. 以下内容来自网友的分享,并做了一些增减,作为笔记记录 ...

  3. hgoi#20190514

    T1-Curriculum Vitae 给你一个长度为n的01序列a,删去其中的几个数,使得序列中左边是连续的0,右边是连续的1,可以没有0或1,求最多剩下几个数 解法 对于每个点看它左边几个0,右边 ...

  4. 电商、P2P等大型互联网系统包含哪些业务模块?

    01 前言 在互联网飞速发展的时代,各大互联网公司正在进行激烈的竞争,业务模式也在不断的扩张,这种现状使得目前各大公司的架构系统面临着极大的挑战,而对于我们普通的软件开发者而言,如果你仅仅了解过一些关 ...

  5. centos系统supervisor配置

    supervisor用来管理非daemon程序!将自动转换为daemon程序 安装: yum install supervisor 配置: 默认配置文件路径: /etc/supervisord.con ...

  6. dubbo整合springboot最详细入门教程

    说明 目前互联网公司,大部分项目都是基于分布式,一个项目被拆分成几个小项目,这些小项目会分别部署在不同的计算机上面,这个叫做微服务.当一台计算机的程序需要调用另一台计算机代码的时候,就涉及远程调用.此 ...

  7. Ceph RGW Multisite 数据同步流程图

  8. shell 循环打印某一天后的n天的日期

    #!/bin/bash start_date="2017-10-26" for i in `seq 0 30` do num=$((${i}+1)) datatime=`date ...

  9. HDU 6043:Colorful Tree(树上统计所有路径总颜色数)***

    题目链接 题意 给出一棵有n个结点的树,每个结点有一个颜色,问在这棵树的所有路径中,每条路径的颜色数求和是多少. 思路 求每种颜色的贡献可以转化为总的和减去每种颜色在哪些路径上没有出现的贡献,一个颜色 ...

  10. HDU 2089:不要62(数位DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=2089 不要62 Problem Description   杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer) ...