前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >exportfs命令,NFS客户端问题,FTP介绍,使用vsftp搭建ftp

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

作者头像
端碗吹水
发布2020-09-23 11:15:26
5.3K0
发布2020-09-23 11:15:26
举报
文章被收录于专栏:程序猿的大杂烩

笔记内容:

  • 14.4 exportfs命令
  • 14.5 NFS客户端问题
  • 15.1 FTP介绍
  • 15.2/15.3 使用vsftpd搭建ftp

笔记日期:

14.4 exportfs命令

4286
4286
4287
4287

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

在服务端上执行exportfs -arv就能把共享目录卸载掉:

4288
4288

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

4289
4289

然后再去服务端编辑/etc/exports文件增加以下内容,新增一个共享目录:

/tmp/ 192.168.133.0/24(rw,sync,no_root_squash)

4290
4290

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

4291
4291

然后到客户端showmount一下:

4292
4292

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

现在客户端就可以把共享目录挂载到本地的mnt上了:

mount -t nfs 192.168.77.128:/tmp/ /mnt/

4293
4293

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

在客户端上的mnt目录创建一个文件,并在文件中随便写上一些内容:

vim /mnt/test.txt

创建好后ls -l /mnt/可以看到文件的属主和属组都是root:

4294
4294

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

4295
4295

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

14.5 NFS客户端问题

4297
4297

NFS有一个偶尔可能会遇到的问题,在CentOS6的时候遇到的比较多,不过只有NFS 4版本才会有该问题,这个问题就是:客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组都为nobody。

也就是说即便在服务端的exports配置文件中定义的是no_root_squash选项,但是客户端在共享目录下创建新文件时属主、属组却是为nobody。

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

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

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

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

vim /etc/idmapd.conf

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

15.1 FTP介绍

4300
4300

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

4301
4301

介绍完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

4302
4302

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

chmod 600 /etc/vsftpd/vsftpd_login

接着就是把这个密码文件转换成二进制文件,转换命令如下:

db_load -T -t hash -f /etc/vsftpd/vsftpd_login

4303
4303

创建虚拟用户的配置文件所在的目录:

mkdir /etc/vsftpd/vsftpd_user_conf

进入到该目录:

cd /etc/vsftpd/vsftpd_user_conf

4304
4304

创建一个配置文件,这个配置文件的名称必须和你在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  //定义最大的连接数

4305
4305

定义完虚拟用户的配置文件之后,创建用户的家目录:

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

4306
4306

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

4307
4307

接着编辑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

4308
4308

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

systemctl start vsftpd

4309
4309

监听的是21端口:

4310
4310

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

4311
4311

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

yum -y install lftp

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

4312
4312

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

4313
4313

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

4314
4314

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

  1. 新建一个会话:
4315
4315

属性编辑如下:

4316
4316

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

4317
4317

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

4318
4318

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

4319
4319

默认是登录到root目录下:

4320
4320

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

4321
4321

如图就是get成功了。

文件也保存到桌面上了:

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/11/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档