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

2020-09-23 11:15:26 浏览数 (1)

笔记内容:

  • 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。

这个问题有两种解决方案:

  1. 客户端挂载时加上 -o nfsvers=3,这是指定nfs的版本为3,不使用4版本。

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

  1. 客户端和服务端都需要修改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相似的功能,有两种方式:

  1. 新建一个会话:

属性编辑如下:

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

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

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

默认是登录到root目录下:

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

如图就是get成功了。

文件也保存到桌面上了:

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

具体的安装和使用会在下一篇介绍。

0 人点赞