RH254-第二十五节-Samba和NFS以及Iscsi服务

samba文件共享

能在linux与windows之间进行文件案共享
通用Internet文件系统(CIFS)也称为服务器信息块(SMB),是适用于Microsoft
Windows服务器和客户端的标准文件和打印机共享系统。
Samba服务可用于将Linux文件系统作为CIFS/SMB网络文件共享进行共享,并将Linux
打印机作为CIFS/SMB打印机共享进行共享。

服务器安装及基本调试

服务器ip:172.25.254.223
hostnamectl set-hostname samba.example.com
yum install samba-client samba-common samba -y
systemctl stop firewalld.service
setsebool -P samba_enable_home_dirs on
systemctl start smb
smbpasswd -a student ##student用户必须是本机存在的用户、
##不能添加系统不存在的用户:
********************
[root@localhost ~]# smbpasswd -a peter (或者pdbedit -a )
New SMB password:
Retype new SMB password:
Failed to add entry foR user peter. ##添加的用户必须是系统中真是存在的不存在会报错
pdbedit -L ##列出smb用户
pdbedit -x student ##删除smb用户
pdbedit -L
smbpasswd -a student

测试(ip:172.25.254.223):
smbclient -L //172.25.254.223 -U student ##列出共享目录的信息
smbclient //172.25.254.223/student -U student ##进入共享目录,默认共享的是登陆用户家目录
如果出现以下报错:
[root@desktop ~]# smbclient -L //172.25.254.223 -U student
Enter students password:
protocol negotiation failed: NT_STATUS_IO_TIMEOUT
解决方法:
服务器/etc/hosts 下加上服务器ip和名字

samba共享目录

 cd /
 mkdir westos
 cd westos/
 touch file{1..10}
 ls
 vim /etc/samba/smb.conf
 ---------
    [westos1]            ##共享目录的名字(自己定义)
    comment = local directory westos    ##共享说明
    path = /westos      ##文件路径
 --------- 
 systemctl restart smb

测试(ip:172.25.254.223):

 smbclient -L //172.25.254.223 -U student
 vim /etc/samba/smb.conf 
 smbclient  //172.25.254.223/westos -U student


 登陆上去之后不能ls查看   因为selinux标签没有改变

` semanage  fcontext -a -t samba_share_t '/westos(/.*)?'     
 restorecon  -FvvR /westos/`

 smbclient  //172.25.254.223/westos -U student
              此时登陆上去之后ls能查看到目录下的文件

 vim /etc/samba/smb.conf
           ----------
    [linux]
    comment = local directory westos
    path = /linux
           -----------

 systemctl restart smb
 smbclient -L //172.25.254.223 -U student
 cd /
 mkdir linux
 touch linux/tong

 **共享 系统建立的目录时需要修改的selinux sebool属性,此方式修改针对所有目录,
         一旦开放,selinux标签不再保护目录访问
 setsebool -P samba_export_all_rw on           ##可以读写 
 setsebool -P samba_export_all_ro on           ##只读
 smbclient  //172.25.254.223/linux -U student

 用户要在共享目录下建立文件夹(拥有写权限)必须具备三点:
       1>服务器分享的目录具有写权限
 2>selinux sebool 开启写权限
 3>samba配置文件里添加了允许写的参数(samba服务允许写的权力)

smb: > ls
. D 0 Mon Mar 20 16:42:45 2017
.. D 0 Mon Mar 20 15:59:53 2017
ss D 0 Mon Mar 20 16:41:20 2017
gile N 0 Mon Mar 20 16:42:09 2017

##服务器自己建立的文件或目录显示的是 N 通过samba服务在共享目录下建立的文件或目录显示的是 D
这里写图片描述
这里写图片描述
这里写图片描述

匿名访问

vim /etc/samba/smb.conf
------------
 125         map to guest = bad user     ##所有未认证的用户影射为guest(给guest一个身份)

[share]
comment = samab share dir
path = /samba/
guest = ok
writable = yes
browseable = yes
这里写图片描述

samba共享目录的管理参数

vim /etc/samba/smb.conf
-----------------
    [westos]
    comment = local directory westos
    path = /westos
    guest ok = yes
    writeable = yes             ##允许所有人可写
 #  write list = yang           ##只允许用户yang可写
 #  write list = @yang          ##只允许用户组yang可写
 #  valid users = yang          ##只允许用户yang登陆
 #  valid users = +yang         ##只允许用户组yang登陆
 #  browseable = no             ##是否显示本共享目录
 #  admin users = yang          ##让yang用户拥有超级用户权限
------------------

systemctl restart smb

  • usermod -G yang student ##将student加到用户组yang中
  • usermod -G “” student

    测试(ip:172.25.254.223):
    mount //172.25.254.223/westos /mnt -o password=yang,username=yang

5>多用户挂载

yum install cifs-utils -y
vim /root/passfile

 username=yang
 password=yang

mount //172.25.254.223/westos /mnt -o credentials=/root/passfile,multiuser,sec=ntlmssp

su - yang        ##与passfile文件里用户同名
 ls /mnt
 cifscreds add 172.25.254.223
 ls /mnt         ##查看成功

su - kiosk       ##与passfile文件里用户不同名
 ls /mnt         ##查看不成功 
 cifscreds add 172.25.254.223
 ls /mnt         ##查看不成功      

自动挂载(autofs服务)

autofs与mount/unmount不同之处在于,他是一种服务程序。如果它检测到用户正试图访问一个尚未挂载的文件系统,
它就会自动检测该文件系统,如果存在,那么autofs会自动将其挂载。另一方面,如果它检测到某个已挂载的文件系统
在一段时间内没有被使用,那么autofs会自动将其卸载,因此,一旦运行了autofs之后,用户就不用手动完成文件系统
的挂载和卸载了。

=====
服务的安装与启动
=====
yum install autofs -y ##安装autofs服务
systemctl start autofs

======
编辑配置文件
======
vim /etc/auto.master ##主配置文件
———————————-
这个文件里的每一行对应一个挂载点
autofs服务的每个挂载点都有一个相应的配置文件,比如 /etc/auto.master 文件里有一行
/misc /etc/auto.misc 这一行表示 /misc 挂载点的配置文件是 /etc/auto.misc
这里/misc 代表的是你要挂载的真正目录的上层目录 比如你真正要挂载的位置是 /mnt/server
那么这里你就该写的挂载点是 /mnt 后面配置文件格式一般都统一写成 auto.xxx 后缀应与
挂载点名称相同 。 如我要挂载在 /mnt/server下 我就该在 /etc/auto.master 里加这一行:
/mnt /etc/auto.mnt
———————————-

vim /etc/auto.mnt ##编辑挂载点配置文件
——————–
server -fstype=cifs,username=[],password=[] ://ip/dir
——————–
server代表是/mnt/server
-fstype=cifs 代表文件系统格式是cifs
在Red Hat Enterprise Linux 5以下(不包括5),samba的共享的文件系统类型是smbfs,
在Red Hat Enterprise Linux 5及5以上则是cifs类型
username password 填写你自己samab账户username password

=========
更改挂载时间
=========
默认情况下挂载时间是300s,5min不使用就自动卸载,当然这个时间是可以改变的
在 /etc/sysconfig/autofs 下 有一行参数 :
TIMEOUT=300
将300改为你自己想要的值就ok了默认单位为秒
注意这个配置文件在不同版本的redhat下存在位置也不同:
7.0系统:
/etc/sysconfig/autofs
7.2系统:
/etc/autofs.conf

NFS网络文件存储

简介

网络文件系统(NFS)是Unix系统和网络附加存储文件管理器常用的网络文件 系统,允许多个客户端通过网络共享文件访问。它可用于提供对共享二进制目录的访问,也可用于允许用户在同一工作组中从不同客户端访问其文件。  NFS协议有多个版本:Linux支持版本4、版本3和版本2, 而大多数系统管理员 熟悉的是NFSv3。默认情况下,该协议并不安全,但是更新的版本(如NFSv4 )提供了对更安全的身份验证的支持,甚至可以通过kerberos进行加密NFSv4还导出pseudo-root(所有导出的文件系统的root)。如果客户端挂载nfs-server:/ ,这将在NFS服务器上的/下面相对于其位置挂载所有导出文件系统。这对于浏览从客户端的服务器导出的所有文件系统有用。您仍可单独挂载文件系统。

默认情况下,NFS服务器将NFS客户端上的root视为用户nfsnobody。即,如果root尝试访问挂载的导出中的文件,服务器会将其视作用户nfsnobody访问。在NFS导出被无磁盘客户端用作/和root需要被视作root的情况中,这种安全措施存在隐患。若要禁用此保护,服务器需要将no_root_squash 添加到在/etc/exports中导出设置的选项列表:

/exports/root 172.25.254.223(rw,no_root_squash)

对于NFSv4,必须在服务器上打开端口2049/TCP(对于nfsd)。对于NFSv3和更早版本,必须为rpcbind、rpc.mountd、lockd和rpc.rquotad打开更多端口,而在“随机”选择的端口上启动其中许多服务这一事实又增加了复杂性。此外,NFSv2和NFSv3支持UDP传输,还要求打开相应的端口。

服务器配置(ip:172.25.254.223):

 yum search nfs            
 yum install nfs-utils.x86_64 -y    ##安装软件
 systemctl start nfs                ##开启服务
 firewall-cmd --list-all            ##查看火墙设置
 firewall-cmd --permanent --add-service=nfs
 firewall-cmd --permanent --add-service=mountd
 firewall-cmd --permanent --add-service=rpc-bind
 firewall-cmd --reload 
 firewall-cmd --list-all    
 mkdir /westos           ##建立共享目录(也能分享系统本就存在的目录)
 vim /etc/exports
        -------------------
   /westos        172.25.254.12(rw)   ##分享目录为/westos  只允许172.25.254.223读写
        -------------------

 exportfs -rv                        ##-r 确保应用这些更改  -v 显示所有导出(共享)
 showmount -e 172.25.254.223         ##显示指定NFS服务器共享目录列表

  ****************

NFS共享常用参数
******
ro #只读访问
rw #读写访问
sync #所有数据在请求时写入共享
async #NFS在写入数据前可以相应请求
secure #NFS通过1024以下的安全TCP/IP端口发送
insecure #NFS通过1024以上的端口发送
wdelay #如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay #如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide #在NFS共享目录中不共享其子目录
no_hide #共享NFS目录的子目录
subtree_check #如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check #和上面相对,不检查父目录权限
all_squash #共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash #保留共享文件的UID和GID(默认)
root_squash #root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas #root用户具有根目录的完全管理访问权限
anonuid=xxx #指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx #指定NFS服务器/etc/passwd文件中匿名用户的GID

 *************************

/etc/exports 文件编写
***************
/nfsshare/read 172.25.0.0/24(ro,sync) ##允许一个网段的机器去访问此共享目录
/nfsshare/write 172.25.0.0/24(rw,sync) 127.0.0.1(rw,sync) ##允许这两个网段的机器去读写此共享目录
/nfsshare/read *(ro,sync) ##允许所有机器访问此目录
/nfsshare/read 172.25.254.223(ro,sync) ##允许这个ip访问此目录

客户端查看并挂载(ip:172.25.254.223)

showmount -e 172.25.254.223
mount 172.25.254.223:/westos /mnt
df
cd /mnt
mkdir aaa
ls
touch hello

永久挂载NFS文件系统:

将相应的行添加至/etc/fstab:

nfsserver:/nfsshare /mnt/nfsshare nfs defaults 0 0

客户端NFS挂载选项

rw:挂载可读写的文件系统
ro:挂载只读文件系统
vers=4:尝试只使用指定的NFS版本进行挂载。如果服务器不支持该版本,则挂载请求失败
soft:如果NFS请求超时,三次尝试后返回错误。权衡数据完整性与提高客户端响应性。(默
认行为hard,将无限期地重试)。

保护NFS输出

在serverx和desktopx上运行脚本,加入kerberos认证域:
# lab nfskrb5 setup
安装kerberos服务所需的keytab:(以下操作都在server0上进行)
# wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/server0.keytab
激活NFS v4.2版本,可以输出selinux标签,编辑/etc/sysconfig/nfs修改如下选项:
RPCNFSDARGS=”-V 4.2”
启动nfs-secure-server服务:
# systemctl start nfs-secure-server; systemctl enable nfs-secure-server
配置NFS输出:
# mkdir /securenfs
# echo ‘/securenfs desktop0(sec=krb5p,rw)’ >> /etc/exports
# exportfs -r
安装kerberos服务所需keytab:(以下操作都在dekstop0进行)
# wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/desktop0.keytab
启动nfs-secure服务:
# systemctl start nfs-secure; systemctl enable nfs-secure
配置客户端挂载:
# mkdir /mnt/secureshare
/etc/fstab
server0:/securenfs /mnt/secureshare nfs defaults,v4.2,sec=krb5p 0 0
# mount -a

自动挂载(autofs)

在客户端:
vim /etc/auto.master
—————-
/mnt /etc/auto.mnt
—————-

vim /etc/auto.mnt
    ------------------
 yang    -rw,vers=4      172.25.254.112:/westos
    ------------------

systemctl restart autofs
cd /mnt/yang

iscsi磁盘分区共享

服务端:

=======
服务的安装与启动
=======
  yum install targetcli.noarch -y
  systemctl start target
  systemctl enable target
  systemctl stop firewalld
=====
共享硬盘的建立
======
  fdisk /dev/vdb   ##先从本机分割一块空间
  targetcli        ##启动软件,建立共享
********
   ls
   /backstores/block  create westos:storage1 /dev/vdb1         
   /iscsi  create iqn.2017-08.com.westos:storage1
   iscsi/iqn.2017-08.com.westos:storage1/tpg1/acls create  iqn.2017-08.com.westos:key1
   iscsi/iqn.2017-08.com.westos:storage1/tpg1/luns create  /backstores/block/westos:storage1
   iscsi/iqn.2017-08.com.westos:storage1/tpg1/portals create  172.25.254.223
   exit
*********
 依照上面命令建立好的文件系统:

=======================
/> ls
o- / …………………………………………………………… […]
o- backstores …………………………………………………. […]
| o- block ………………………………………. [Storage Objects: 1]
| | o- westos:storage1 ……….. [/dev/vdb1 (100.0MiB) write-thru activated]
| o- fileio ……………………………………… [Storage Objects: 0]
| o- pscsi ………………………………………. [Storage Objects: 0]
| o- ramdisk …………………………………….. [Storage Objects: 0]
o- iscsi ……………………………………………….. [Targets: 1]
| o- iqn.2017-08.com.westos:storage1 …………………………. [TPGs: 1]
| o- tpg1 ……………………………………. [no-gen-acls, no-auth]
| o- acls ……………………………………………… [ACLs: 1]
| | o- iqn.2017-08.com.westos:key1 …………………. [Mapped LUNs: 1]
| | o- mapped_lun0 ………………. [lun0 block/westos:storage1 (rw)]
| o- luns ……………………………………………… [LUNs: 1]
| | o- lun0 …………………….. [block/westos:storage1 (/dev/vdb1)]
| o- portals ………………………………………… [Portals: 1]
| o- 172.25.254.223:3260 …………………………………… [OK]
o- loopback …………………………………………….. [Targets: 0]
==========================

  vim /etc/iscsi/initiatorname.iscsi 
   --------
    InitiatorName=iqn.2017-08.com.westos:key1
   --------

测试:

客户端:
yum install iscsi-initiator-utils -y
vim /etc/iscsi/initiatorname.iscsi
—————
InitiatorName=iqn.2017-08.com.westos:key1
—————
systemctl restart iscsi
systemctl status iscsi
systemctl restart iscsid
systemctl status iscsid
history
iscsiadm -m discovery -t st -p 172.25.254.223 ##发现
iscsiadm -m node -T iqn.2017-03.com.westos:storage1 -p 172.25.254.223 -l ##登陆

=====
客户端访问存储
=====
fdisk -l ##发现多了一块设备 /dev/sda
fdisk /dev/sda
partprobe
fdisk -l
mkfs.xfs /dev/sda1
mount /dev/sda1 /mnt
df
umount /mnt
=====
中断使用iSCSI目标
=====
确保没有使用目标所提供的任何设备。
确保从/etc/fstab等位置中删除使用目标的所有永久挂载。
登出iSCSI目标,以暂时断开连接。
# iscsiadm -m node -T iqn.2017-08.com.westos:storage1 -p 172.25.254.223 -u
删除iSCSI目标的本地记录,以永久断开连接。
# iscsiadm -m node -T iqn.2017-08.com.westos:storage1 -p 172.25.254.223 -o delete

如果没有中断删除就重启电脑,iscsi会自动连接,如果服务器那边没有开启此服务,开机速度会非常慢,在开机后
清除 /var/lib/iscsi/nodes/ /var/lib/iscsi/send_targets/ 下的所有内容就ok了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章