您的位置:首页 > 编程语言 > PHP开发

exportfs命令,NFS客户端问题,FTP介绍,使用vsftp搭建ftp

2017-11-02 16:49 716 查看
笔记内容:
14.4 exportfs命令

14.5 NFS客户端问题

15.1 FTP介绍

15.2/15.3 使用vsftpd搭建ftp

笔记日期:

14.4 exportfs命令





这个exportfs命令会在安装nfs-util包时一起安装,当服务端需要停止NFS服务或者进行一些变动并重启时,其他挂载了共享目录的机器需要将这个挂载的目录卸载掉,不然的话服务进程就会出问题,单台机器我们可以使用unmnt命令去卸载,但是如果有几十台机器的话总不能一个个去unmnt吧,所以这个exportfs命令就是用来进行多台机器的卸载、重新挂载之类的操作的。
在服务端上执行exportfs -arv就能把共享目录卸载掉:



现在去客户端就会发现共享目录没有了:



然后再去服务端编辑/etc/exports文件增加以下内容,新增一个共享目录:
/tmp/ 192.168.133.0/24(rw,sync,no_root_squash)



在服务端执行exportfs -arv重新挂载:



然后到客户端showmount一下:



可以看到无需重新启动NFS服务器也能挂载共享目录,这样避免重启服务带来的问题。

现在客户端就可以把共享目录挂载到本地的mnt上了:
mount -t nfs 192.168.77.128:/tmp/ /mnt/



现在客户端上的mnt就是服务端的tmp目录。

在客户端上的mnt目录创建一个文件,并在文件中随便写上一些内容:
vim /mnt/test.txt
创建好后ls -l /mnt/可以看到文件的属主和属组都是root:



而在服务端上的这个文件的属主和属组也是root:



这是因为在服务端上的exports配置文件中配置的是no_root_squash,所以在这个共享目录下的权限就是root,这就是no_root_squash这个选项的作用。

14.5 NFS客户端问题



NFS有一个偶尔可能会遇到的问题,在CentOS6的时候遇到的比较多,不过只有NFS 4版本才会有该问题,这个问题就是:客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组都为nobody。
也就是说即便在服务端的exports配置文件中定义的是no_root_squash选项,但是客户端在共享目录下创建新文件时属主、属组却是为nobody。
这个问题有两种解决方案:
客户端挂载时加上 -o nfsvers=3,这是指定nfs的版本为3,不使用4版本。



为了确保没问题可以再remount一下:



客户端和服务端都需要修改etc/idmapd.conf配置文件:

vim /etc/idmapd.conf
把配置文件中的“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,随意定义吧),然后再重启rpcidmapd服务,在CentOS7中为rpcbind服务。

15.1 FTP介绍



FTP 和NFS类似,也是文件共享传输相关的一种服务,FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
我们都知道xshell支持rz和sz命令,可以让windows和Linux机器互相传输文件,但是这种传输方式有限制,例如超过四个G的文件就无法传输,又或者通过跳板机登录的一台远程服务器,也无法使用rz和sz命令来传输文件。这种情况下就可以使用FTP来解决这个问题。
我们可以在远程服务器上搭建一个FTP服务,如果Windows作为客户端就可以下载一个客户端软件,连接上服务器的FTP服务,然后就可以进行互传文件了,这种就叫FTP服务器。
但是如果在企业应用中,大企业的话是不使用FTP的,因为不是很安全,而且对于版本管理上并不是很好,所以一般只有小公司或者个人的网站之类的会使用FTP。大企业都是使用自动化发布类似于git这种能够很好地进行版本控制的服务平台。

15.2/15.3 使用vsftpd搭建ftp



介绍完FTP后,下面我们自己通过vsftpd搭建一个ftp服务,CentOS上会自带有vsftpd包,只需要通过yum安装即可:
yum install -y vsftpd

然后创建virftp,作为这个服务的映射用户:
useradd -s /sbin/nologin virftp

虽然vsftpd可以直接使用系统级别的用户,但是这样做不安全,所以我们要创建虚拟用户去映射这个普通用户,而虚拟用户是可以映射多个的,由于创建普通用户时候指定了 /sbin/nologin,这样的话即便有账户和密码也无法登陆系统,这样能够提高安全性,编辑vsftpd_login文件,这是虚拟用户的密码文件:
vim /etc/vsftpd/vsftpd_login

内容如下,奇数行为用户名,偶数行为密码,多个用户就写多行:
testuser1
123456abc



保存退出后给这个文件授予600权限,因为这是密码文件不能给所有的用户都可以读:
chmod 600 /etc/vsftpd/vsftpd_login

接着就是把这个密码文件转换成二进制文件,转换命令如下:
db_load -T -t hash -f /etc/vsftpd/vsftpd_login



创建虚拟用户的配置文件所在的目录:
mkdir /etc/vsftpd/vsftpd_user_conf

进入到该目录:
cd /etc/vsftpd/vsftpd_user_conf



创建一个配置文件,这个配置文件的名称必须和你在vsftpd_login文件里定义的用户名一致:
vim testuser1

编辑内容如下:
local_root=/home/virftp/testuser1 //定义虚拟用户的家目录
anonymous_enable=NO //定义是否允许匿名用户
write_enable=YES //定义是否可写
local_umask=022 //定义创建目录或文件的默认权限
anon_upload_enable=NO //定义是否允许匿名用户可上传
anon_mkdir_write_enable=NO //定义是否允许匿名用户创建目录,并且可写
idle_session_timeout=600 //定义超时时间
data_connection_timeout=120 /定义/数据传输的超时时间
max_clients=10 //定义最大的连接数



定义完虚拟用户的配置文件之后,创建用户的家目录:
mkdir -p /home/virftp/testuser1

在家目录下创建一个文件,等会登录虚拟用户时就能看到这个文件:
touch /home/virftp/testuser1/aming.txt

修改virftp家目录的权限,因为虚拟用户要映射到这个用户上:
chown -R virftp:virftp /home/virftp

编辑/etc/pam.d/vsftpd 文件,这个文件用来认证登录用户的。在这个文件里需要指定用户的密码文件的路径在哪,通过这个密码文件去对比登录用户的账户密码:
vim /etc/pam.d/vsftpd

在最前面加上如下内容:
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login



注意:如果/lib64/security/pam_userdb.so不存在的话是无法进行验证的,CentOS6的话是不在lib64目录下的。



接着编辑vsftpd.conf文件,这是vsftpd的主配置文件:
vim /etc/vsftpd/vsftpd.conf

编辑内容:
将anonymous_enable=YES 改为 anonymous_enable=NO
将#anon_upload_enable=YES 改为 anon_upload_enable=NO
将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

修改完后在文件底部增加如下内容:
chroot_local_user=YES
guest_enable=YES
guest_username=virftp //定义映射的系统用户
virtual_use_local_privs=YES //告诉vsftpd服务使用的是虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES



修改完后就可以启动vsftpd服务了:
systemctl start vsftpd



监听的是21端口:



到此为止我们的FTP服务就搭建完成了,接下来就是进行测试环节。



测试需要安装一个客户端,在windows上可以下载filezilla,Linux则可以安装lftp作为客户端,下面在Linux上演示一下:
yum -y install lftp

安装好后就可以通过lftp命令登录虚拟用户了:



输入 ? 可以看到支持使用哪些命令:



最常用的两个命令就是put和get,put是上传文件,get是下载文件,例如我们get一下aming.txt这个文件,然后退出客户端,可以看到默认会get到当前目录下:



最后介绍一下如何使用Xshell实现与ftp相似的功能,有两种方式:
新建一个会话:



属性编辑如下:



设置一下文件的保存路径,我这里是定义在桌面上:



然后点击确定,接着连接虚拟机:



输入用户和密码后,登录到服务器上:



默认是登录到root目录下:



可以get一个文件(前提是此文件没有过高的权限):



如图就是get成功了。
文件也保存到桌面上了:



因为以上这种是命令行的方式,不够直观,除此之外的第二种方式就是下载一个插件,这个插件是Xftp,能够实现图形化的效果,按Ctrl + Alt + F 快捷键能够弹出Xftp的下载窗口:



具体的安装和使用会在下一篇介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  FTP NFS exportfs
相关文章推荐