基于linux下的cifs文件系统

###################1.cifs简介##################################################

CIFS(Common Internet File System)

通用网络文件系统

CIFS是针对Microsoft Windows操作系统的本地网络文件系统,linux系统可以挂载和访问CIFS文件共享,如同常见的网络文件系统一样。然而,由于CIFS是基于NTFS文件系统权限模型及其自身的身份验证系统来构建的,因而CIFS协议中的所有内容并不能很好的映射到linux中。

windows主机之间进行网络文件共享,通过使用微软公司自己的cifs服务实现。

1.CIFS系统:Internet文件共享系统,也称服务器信;适用于MicrosoftWindows服务器和客户端的标准文件和打印机的共享系统息块(SMB)

2.Samba服务:用于将linux文件系统作为CIFS/SMB网络文件进行共享,并将linux打印机作为CIFS/SMB打印机进行共享

######网络共享方式cifs,主要用于windows

#######################2.samba的基本配置和登陆访问 ######################################

环境:重置两台虚拟机

IP,改主机名称,改yum源,

desktop————————名字:client     ip:104         作为 客户端

server—————————名字:server    ip:204         作为服务端

服务端:yum search samba

              yum install samba samba-client samba-common -y 安装(common 提供文件)

systemctl start smb 打开smb服务

syatemctl enable smb 开机自开启

systemctl stop firewalld 关闭火墙

systemctl disable firewalld 开机自关闭

netstat -antlpue | grep smb 查看smb的端口

              基于linux下的cifs文件系统

               基于linux下的cifs文件系统

       smb服务的端口为:139和445.可用netstat -antlupe | grep smb查看

              基于linux下的cifs文件系统

            smb无用户,客户端smbclient -L //172.25.254.204可直接进入,

                [[email protected] ~]# systemctl start smb

               [[email protected] ~]# smbclient -L //172.25.254.108

               Enter root's password:

                      Anonymous login successful

                     Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

                    Sharename       Type      Comment

                        ---------       ----      -------

                    IPC$            IPC       IPC Service (Samba Server Version 4.1.1)

                    Anonymous login successful

                    Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

                    Server               Comment

                    ---------            -------

                    Workgroup            Master

                     ---------            -------

                    基于linux下的cifs文件系统

    如何添加smb用户:

              smb的存在在真实用户基础之上,所有的smb用户必须是本地存在的用户,不然无法添加。

               smbpasswd -a student            ---------添加student用户

               pdbedit -L                              ---------- 查看所有smb用户

               pdbedit -x student                 ----------- 删除指定smb用户

                基于linux下的cifs文件系统

在服务端开启服务:getsebool -a | grep samba

                            setsebool -P samba_enable_home_dirs on  -P表示永久打开

                            基于linux下的cifs文件系统

  客户端:yum install samba-client -y

          smbclient -L //172.25.254.204     -----------匿名用户查看

          smbclient -L //172.25.254.204 -U student      ---------看看student用户(指定用户登陆,有密码,自己设置的)

          smbclient //172.25.254.204/student -U student        -------(指定用户查看指定文件)

           在客户端被拒绝了,这是就要在服务端开启smb服务的开关。

            基于linux下的cifs文件系统

########永久挂载#############

在客户端:

  pwd

  ls

  cd /etc/

  用户登陆:smbclient //172.25.254.204/student -U student

  smb: \> !ls    !ls显示/etc/下的所有文件

基于linux下的cifs文件系统

  get passwd     在客户端上传

  mount //172.25.254.204/student /mnt/ -o username=student,password=redhat  挂载

  df   查看

  基于linux下的cifs文件系统

  如何永久挂载:

     法一:vim /etc/fstab

   //172.25.254.204/student /mnt cifs  defaults,username=student,password=redhat 0 0

    基于linux下的cifs文件系统

    mount -a

    df   已经挂载

    解除挂载,reboot后,再df查看

    法二:vim /etc/rc.d/rc.local

    mount -o username=student,password=redhat //172.25.254.204/student /mnt  ——————最佳写法

     基于linux下的cifs文件系统

注意:/etc/rc.d/rc.local为一个脚本文件,此文件起始有#!/bin/bash

chmod +x /etc/rc.d/rc.local

sh /etc/rc.d/rc.local     -----执行这个脚本文件

df

umount /mnt/

reboot后,再df查看

在服务端:

  查看是否上传成功:cd /home/student   ----上传的文件存在于这个目录

  ls     查看到passwd

########更改组名#######  

在客户端通过smbclient -L //172.25.254.204 可以看到组名,那么如何更改呢?

查找配置文件:rpm -qc samba-common

基于linux下的cifs文件系统

vim /etc/samba/smb.conf

更改89行:workgroup=WESTOS  ____改组名

基于linux下的cifs文件系统

通过smbclient -L //172.25.254.200再次查看更改后的组名。

基于linux下的cifs文件系统

#######黑白名单######

vim /etc/samba/smb.conf

更改(添加)98行:hosts allow=172.25.254.100   ————白名单

或者更改(添加):hosts deny=172.24.254.100 --------黑名单

 基于linux下的cifs文件系统

 

########目录共享######

1)不存在的目录

  服务端:

  mkdir  /linux/

  semanage fcontext -a -t samba_share_t 'linux(/.*)?'       -----修改安全上下文

seamanage fcontext -l | grep /linux      基于linux下的cifs文件系统

  restorecon -FvvR /linux/               ------刷新安全上下文

  基于linux下的cifs文件系统

  vim /etc/samba/smb.conf

  编写:321        [DIR]

       322        comment=linux dir

       323        path=/linux

基于linux下的cifs文件系统

  systemctl restart smb.service

客户端:smbclient -L //172.25.254.204/DIR   ——————可以看到DIR目录

smbclient //172.25.254.204/DIR -U student  ————登陆

基于linux下的cifs文件系统


(2)存在的目录       注意:不能使用修改安全上下文的方式(修改之后系统的其他服务不能访问) 

服务端:vim /etc/samba/smb.conf

再之前基础添加:

      [mnt]

      comment=/mnt dir

      path=/mnt

:wq

基于linux下的cifs文件系统

 systemctl restart smb.service

touch /mnt/file{1..5}

客户端在setenforce 0 可以看到文件file{1..5】

             setenforce 1 不可以看到file{1..5}

可以在服务端永久打开服务:setsebool -P samba_export_all_ro on

客户端再次查看可以有file{1..5}

 

######smb用户的可写权限 ########

服务端:

       vim /etc/samba/smb.conf

       目录下添加:browseable=yes        ###是否显示共享目录

       systemctl restart smb.service

        基于linux下的cifs文件系统

 

       vim /etc/samba/smb.conf

       添加:writable=yes    ###所有用户具备权限

       可不用重启服务

       chmod 777 /linux/(不安全) 

       

 

       vim /etc/samba/smb.conf

       添加: write list=+/@student   ----student用户组可写

       systemctl restart smb.service

       

        

       vim /etc/samba/smb.conf  

       添加:admin users=westos  ——————westos用户可在此目录以root用户权限

        systemctl restart smb.service

       基于linux下的cifs文件系统 

#######smb的多用户挂载###

在客户端进行

yum install cifs-utils -y

man mount.cifs     ---------查看如何使用

vim /root/smbpass    ——————编写用于认证的用户和密码

写入:username=student

     password=redhat

mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.204/DIR /mnt

----sec是认证方式,multiuser是多用户

基于linux下的cifs文件系统

cd /mnt/

ls

su - test

cifscreds add -u westos 172.25.254.204    test用户不能直接认证,通过westos用户在此目录中的超级用户身份进行认证

若输入密码错误,不能进行认证,因为内存中已经有了一个错误认证,要清除这个认证

cifscreds clearall

cifscreds add -u westos 172.25.254.204重新认证

认证正确后,可touch /mnt/file5

然后:ll /mnt/

会看到新建文件所有人为root(因为用户认证的westos用户在此目录具有root身份)

所有组为用户自身test;

基于linux下的cifs文件系统

基于linux下的cifs文件系统

df查看已经挂载完成

 基于linux下的cifs文件系统

######匿名用户挂载#####

在服务端:

   vim /etc/samba/smb.conf

   写入:328    guest ok=yes

            125    map to guest=bad user    ##匿名用户映射为guest

            :wq

      基于linux下的cifs文件系统

      

在客户端:

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

  基于linux下的cifs文件系统

   df 可查看通过匿名用户已成功挂载

 基于linux下的cifs文件系统