9 NFS
9.1 NFS基础
目标
.使用NFS将文件系统连接到客户端,并使用IP 地址控制访问
.使用NFS将文件系统连接到客户端,并使用kerberos 来控制访问
.配置用户名和密码控制访问的SMB共享文件系统与客户端的SMB 共享
.安装了多用户安装选项,使用基于密码的身份验证和证书,来控制访问与SMB 共享
• 在NFS服务器主机中进行设置
– 安装NFS服务器软件包
– 启动NFS服务器程序
– 设置NFS共享目录输出
• 在NFS客户机中进行设置
– 使用mount命令挂载NFS服务器中的NFS共享目录到文件系统中
– 通过NFS文件系统的挂载点目录访问NFS服务器中的共享内容
• nfs-utils软件包
– 提供了NFS服务器的启动脚本和管理维护工具
• 软件包安装
– “nfs-utils” 软件包在RHEL7系统中是默认安装的
• “exports”文件用于配置NFS服务器中输出的共享目录
# cat /etc/exports
/home/share *(sync,ro)
字段说明
nfs共享目录名需要进行输出的NFS共享目录名称
客户端主机地址能够访问共享目录的主机地址
配置选项设置共享目录的属性,字段放置在括号对( )中,多个选项间用逗号分隔
– sync:设置NFS服务器同步写磁盘,这样不会轻易丢失数据,建议所有的NFS共享目录都使用该选项
– ro:设置输出的共享目录只读,与rw不能共同使用
– rw:设置输出的共享目录可读写,与ro不能共同使用
Exports文件配置实例
• 配置NFS服务器输出的共享目录
– 输出“/home/share”目录,对所有主机可读,对地址为192.168.1.19的主机可读可写
– 输出“/home/pub”目录,对192.168.152.0子网内的所有主机可读
# cat /etc/exports
/home/share *(sync,ro) 192.168.1.19(sync,rw)
/home/pub 192.168.152.0/24(sync,ro)
NFS服务管理
• 查询服务器的状态
# systemctl status nfs-server
# systemctl start/restart nfs-server
连接NFS共享
– 显示当前主机或指定服务器中的输出列表
# showmount -e [IP/HOST]
• 挂载NFS服务器中的共享目录
# mount -t nfs 192.168.152.131:/home/share/ /mnt/
# mount | grep nfs
– 使用umount命令卸载NFS文件系统# umount /mnt/
配置NFS启动自动挂载
# vim /etc/fstab
192.168.152.131:/home/pub /mnt nfs defaults 0 0
# mount -a
配置NFS的firewall端口安全
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --reload
9.2 NFS配置实验命令
rpms: nfs-utils
daemon: nfs-server
nfs-secure-server / kerberos nfs-secure(client)
[Server]
# mkdir /public
# yum list nfs-utils
# man exports /example
# vim /etc/exports
/public *.example.com(ro)
# systemctl restart nfs-server
# systemctl enable nfs-server
# rpcinfo
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --permanent --add-service=mountd
# showmount -e
[Desktop]
# showmount -e s0
# mkdir /mnt/nfsmount
# vim /etc/fstab
...
server0.example.com:/public /mnt/nfsmount nfs defaults 0 0
# mount -a
# findmnt /mnt/nfsmount
9.3 配置基于Kerberos验证的NFS
服务端:
man exports | grep sec=
①修改配置文件
# echo '/securenfs desktopX(sec=krb5p,rw)' >>/etc/exports
②修改配置文件:/etc/sysconfig/nfs
# Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
RPCNFSDARGS="" #修改为:RPCNFSDARGS="-V 4.2"
③下载keytab文件
# wget -O /etc/krb5.keytab
http://classroom.example.com/pub/keytabs/serverX.keytab
④启动nfs-secure-server 服务
# systemctl start nfs-secure-server
客户端:
① 下载keytab文件
# wget -O /etc/krb5.keytab
http://classroom.example.com/pub/keytabs/desktopX.keytab
② 启动nfs-secure服务
# systemctl start nfs-secure
③修改配置文件# vim /etc/fstab
server0.example.com:/protected /mnt/nfssecure nfs defaults,sec=krb5p,v4.2 0 0
实验命令
[classroom]
# vim /content/courses/rh254/rhel7.0/grading-scripts/lab-nfskrb5
[server]
# lab nfskrb5 setup
# getent passwd ldapuser0
[desktop]
# lab nfskrb5 setup
# getent passwd ldapuser0
[Server]
# mkdir -p /protected/project
# man exports /sec
# vim /etc/exports
...
/protected *.example.com(rw,sec=krb5p)
# rpm -qc nfs-utils
# vim /etc/sysconfig/nfs
...
RPCNFSDARGS="-V 4.2"
# wget -O /etc/krb5.keytab http://classroom/pub/keytabs/server0.keytab
# systemctl restart nfs-server
# systemctl restart nfs-secure-server
# systemctl enable nfs-secure-server
# showmount -e
# chown ldapuser0 /protected/project
# ll -d /protected/project
[Desktop]
# mkdir /mnt/nfssecure
# wget -O /etc/krb5.keytab http://classroom/pub/keytabs/desktop0.keytab
# systemctl restart nfs-secure
# systemctl enable nfs-secure
# vim /etc/fstab
...
server0.example.com:/protected /mnt/nfssecure nfs defaults,sec=krb5p,v4.2 0 0
# mount -a
# findmnt /mnt/nfssecure
# ssh ldapuser0@localhost
kerberos
$ touch /mnt/nfssecure/project/rw.txt
server client
/etc/export
sec=krb5p
/etc/sysconfig/nfs /etc/fstab
-V 4.2 v4.2,sec=krb5p
/etc/krb5.keytab /etc/krb5.keytab
nfs-secure-server nfs-secure
----------------------
9.4 实验外:如何生成令牌 krb
rebuild keytab
[classroom] online
# rm -rf /var/www/html/pub/keytables/server30.keytab
# kadmin.local
kadmin.local: ?
kadmin.local: list_principals
kadmin.local: ktadd
kadmin.local: ktadd -k /var/www/html/pub/keytabls/server30.keytab host/server30.example.com
kadmin.local: ktadd -k /var/www/html/pub/keytables/server30.keytab nfs/server30.example.com
kadmin.local: exit
# chmod a+r /var/www/html/pub/keytables/server30.keytab
9.5 RHCE相关题目2个
:: 配置 NFS 服务
在 server0 配置 NFS 服务,要求如下:
以只读的方式共享目录 /public 同时只能被 example.com 域中的系统访问
以读写的方式共享目录 /protected 能被 example.com 域中的系统访问
访问 /protected 需要通过 Kerberos 安全加密,
您可以使用下面URL提供的密钥 http://classroom/pub/keytabs/server0.keytab
目录 /protected 应该包含名为 project 拥有人为 ldapuser0 的子目录
用户 ldapuser0 能以读写方式访问 /protected/project
:: 挂载一个NFS共享
在 desktop0 上挂载一个来自 server0.example.com 的 NFS 共享,并符合下列要求:
/public 挂载在下面的目录上 /mnt/nfsmount
/protected 挂载在下面的目录上 /mnt/nfssecure 并使用安全的方式,
密钥下载 URL 如下: http://classroom/pub/keytabs/desktop0.keytab
用户 ldapuser0 能够在 /mnt/nfssecure/project 上创建文件
这些文件系统在系统启动时自动挂载
10 SMABA
10.1 基础
lSamba是一套使用SMB(Server Message Block)协议的应用程序
Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为可能。
lSamba采用C/S模式, 其工作机制是让NetBIOS ( Windows网上邻居的通信协议)和SMB两个协议
运行于TCP/IP通信协议之上,并且用NetBEUI协议让Windows在“网上邻居”中能浏览Linux服务器。
• Samba的软件包组成
– samba-*.rpm
– samba-client-*.rpm
– samba-common-*.rpm
– cifs-utils-*.rpm
• Samba的配置目录及文件
– /etc/samba/
– /etc/samba/smb.conf
• smb.conf文件的配置内容
– [global]:全局设置
– [homes]:用户目录共享设置
– [printers]:打印机共享设置
– [myshare]:自定义名称的共享目录设置
• 辅助配置内容
– 注释行:以# 号开头的行 说明注释
– 配置样例行:以; 号开头的行 配置注释
– 结合grep命令可以提取有效配置行
• grep -v "^#" smb.conf | grep -v "^;"
• 常见全局配置项的含义
– workgroup:所在工作组名称
– server string:服务器描述信息
– security:安全级别,可用值如下:
share、user、server、domain
– log file:日志文件位置,“%m”变量表示客户机地址
– max log size:日志文件的最大容量,单位为KB
• 常见共享目录配置项的含义
– comment:对共享目录的注释、说明信息
– path:共享目录在服务器中对应的实际路径
– browseable:该共享目录在“网上邻居”中是否可见
– guest ok:是否允许所有人访问,等效于“public”
– writable:是否可写,与read only的作用相反
建立可匿名访问的文件共享
• 修改smb.conf配置文件
– security = share
– public = yes
访问SMB共享
• smbclient -L 192.168.168.1
• smbclient -U vina //192.168.168.1/movie
创建SMB访问账户
• 建立Samba用户数据库文件
– 系统用户帐号-> Samba用户帐号
– smbpasswd管理命令,常用的选项:
• -a:添加指定的Samba帐号