Linux从入门到精通——cifs文件系统

###cifs文件系统##


适用于客户,用于windows和linux之间的文件共享。
用internet文件系统(cifs)也称为 common internet file system

1.想要使用共享,就要下载samba
   yum install samba samba-client samba-common -y
   systemctl start smb
   systemctl stop firewalld

   smbclient -L //172.25.254.110       ##匿名用户显示共享的内容
                             ##匿名用户没有密码直接回车
   pdbedit -L             ##显示smd用户
   smbpasswd -a student        ##需要输入密码,必须是本地存在的用户,不存在的用户会添加失败
   pdbedit -L               ##查看smb用户是否建立成功
   pdbedit -X studnet          ##删除smb用户
  
2.访问(selinux关闭时前提)

 需要本地主机解析   vim /etc/hosts
           172.25.254.110  student.example.com

   在windows里面想要访问:在搜索中输入172.25.254.100
                       输入存在用户密码和姓名 
                       就可以访问家目录了

   在linux中:
   smbclient //172.25.254.110/student -U student
   输入密码
   ls                ##显示服务器信息
   !ls            ##显示student家目录的信息
   smb:> put /etc/passwd     ##只能上传当前目录的文件,不能识别绝对路径
   被拒绝了
      

   mount //172.25.254.110/studnet /mnt/ -o username=student,password=student(文件系统就可以挂载)  ##暂时挂载

   永久挂载:
   vim /etc/fstab
   mount //172.25.254.110/studnet /mnt/ -o username=student,password=student
   mount -a                    ##更新挂载信息
   cd /mnt 
   touch file{1..3}           ##这样就可以建立文件

   vim /etc/samba/smb.conf
    hosts allow = 172.25.254.110  ##白名单
    hosts deny = 172.25.254.10    ##黑名单
   systemctl restart smb
      

      

      

3.共享文件(先开启selinux,改为enforcing)

   rpm -qc samba-common
   /etc/samba/smb.conf      ##samba的配置文件

   (1)共享自己建立的目录及文件
   建立自己的目录
   mkdir /westos
   cd /westos
   touch file{1..3}

   vim /etc/samba/smb.conf    ##开启 westos 共享
    [westos]
    comment = dir from /wesots
    path = /westos
   systemctl restart smb
   当selinux为disabled,就可以查看
        


  semanage fcontext -a -t samda_share_t '/westos(/.*)?' ##修改安全上下文
  restorecon -RvvF /westos/ 
         

   smbclient //172.25.254.110/westos -U student
   !ls   ##查看不了
      

   setenforce 0
   getenforce   --> permissive
        

   smbclient //172.25.254.110/westos -U student
   ls   ##可以查看,所以说就是selinux的问题
   setenforce 1
   setsebool -P use_samba_home_dirs on
   ls    ##这样也就可以看了,在强制情况下
         


   (2)共享系统目录及其文件


   注意:有些安全上下文不能更改,比如系统文件,更改之后就只能smb读取


    vim /etc/samba/smb.conf    ##开启 westos 共享
    [mnt]
    comment = dir from /mnt
    path = /mnt
   systemctl restart smb
      

       

      

   setsebool -P export_all_ro(rw) on    ##这个开启后,安全上下文就不会被对比,直接可以查看,这个要打开,要不下面挂载到/mnt下后,touch不了文件

       

      

4.指定用户查看共享目录
    vim /etc/samba/smb.conf    ##开启 westos 共享
    [westos]
    comment = dir from /wesots
    path = /westos
    valid users = westos  ##指定westos能够查看共享(挂载)
    valid users = @(+)westos  ##属于westos组的可以查看共享(挂载)
    writable = yes     ##是否可写
    write list = westos  ##指定用户可写
    guest ok = yes     ##匿名用户可以查看共享
    (map to guest = bad user)
    browseable = no    ##是否能够显示 -L的时候看不见可用,但是可以用
    admin users = westos ##westos用户在执行的时候是超级用户身份
   systemctl restart smb
      

      

5.多用户挂载


如果root用户挂载以后,切换到kiosk用户,kiosk用户进入到mnt下,也可以查看
为了防止这样(超级用户挂载以后退出,没有卸载,普通用户也能查看)

   yum install cifs-utils -y  ##如果以及nothing to do的话,那search一下,然后reinstall一下
   vim /root/smbauth
    username=studnet
    password=student
   chmod 777 /westos
   mount //172.25.254.110/westos /mnt multiuser,credentials=/root/smbauth,sec=ntlmssp

   测试:
   切换到root用户:
   mount //172.25.254.110/westos /mnt multiuser,credentials=/root/smbauth,sec=ntlmssp
   touch file    ##root用户是用student用户挂载的,touch的文件所有组和所有人显示的是kiosk用户,是因为真机的kiosk用户和虚拟机里smb的student用户的id是一样的。

      
   su - kiosk
   cd /mnt/   
   ls      ##查看不了
   cifscreds add -u westos 172.25.254.110  ##用存在用户身份登陆
   touch file    ##kiosk用户是用westos用户挂载的,touch的文件所有组和所有人显示的是student用户,是因为真机的student用户和虚拟机里smb的westos用户的id是一样的。
      

   注意:遇见了一个问题touch不了文件
   解决方法:(1)查看sebool是否export_all_ro(rw)是on
       (2)查看/westos目录的权限要改为777
       (3)查看配置文件里面的writable是否为yes

6.nfs  (linux对linux共享文件用 nfs)
   yum install nfs-utils -y
   yum list nfs-utils
   yum reinstall nfs-utils -y
   showmount -e 172.25.254.110     ##显示没有共享项目
   systemctl start nfs
   showmount -e 172.25.254.110 
   Export list for 172.25.254.110:     ##刷新一下会自动出来

   vim /etc/exports
    /westos     *(sync)
   exportfs -rv      ##这个不能重启服务

   showmount -e 172.25.254.110 
   Export list for 172.25.254.110:  
   /westos *
      

   测试:
   su - root
   mount 172.25.254.110:/westos /mnt/    ##临时挂载
   df

   vim /etc/fstab
    172.25.254.100:/westos /mnt nfs defaults 0 0
   mount -a
   df

6.自动挂载和卸载
   nfs可以用时自动挂载,不用时自动卸载,防止资源浪费
   yum install autofs.x86_64 -y
   ls -ld /net   ##没有这个文件
   systemctl start autofs
   ls -ld /net   ##文件就存在
         

   更改更新时间 vim /etc/sysconfig/autofs
          TIMEOUT=5    ##更新时间为5s
          systemctl restart autofs
      

   cd /net
   cd 172.25.254.110
   ls               ##有一个westos文件
   cd westos/
   ls               ##有四个file文件
   df               ##自动挂载到/net/172.25.254.110/westos
   cd
   df               ##等待足够设定时间,自动卸载设备
      

      

7.更改默认挂载点
   vim /etc/auto.master        ##配置文件
   /opt/nfs    /etc/auto.nfs   ##上级目录+最终挂载点的设定文件,需要自己建立

      

   vim /etc/auto.nfs
    westos -ro 172.25.254.110:/westos
   systemctl start autofs
         

   cd /opt/nfs/westos      ##nfs目录是自动生成的,在自动挂载时自动生成,自动卸载后消失
   df       ##自动挂载
      

   vim /etc/auto.nfs
    westos -rw,vers=3  (版本改为3,有2,3,4三个版本)  172.25.254.110:/westos
   systemctl start autofs

8.对权限的更改


   (1)设备挂载上后,查看的用户删除或添加不了文件,显示的是文件是只读的
   vim /etc/experts
    /westos   *(rw,sync)
   exportfs -rv

   (2)建立文件的时候,用户默认是nfsnobody,可以指定用户或用户组
   vim /etc/experts
    /westos   *(rw,sync,anonuid=1000)
   exportfs -rv

   (3)建立文件的时候,用户或用户组不更改,仍为root
 vim /etc/experts
    /westos   *(rw,sync,no_root_sqush)
   exportfs -rv

   (4)设定某一用户的特殊权限
 vim /etc/experts
    /westos   *(sync)  172.25.254.10(rw,sync,no_root_sqush)
   exportfs -rv
 

原文地址:https://www.cnblogs.com/wf-aiyouwei/p/9480270.html