一、简述NFS原理和配置
NFS:Network FileSystem,网络文件系统
- 主要功能是能够通过网络在不同的主机之间彼此实现资源共享,也相当于一个文件服务器,NFS服务可以让本地主机将网络远程的NFS服务器分享的目录挂在到本地根下的路径点上,NFS根据指定的连接创建一个基于tcp/ip协议的长连接,连接到NFS服务器的主机端,在本地主机看来远程主机的目录就好像自己的一个磁盘分区一样,使用起来非常方便。
- NFS主要借助于RPC(远程过程调用)来实现文件分享,RPC(remote procedure call)通过函数调用一部分功能本地程序完成,另一部分功能有远程主机上的函数完成,,两者共同完成资源的分享。
- 辅助类的服务:rpc, portmapper
- rpc.mountd:认证;
- rpc.lockd:加锁;
- rpc.statd:状态;
- 集中认证服务
- ldap:lightweight directory access protocol; ldap over ssl/tls;
- nis:Network Information Service;
NFS配置:
-
Server端配置:
- nfs-utils:The nfs-utils package provides a daemon for the kernel NFS server and related tools, which provides a much higher level of performance than the traditional Linux NFS server used by most users.
- 配置文件:
/etc/exports
或/etc/exports.d/*
/PATH/TO/SOME_DIR clients1(export_options, ...) clients2(export_options, ...)
- clients:
single host:ipv4, ipv6, FQDN;
network:address/netmask, 支持长短格式的掩码;
wildcards:主机名通配,例如:.magedu.com;
netgroups:NIS域内的主机组;@group_name;
anonymous:使用通配所有主机; - General Options:
ro:只读
rw:读写;
sync:同步;
async:异步;
secure:客户端端口小于1024,否则就要使用insecure选项; - User ID Mapping:
root_squash:压缩root用户,一般指将其映射为nfsnobody;
no_root_squash:不压缩root用户;
all_squash:压缩所有用户;
anonuid and anongid:将压缩的用户映射为此处指定的用户;
-
NFS Client:
mount -t nfs servername:/path/to/share /path/to/mount_point [-rvVwfnsh ] [-o options]
# exportfs -ar # exportfs -au
showmount - show mount information for an NFS server
showmount -e NFS_SERVER_IP: 查看指定的nfs server上导出的所有文件系统;
showmount -a:在nfs server上查看nfs服务的所有客户端列表;
exportfs:
exportfs
-r:重新导出;
-a:所有文件系统;
-v:详细信息;
-u:取消导出文件系统;
以192.168.1.107这台主机为服务端:
-
检查内核模块
[root@localhost ~]# lsmod | grep nfsd nfsd 342857 1 auth_rpcgss 59415 1 nfsd nfs_acl 12837 1 nfsd lockd 93827 1 nfsd grace 13515 2 nfsd,lockd sunrpc 348674 7 nfsd,auth_rpcgss,lockd,nfs_acl
-
安装nfs-utils程序包
[root@localhost ~]# yum -y install nfs-utils
-
启动服务
[root@localhost ~]# systemctl start nfs.service
-
修改配置文件
先创建共享目录
[root@localhost ~]# mkdir -pv /data/mysql
添加配置文件
[root@localhost ~]# vim /etc/exports
/data/mysql 192.168.1.103(rw) 192.168.1.102(ro)重新导出配置
[root@localhost ~]# exportfs -rav
以192.168.1.103这台主机为客户端:
[root@localhost ~]# mount.nfs 192.168.1.107:/data/mysql /mnt
挂载后就可以开始使用了
二、简述samba服务,并实现samba配置
-
SAMBA使用的是NetBIOS 通讯协议。
- NetBIOS即Network Basic Input/Output System,网络的基本输入输出系统,它定义了一种软件接口以及在应用程序和连接介质之前提供通信接口的标准方法,作用是为局域网提供网路及其他特殊功能
- SAMBA是通过两个服务来控制的
- nmb:137,138端口,来负责名称解析任务
- smb:139,445端口,进行数据的传输
-
程序环境:
- 服务端程序包:samba,samba-common, samba-libs
Server and Client software to interoperate with Windows machines. - 主配置文件:/etc/samba/smb.conf, 由samba-common包提供;
主程序:- nmbd:NetBIOS name server
- smbd:SMB/CIFS services
- Unit File:
smb.service
nmb.service
- 服务端程序包:samba,samba-common, samba-libs
- samba的配置:
/etc/samba/smb.conf
- 两类配置段:
- 全局配置
- 两类配置段:
[global]
Network-Related Options
workgroup =
server string =
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
hosts allow = 127. 192.168.12. 192.168.13.
Logging Options
log file = /var/log/samba/log.%m
max log size = 50
Standalone Server Options
security = user
设定安全级别:取值有四个;
share:匿名共享;
user:使用samba服务自我管理的账号和密码进行用户认证;用户必须是系统用户,但密码非为/etc/shadow中的密码,而由samba自行管理的文件,其密码文件的格式由passdb backend进行定义;
server:由第三方服务进行统一认证;
domain:使用DC进行认证;基于kerberos协议进行;
passdb backend = tdbsam
Printing Options
load printers = yes
cups options = raw
共享文件系统配置
[SHARED_NAME]
有三类:
[homes]:为每个samba用户定义其是否能够通过samba服务访问自己的家目录;
[printers]:定义打印服务;
[shared_fs]:定义共享的文件系统;
常用指令:
comment:注释信息;
path:当前共享所映射的文件系统路径;
browseable:是否可浏览,指是否可被用户查看;
guest ok:是否允许来宾账号访问;
public:是否公开所有用户;
writable:是否可写;
read only:是否为只读;
write list:拥有写权限的用户列表;
用户名
@组名
+组名
samba用户管理:
smbpasswd
smbpasswd [options] USERNAME
-a:添加
-x:删除
-d:禁用
-e:启用
pdbedit
-L:列出samba服务中的所有用户;
-a, --create:添加用户为samba用户;
-u, --user=USER:要管理的用户;
-x, --delete:删除用户;
-t, --password-from-stdin:从标准输出接收字符串作为用户密码;
使用空提示符,而后将密码输入两次;
查看服务器端的共享:
smbclient -L SMB_SERVER [-U USERNAME]
交互式文件访问:
smbclient //SMB_SERVER/SHARE_NAME [-U USERNAME]
挂载访问:
mount -t cifs //SMB_SERVER/SAHRE_NAME -o username=USERNAME,password=PASSWORD
注意:挂载操作的用户,与-o选项中指定用户直接产生映射关系;
此时,访问挂载点,是以-o选项中的username指定的用户身份进行;本地用户对指定的路径访问,首先得拥有对应的本地文件系统权限;
smbstatus命令:
显示samba服务的相关共享的访问状态信息;
-b:显示简要格式信息;
-v:显示详细格式信息;
配置示例
在服务器端配置
[root@localhost ~]# yum -y install samba
#创建访问用户
[root@localhost samba]# useradd smbuser1
[root@localhost samba]# smbpasswd smbuser1 -a
New SMB password:
Retype new SMB password:
Added user smbuser1.
[root@localhost samba]# mkdir /data/samba/files -pv
[root@localhost samba]# setfacl -m u:smbuser1:rwx /data/samba/files
# 配置共享
vim /etc/samba/smb.conf
[myfiles]
comment = A TEST SHARED DIR
guest ok = Yes
path = /data/samba/files
read only = No
# testparm命令测试语法错误
在客户端操作:
[root@localhost ~]# smbclient -L 192.168.1.103 -U smbuser1
[root@localhost ~]# mount.cifs //192.168.1.103/myfiles /mnt -o username=smbuser2 password=inspur
[root@localhost ~]# mkdir /mnt/mysql
[root@localhost ~]# ls
[root@localhost ~]# ls /mnt
issue mysql