两台虚拟机,均要检测

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 用户名

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



[root@server0 ~]# useradd -s /sbin/nologin harry

[root@server0 ~]# useradd -s /sbin/nologin kenji

[root@server0 ~]# useradd -s /sbin/nologin chihiro

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



[root@server0 ~]# pdbedit -a harry    #添加samba帐号,设置密码

[root@server0 ~]# pdbedit -a kenji    #添加samba帐号,设置密码

[root@server0 ~]# pdbedit -a chihiro  #添加samba帐号,设置密码


[root@server0 ~]# 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      #共享实际路径(绝对路径)


[root@server0 ~]# mkdir /common         #创建共享目录

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


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

[root@server0 ~]# systemctl restart smb

[root@server0 ~]# systemctl enable smb


虚拟机Desktop0

所需软件包:samba-client  


[root@desktop0 ~]# smbclient -L //172.25.0.11         #列出共享资源

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


[root@desktop0 ~]# 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 开关

[root@server0 ~]# getsebool -a | grep samba

samba_export_all_ro --> off

samba_export_all_rw --> off


setsebool 控制 SELinux 开关

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

[root@server0 ~]# setsebool  samba_export_all_ro=on   

[root@server0 ~]# getsebool -a | grep samba


虚拟机Desktop0

[root@desktop0 ~]# 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   


[root@desktop0 ~]# mkdir /mnt/samba      #创建挂载点目录

[root@desktop0 ~]# 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可写


[root@server0 /]# mkdir /devops

[root@server0 /]# echo hahaxixi > /devops/123.txt

2.重起smb服务

[root@server0 ~]# systemctl restart smb


3.客户端验证:

[root@desktop0 ~]# smbclient  -L   172.25.0.11

Enter root's password: 


4.客户端挂载验证

[root@desktop0 ~]# mkdir /mnt/dev       #创建挂载目录

[root@desktop0 ~]# vim /etc/fstab 

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

[root@desktop0 ~]# mount -a     #很卡,在server0上重起smb服务

[root@desktop0 ~]# df -h


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

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


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

    1.防火墙是否限制

    2.服务本身的访问控制

    3.SELinux 是否限制 

    4. 服务端目录本地权限


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

[root@server0 /]# getsebool -a | grep samba

[root@server0 /]# setsebool samba_export_all_rw=on

[root@server0 /]# getsebool -a | grep samba


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


二、目录本地权限

[root@server0 /]# ls -ld /devops/

[root@server0 /]# setfacl -m u:chihiro:rwx /devops/

[root@server0 /]# getfacl   /devops/


三、客户端验证

[root@desktop0 ~]# touch /mnt/dev/test.txt


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

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



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


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

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


客户端完成:

[root@desktop0 /]# vim  /etc/fstab

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


[root@desktop0 /]# umount /mnt/dev/

[root@desktop0 /]# mount -a

[root@desktop0 /]# df -h


[root@desktop0 /]# su - student

[student@desktop0 dev]$ cd /mnt/dev

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

Password: 

[student@desktop0 dev]$ ls

[student@desktop0 dev]$ touch abc.txt      #写测试

[student@desktop0 dev]$ ls          #验证结果

abc.txt

[student@desktop0 dev]$ exit

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

 配置NFS共享


Network File System,网络文件系统

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

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


所需软件包: nfs-utils

系统服务: nfs-server


搭建基本的只读NFS服务

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

[root@server0 /]# rpm -q nfs-utils


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

[root@server0 /]# mkdir /public              #创建共享文件夹目录

[root@server0 /]# echo hehelele > /public/nsd.txt

[root@server0 /]# vim /etc/exports


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

 

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

[root@server0 /]# systemctl restart  nfs-server

[root@server0 /]# systemctl enable  nfs-server


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

[root@desktop0 /]# mkdir /mnt/nfs                      #创建挂载点

[root@desktop0 /]# showmount -e 172.25.0.11                    #列出有哪些NFS共享资源

[root@desktop0 /]# vim /etc/fstab 


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


[root@desktop0 /]# mount -a

[root@desktop0 /]# ls  /mnt/nfs

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


  读写nfs-server服务


一.客户端root用户的读写

服务端:

[root@server0 /]# mkdir /abc

[root@server0 /]# echo 123 > /abc/a.txt

[root@server0 /]# vim /etc/exports

  /abc   172.25.0.0/24(rw)


[root@server0 /]# systemctl restart nfs-server


客户端:

[root@desktop0 /]# vim /etc/fstab 

追加写入

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


[root@desktop0 /]# mkdir /mnt/nsd

[root@desktop0 /]# mount -a

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



服务端:

[root@server0 /]# vim /etc/exports

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


[root@server0 /]# systemctl restart nfs-server


客户端:


[root@desktop0 /]# systemctl  restart nfs  #重起客户端服务

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

                            

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

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

  

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

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

举例:客户端用户A的UID为1000,服务端只以本地UID为1000的用户进行权限判定!


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

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



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

  

  # lab nfskrb5 setup


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

[root@server0 ~]# mkdir /test

[root@server0 ~]# 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用户有写权限,设置本地权限

[root@server0 ~]# setfacl -m u:ldapuser0:rwx /test

[root@server0 ~]# getfacl /test


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

[root@desktop0 ~]# showmount -e 172.25.0.11

[root@desktop0 ~]# mkdir /mnt/nfs

[root@desktop0 ~]# 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验证)

[root@desktop0 ~]# mount -a

[root@desktop0 ~]# df -h


[root@desktop0 ~]# ssh  ldapuser0@127.0.0.1


[ldapuser0@desktop0 ~]$ cd /mnt/nfs/

[ldapuser0@desktop0 nfs]$ touch 1.txt

[ldapuser0@desktop0 nfs]$ ls

1.txt

[ldapuser0@desktop0 nfs]$ exit