linux学习笔记-工程师技术:SMB共享NFS共享

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux学习笔记-工程师技术:SMB共享NFS共享相关的知识,希望对你有一定的参考价值。

两台虚拟机,均要检测

1. Yum是否可用

2.  防火墙默认区域修改为trusted

3. IP地址是否配置

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

samba 文件共享(共享文件夹)


Samba 软件项目

– 用途:为客户机提供共享使用的文件夹

– 协议:SMB(TCP 139)、CIFS(TCP 445)


所需软件包:samba

系统服务:smb




一、搭建基本samba服务

1.安装samba软件包

2.创建samba的共享帐号。与系统相同用户名,不同密码

·samba用户:专门用来访问共享文件的用户

   -采用独立设置的密码

   -提前创建同名的系统用户,可以不设密码


·pdbedit管理工具

  -添加用户:pdbedit -a 用户名

  -查询用户:pdbedit -L 用户名

  -删除用户:pdbedit -x 用户名

若密码设错了,可以先删除再添加



[[email protected] ~]# useradd -s /sbin/nologin harry

[[email protected] ~]# useradd -s /sbin/nologin kenji

[[email protected] ~]# useradd -s /sbin/nologin chihiro

#添加用户,但不能访问本地系统用户,只供访问共享服务



[[email protected] ~]# pdbedit -a harry    #添加samba帐号,设置密码

[[email protected] ~]# pdbedit -a kenji    #添加samba帐号,设置密码

[[email protected] ~]# pdbedit -a chihiro  #添加samba帐号,设置密码


[[email protected] ~]# pdbedit -L        #列出所有有效的samba帐号

harry:1001:

chihiro:1003:

kenji:1002:



3.修改服务配置文件 /etc/samba/smb.conf

 

   补充:vim   末行模式(Esc   :)   set  nu  显示行号


    89行          workgroup = STAFF   #可不做修改

末行插入:

    321行     [common]                          #共享名

    322行        path = /common      #共享实际路径(绝对路径)


[[email protected] ~]# mkdir /common         #创建共享目录

[[email protected] ~]# echo haha > /common/abc.txt     #重定向写入共享文本


4. 重起smb服务,设置为开机自起

[[email protected] ~]# systemctl restart smb

[[email protected] ~]# systemctl enable smb


虚拟机Desktop0

所需软件包:samba-client  


[[email protected] ~]# smbclient -L //172.25.0.11         #列出共享资源

Enter root‘s password:                          #直接回车不需密码


[[email protected] ~]# smbclient -U harry //172.25.0.11/common      #连接到共享文件夹

Enter harry‘s password: 

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

smb: \> ls         #不能访问到,因为SElinux访问权限限制

NT_STATUS_ACCESS_DENIED listing \*      #之前要将selinux权限设置为enforcing


思路:客户端访问服务端资源

    1.防火墙是否限制

    2.服务本身的访问控制

    3.SELinux 是否限制 


  SELinux:  布尔值  (功能的开关)


getsebool 查看 SELinux 开关

[[email protected] ~]# getsebool -a | grep samba

samba_export_all_ro --> off

samba_export_all_rw --> off


setsebool 控制 SELinux 开关

– 需要加 -P 选项才能实现永久设置,教学环境中可以不用加-P,因为永久设置会占用内核资源有点卡

[[email protected] ~]# setsebool  samba_export_all_ro=on   

[[email protected] ~]# getsebool -a | grep samba


虚拟机Desktop0

[[email protected] ~]# smbclient -U harry //172.25.0.11/common

Enter harry‘s password: 

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

smb: \> ls           #此时能访问到共享文件

  .                                   D        0  Mon Nov  6 19:47:57 2017

  ..                                  D        0  Mon Nov  6 19:47:54 2017

  abc.txt                             N        5  Mon Nov  6 19:47:57 2017


40913 blocks of size 262144. 28569 blocks available



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

使用mount挂载

所需软件包:cifs-utils

  _netdev: 开启网络服务后再挂载该设备



虚拟机desktop0

1.安装软件包cifs-utils

2.修改/etc/fstab   


[[email protected] ~]# mkdir /mnt/samba      #创建挂载点目录

[[email protected] ~]# vim /etc/fstab         #设置开机自动挂载

//172.25.0.11/common /mnt/samba cifs user=harry,pass=123,_netdev 0  0


3. mount -a  验证

   df   -h   #查看挂载信息




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

 Samba读写的共享


虚拟机server0上

1.修改配置文件/etc/samba/smb.conf


 [devops]

   path = /devops

   write list = chihiro       #允许chihiro对共享文件/devops可写


[[email protected] /]# mkdir /devops

[[email protected] /]# echo hahaxixi > /devops/123.txt

2.重起smb服务

[[email protected] ~]# systemctl restart smb


3.客户端验证:

[[email protected] ~]# smbclient  -L   172.25.0.11

Enter root‘s password: 


4.客户端挂载验证

[[email protected] ~]# mkdir /mnt/dev       #创建挂载目录

[[email protected] ~]# vim /etc/fstab 

//172.25.0.11/devops /mnt/dev cifs user=chihiro,pass=123,_netdev 0  0

[[email protected] ~]# mount -a     #很卡,在server0上重起smb服务

[[email protected] ~]# df -h


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

实现读写Samba共享的其他操作


思路:客户端访问服务端资源

    1.防火墙是否限制

    2.服务本身的访问控制

    3.SELinux 是否限制 

    4. 服务端目录本地权限


一、修改服务端SELinux布尔值,开放读写

[[email protected] /]# getsebool -a | grep samba

[[email protected] /]# setsebool samba_export_all_rw=on

[[email protected] /]# getsebool -a | grep samba


#客户端desktop0上写不了,/mnt/dev下创建不了文档,因为服务端目录本地权限受限


二、目录本地权限

[[email protected] /]# ls -ld /devops/

[[email protected] /]# setfacl -m u:chihiro:rwx /devops/

[[email protected] /]# getfacl   /devops/


三、客户端验证

[[email protected] ~]# touch /mnt/dev/test.txt


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

共享文件的方式有4种:samba,nfs,http,ftp 



multiuser多用户访问(只需了解,只支持普通用户)


– multiuser,提供对客户端多个用户身份的区分支持

– sec=ntlmssp,提供NT局域网管理安全支持


客户端完成:

[[email protected] /]# vim  /etc/fstab

//172.25.0.11/devops /mnt/dev cifs  user=kenji,pass=123,_netdev,multiuser,sec=ntlmssp 0  0    #不是追加写 


[[email protected] /]# umount /mnt/dev/

[[email protected] /]# mount -a

[[email protected] /]# df -h


[[email protected] /]# su - student

[[email protected] dev]$ cd /mnt/dev

[[email protected] dev]$ cifscreds add -u chihiro 172.25.0.11   #使用cifscreds提交新的用户凭据并测试

Password: 

[[email protected] dev]$ ls

[[email protected] dev]$ touch abc.txt      #写测试

[[email protected] dev]$ ls          #验证结果

abc.txt

[[email protected] dev]$ exit

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

 配置NFS共享


Network File System,网络文件系统

– 用途:为客户机提供共享使用的文件夹

– 协议:NFS(TCP/UDP 2049)、RPC(TCP/UDP 111)


所需软件包: nfs-utils

系统服务: nfs-server


搭建基本的只读NFS服务

1.在虚拟机server0上,检测nfs-utils是否安装

[[email protected] /]# rpm -q nfs-utils


2.修改配置文件/etc/exports

[[email protected] /]# mkdir /public              #创建共享文件夹目录

[[email protected] /]# echo hehelele > /public/nsd.txt

[[email protected] /]# vim /etc/exports


/public   172.25.0.0/24(ro)             #文件夹路径    客户端地址(权限)

 

3.重起nfs-server服务,设置开机自起

[[email protected] /]# systemctl restart  nfs-server

[[email protected] /]# systemctl enable  nfs-server


4.客户端  访问nfs-server服务

[[email protected] /]# mkdir /mnt/nfs                      #创建挂载点

[[email protected] /]# showmount -e 172.25.0.11                    #列出有哪些NFS共享资源

[[email protected] /]# vim /etc/fstab 


 172.25.0.11:/public /mnt/nfs  nfs  _netdev 0 0


[[email protected] /]# mount -a

[[email protected] /]# ls  /mnt/nfs

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


  读写nfs-server服务


一.客户端root用户的读写

服务端:

[[email protected] /]# mkdir /abc

[[email protected] /]# echo 123 > /abc/a.txt

[[email protected] /]# vim /etc/exports

  /abc   172.25.0.0/24(rw)


[[email protected] /]# systemctl restart nfs-server


客户端:

[[email protected] /]# vim /etc/fstab 

追加写入

172.25.0.11:/abc /mnt/nsd  nfs  _netdev 0 0


[[email protected] /]# mkdir /mnt/nsd

[[email protected] /]# mount -a

[[email protected] /]# df -h        #没有显示abc的挂载点,改为df -ah



服务端:

[[email protected] /]# vim /etc/exports

/abc   172.25.0.0/24(rw,no_root_squash)    #不压榨客户端root权限             (?看视频)


[[email protected] /]# systemctl restart nfs-server


客户端:


[[email protected] /]# systemctl  restart nfs  #重起客户端服务

[[email protected] /]# touch /mnt/nsd/5.txt    #前面服务端压榨客户端root权限就不能创建

                            

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

二、普通用户(必须还原环境)

  

     客户端普通用户访问服务端nfs-server服务,

     服务端会以客户端相同UID身份的本地用户进行权限判定


    LDAP :  网络用户,提供用户名

    kerberos : 密码验证,实现“一次密码认证,多次免密登录”的通行证机制



1.两台虚拟机都运行脚本,加入LDAP与kerberos

  

  # lab nfskrb5 setup


2.服务端修改配置文件,创建读写的共享

[[email protected] ~]# mkdir /test

[[email protected] ~]# vim /etc/exports


   /test  *(rw,sec=krb5p)


3.服务端部署加密的密钥

# wget http://172.25.254.254/pub/keytabs/server0.keytab  -O /etc/krb5.keytab


# ls  /etc/krb5.keytab


4.服务端 重起 nfs-server 与 nfs-secure-server 


# systemctl restart  nfs-server  nfs-secure-server 


5.服务端保证ldapuser0用户有写权限,设置本地权限

[[email protected] ~]# setfacl -m u:ldapuser0:rwx /test

[[email protected] ~]# getfacl /test


6.客户端访问与挂载共享

[[email protected]0 ~]# showmount -e 172.25.0.11

[[email protected] ~]# mkdir /mnt/nfs

[[email protected] ~]# vim /etc/fstab 


 172.25.0.11:/test  /mnt/nfs  nfs  _netdev,sec=krb5p  0  0


7.客户端部署密钥文件,重起相关的服务

# wget http://172.25.254.254/pub/keytabs/desktop0.keytab  -O /etc/krb5.keytab


# systemctl restart nfs nfs-secure


8.客户端验证挂载,写入(必须采用ssh方式,su不经过kerberos验证)

[[email protected] ~]# mount -a

[[email protected] ~]# df -h


[[email protected] ~]# ssh  [email protected]


[[email protected] ~]$ cd /mnt/nfs/

[[email protected] nfs]$ touch 1.txt

[[email protected] nfs]$ ls

1.txt

[[email protected] nfs]$ exit


以上是关于linux学习笔记-工程师技术:SMB共享NFS共享的主要内容,如果未能解决你的问题,请参考以下文章

配置SMB共享 配置NFS共享

Samba服务

Linux运维之道之ENGINEER1.3(配置SMB共享,配置NFS共享)

Windows上面挂载NFS共享

linux之使用samba实现文件共享

Samba或NFS实现文件共享