Linux系统中CIFS文件系统

Samba简介:

Samba是在Linux和Unix系统上实现SMB协议的一个免费软件,提供CIFS(Common Internet File System)协议,由服务器及客户端程序构成,SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

CIFS简介

CIFS(Common Internet File System)文件系统也称通用Internet文件系统,它使程序可以访问远程Internet计算机上的文件并要求此计算机的服务。CIFS使用客户/服务器模式。客户程序请求远在服务器上的服务程序为它提供服务,服务器获得请求并返回响应。CIFS是公开的开放的SMB协议版本。SMB协议现在是在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行。可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。

CIFS可以提供以下功能:

1.访问服务器本地文件并读写这些文件
2.与其它用户一起共享一些文件块
3.在断线时自动恢复与网络的连接
4.使用统一码文件名

一.CIFS文件系统的安装以及与用户登陆配置

服务器端:

1.在服务端安装samba samba-common samba-client

 yum install samba samba-common samba-client -y

2.打开samba服务,关闭防火墙

systemctl start smb
syatemctl stop firewalld

3.增加smb用户(如果不增加,在客户端只能匿名登陆),增加的smb用户必须是系统中已经存在的用户

 smbpasswd -a student     输入两次密码
 pdbedit -L               显示系统中的smb用户
 pdbedit -x student       删除某一指定smb用户

这里写图片描述

这里写图片描述
客户端:

1.安装 samba-client

 yum install samba-client

2.用smb用户身份显示内容

smbclient -L //172.25.254.210 -U student

3.用smb身份登陆smb

 smbclient //172.25.254.210/student -U student

这里写图片描述
输入密码后,查看内容ls,我们发现系统提示访问被拒绝
4.这时我们考虑是sebool的问题,在服务端查看samba_enable_home_dirs的sebool值,并将其打开。

getsebool -a | grep samba  查看sebool值
setsebool -P samba_enable_home_dirs on 修改sebool值(-P表示永久设定)

这里写图片描述

这里写图片描述
5.重新在客户端以student身份登陆查看内容,成功

 smbclient //172.25.254.210/student -U student

这里写图片描述

二.smb用户上传文件与smb用户挂载

(一)smb用户上传文件
1.登陆smb上传文件

注意:上传的文件只能是现在所在目录中的文件,如现在所处位置是/etc,那么我们只能上传/etc下的文件,如果上传别的地方的文件,那么系统会提示找不到该文件。

 smbclient //172.25.254.210/student -U student     用student身份登陆smb
 !ls                                              显示该目录下的文件
 put passwd                                       上传passwd文件

这里写图片描述
上传完成之后,会在服务端的用户家目录中。
这里写图片描述

(二)smb用户挂载
1.我们之前用student用户查看,发现//172.25.254.210/student是一块磁盘,可以将其挂载在/mnt下

方法一:mount //172.25.254.210/student /mnt/ -o username=student,password=student

这里写图片描述

 方法二:先卸载上边的挂载
         编写自动挂载文件
         vim /etc/rc.d/rc.local
         mount //172.25.254.210/student /mnt -o username=student,password=student
             /mnt是挂载点,username是smb用户名称,password是该用户的密码
         chmod +x /etc/rc.d/rc.local
         reboot

2.df查看系统挂载情况,可以看到//172.25.254.210/student已经自动挂载在了/mnt下
这里写图片描述

三.smb用户的访问控制

1.查看smb的主配置文件

  rpm -qc samba-common

这里写图片描述
2.修改配置文件修改域名

第89行:workgroup = jay

3.添加白名单

第96行:hosts allow = 172.25.254.110  只允许172.25.254.110登陆访问,其余用户默认加入黑名单

这里写图片描述
白名单中的用户可以访问:
这里写图片描述
别的用户不可以访问:
这里写图片描述
4.添加黑名单

第96行:hosts deny = 172.25.254.110   不允许172.25.254.110登陆访问,其余用户默认加入白名单

四.在smb下共享目录

(一).共享自己创建的目录
1.建立目录

    mkdir /jay

2.修改该目录的安全上下文和smb服务的安全上下文保持一致

     semanage fcontext -a -t samba_share_t '/jay(/.*)?'

3.显示修改过程

     restorecon -RvvF /jay

4.修改主配置文件

    vim /etc/samba/smb.conf
         在最后添加[DIR]
                  comment = jay dir
                  path = /jay

这里写图片描述
5.重启服务

    systemctl restart sbm.service

6.在客户端登陆,查看是否能看到该目录

    smbclient -L //172.25.254.210/ -U student

这里写图片描述
(二).共享系统目录
1.修改主配置文件,在最后加上

      [mnt]
        comment = /mnt dir
        path = /mnt

这里写图片描述
2.在客户端能看到/mnt目录,但是不能看到/mnt里边的文件,修改selinux为警告模式,可以看到文件。如果将/mnt的安全上下文修改为samba_share_t,显然不太合适,因为/mnt是系统目录,还有别的用处。
3.在主配置文件中有关于该问题的说明,做如下设置

     setsebool -P samba_export_all_ro on

4.在客户端可以看到/mnt里边的文件

     smbclient //172.25.254.210/mnt -U student

这里写图片描述
(三).共享目录的功能设定
1.设定该目录是否可被浏览

     browseable = no(设定该目录不允许被浏览,该目录会被隐藏)
     browseable = yes(设定该目录允许被浏览,不隐藏)

这里写图片描述
2.设定该目录可以被写

    writeable = yes(允许所有用户可写),并且在服务端修改/jay的权限为777才可写
    mount //172.25.254.210/DIR /mnt -o username=student,password=student   将DIR挂载在/mnt
    touch /mnt/file     在/mnt下建立文件

这里写图片描述
3.设定指定用户可写

     write list = student                 指定student用户可写

这里写图片描述

 write list = +student或者@student     指定student组内成员可写
 usermod -G student jay               将jay加入到student组中
 mount //172.25.254.210/DIR /mnt -o username=jay,password=jay
 touch /mnt/file1     

这里写图片描述
这里写图片描述
4.设定指定用户为root用户

  admin users = jay  设定jay用户为DIR 的超级用户

这里写图片描述

五.smb的多用户挂载

1.在客户端安装多用户挂载的软件

  yum install cifs-utils

2.查看该软件的连机帮助

 man mount.cifs
  里边提到需要在多用户挂载时根据不同的版本号采取不同的加密方式,用rpm -qa |grep samba查看版本号

这里写图片描述
这里写图片描述
3.编写已知smb用户的认证文件

vim /root/smbpass
    usernmae=student
    password=student

4.挂载DIR

mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.210/DIR /mnt
  首先用/root/smbpass来认证,采取的加密方式为ntlmssp,采用多用户挂载

5.在别的未经认证的用户中不能看到/mnt里边的内容,如果想看,必须用smb用户加以认证

这里写图片描述

 su - hello
  cifscreds --help
  cifscreds: unrecognized option '--help'
  Usage:
    cifscreds add [-u username] [-d] <host|domain>       添加认证用户
    cifscreds clear [-u username] [-d] <host|domain>     清除指定已认证的用户
    cifscreds clearall                                   清除所有认证用户
    cifscreds update [-u username] [-d] <host|domain>    更新认证信息

  cifscreds add -u jay 172.25.254.210   认证jay用户
  如果在输入密码的时候输入错误,我们需要清除缓存,重新认证

这里写图片描述
6.jay用户认证之后可以看到/mnt底下的内容

六.smb的匿名访问

1.在客户端编写主编写配置文件

 vim /etc/samba/smb.conf
   第329行: guest ok = yes           允许guest用户访问
   第125行: map to guest = bad user  guest用户的映射是非系统用户

这里写图片描述
这里写图片描述
2.重启系统

  systemctl restart amb.service

3.在客户端匿名访问

smbclient //172.25.254.210/DIR  无密码,直接回车

这里写图片描述
4.在客户端匿名挂载

mount //172.25.254.210/DIR /mnt -o username=guest,password=""

这里写图片描述

猜你喜欢

转载自blog.csdn.net/jay_youth/article/details/80550775