linux 学习笔记-055-NFS,FTP-exportfs 命令,FTP 介绍,vsftpd 搭建 ftp

发布于 2018-03-26  340 次阅读


exportfs 命令

假如服务端的 NFS 需要重启,那么客户端挂载的目录就需要先卸载掉,要不然可能会导致客户端出问题,但是如果你有几十台客户端都挂载了服务端的这个共享目录,那么一台一台客户端卸载就不科学了,这时就可以用到 exportfs 命令

常用选项:

-a 全部挂载或者全部卸载

-r 重新挂载

-u 卸载某一个目录

-v 显示共享目录

[root@am-01:~#] vim /etc/exports

  /home/nfsdir 172.17.1.0/24(rw,sync,all_squash,anonuid=1008,anongid=1008)

  /tmp 172.17.1.242(rw,sync,no_root_squash)

[root@am-01:~#] exportfs -arv

exporting 172.17.1.242:/tmp

exporting 172.17.1.0/24:/home/nfsdir



[root@am-02:/mnt#] showmount -e 172.17.1.240

Export list for 172.17.1.240:

/home/nfsdir 172.17.1.0/24

/tmp         172.17.1.242

#测试可见,服务端并没有重启 NFS 服务,但配置文件也能生效,这时就可以把服务端的/tmp/目录挂载到客户端了

可能会出现的问题:

当 NFS 为 4 版本会有该问题

客户端挂载共享目录后,不管是 root 用户还是普通用户,创建新文件时属主、属组为 nobody

这有两个解决方法

01:客户端挂载时加上 -o nfsvers=3

[root@am-02:~#] umount /mnt/

[root@am-02:~#] mount -t nfs -o nfsvers=3 172.17.1.240:/home/nfsdir /mnt

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

把“#Domain = local.domain.edu” 的#号去掉,之后重启 rpcbind

FTP 介绍

FTP 是 File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在 Internet 上控制文件的双向传输。

FTP 的主要作用就是让用户连接一个远程计算机(这些计算机上运行着 FTP 服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。

小公司用的多,大企业不用 FTP,因为不安全

linux 学习笔记-055-NFS,FTP-exportfs 命令,FTP 介绍,vsftpd 搭建 ftp

使用 vsftpd 搭建 ftp 服务

[root@am-01:~#] yum -y install vsftpd

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

 * epel: mirror01.idc.hinet.net

正在解决依赖关系

--> 正在检查事务

---> 软件包 vsftpd.x86_64.0.3.0.2-22.el7 将被 安装

--> 解决依赖关系完成

………………省略部分输出信息………………

已安装:

  vsftpd.x86_64 0:3.0.2-22.el7                                                                                                     



完毕!

#安装 vsftpd
[root@am-01:~#] useradd -s /sbin/nologin virftp

[root@am-01:~#] vim /etc/vsftpd/vsftpd_login

  admin

  123456

  user

  123456

[root@am-01:~#] chmod 600 /etc/vsftpd/vsftpd_login

#新建一个本地用户,用来访问 ftp 目录,因为这个用户是本地用户,为了安全性考虑,还得新建虚拟用户的密码文件/etc/vsftpd/vsftpd_login(奇数行为用户名,偶数行为密码,多个用户就写多行)给客户端使用,同时还得赋予其 600 的权限
[root@am-01:~#] db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

[root@am-01:~#] ls -l /etc/vsftpd/

总用量 32

-rw------- 1 root root   125 8 月   3 2017 ftpusers

-rw------- 1 root root   361 8 月   3 2017 user_list

-rw------- 1 root root  5030 8 月   3 2017 vsftpd.conf

-rwxr--r-- 1 root root   338 8 月   3 2017 vsftpd_conf_migrate.sh

-rw------- 1 root root    25 3 月  27 00:28 vsftpd_login

-rw-r--r-- 1 root root 12288 3 月  27 00:30 vsftpd_login.db

#把文本的虚拟用户的密码文件/etc/vsftpd/vsftpd_login 转换为计算机识别的二进制文件
[root@am-01:~#] mkdir /etc/vsftpd/vsftpd_user_conf

[root@am-01:~#] cd /etc/vsftpd/vsftpd_user_conf/

[root@am-01:/etc/vsftpd/vsftpd_user_conf#] vim admin

  local_root=/home/virftp/admin

#虚拟用户的家目录

  anonymous_enable=NO

#不允许匿名用户

  write_enable=YES

#允许可写

  local_umask=022

#umask 为 022,用来定义创建新目录新文件时的权限

  anon_upload_enable=NO

#不允许匿名用户上传

  anon_mkdir_write_enable=NO

#不允许匿名用户创建目录及写入

  idle_session_timeout=600

#设置超时时间

  data_connection_timeout=120

#设置数据传输的超时时间

  max_clients=10

#定义最大的客户端

#新建虚拟用户配置文件的存放路径,同时新建虚拟用户的配置文件,这个虚拟用户的配置文件的名字需要跟你在虚拟用户的密码文件/etc/vsftpd/vsftpd_login 中所定义的用户名一致
[root@am-01:~#] mkdir /home/virftp/admin

[root@am-01:~#] touch /home/virftp/admin/1.txt

[root@am-01:~#] chown -R virftp:virftp /home/virftp/

#创建虚拟用户的家目录并设置/home/virftp/的所属者和所属组为 virftp,同时新建一个文件,后面做实验用到
[root@am-01:~#] vim /etc/pam.d/vsftpd

  #%PAM-1.0

  auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

  account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

#修改/etc/pam.d/vsftpd,指定虚拟用户的密码文件,/etc/pam.d/vsftpd 是一个认证文件
[root@am-01:~#] vim /etc/vsftpd/vsftpd.conf

  anonymous_enable=NO

  anon_upload_enable=NO

  anon_mkdir_write_enable=NO

#修改以上几项

  chroot_local_user=YES

  guest_enable=YES

  guest_username=virftp

#说明把虚拟用户映射为 virftp 用户

  virtual_use_local_privs=YES

#这项是为了告诉服务,这里使用的是虚拟用户

  user_config_dir=/etc/vsftpd/vsftpd_user_conf

#定义虚拟用户配置文件所在目录

  allow_writeable_chroot=YES

#在最后增加以上几项

#编辑 vsftpd 的主配置文件
[root@am-01:~#] systemctl start vsftpd.service

[root@am-01:~#] ps -aux | grep vsftpd

root      14491  0.0  0.0  51140   564 ?        Ss   05:50   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

root      14493  0.0  0.0 112676   980 pts/1    S+   05:50   0:00 grep --color=auto vsftpd

[root@am-01:~#] netstat -lntp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

tcp6       0      0 :::21                   :::*                    LISTEN      14491/vsftpd       

#启动 vsftpd,同时也能看到 vsftpd 进程已经有了,21 端口也已经被监听
[root@am-01:~#] yum -y install lftp

已加载插件:fastestmirror

base                                                                                             | 3.6 kB  00:00:00    

epel/x86_64/metalink                                                                             | 8.3 kB  00:00:01    

extras                                                                                           | 3.4 kB  00:00:00    

updates                                                                                          | 3.4 kB  00:00:00    

………………省略部分输出信息………………

Running transaction

  正在安装    : lftp-4.4.8-8.el7_3.2.x86_64                                                                         1/1

  验证中      : lftp-4.4.8-8.el7_3.2.x86_64                                                                         1/1



已安装:

  lftp.x86_64 0:4.4.8-8.el7_3.2                                                                                        



完毕!

[root@am-01:~#] lftp admin@127.0.0.1

口令:

lftp admin@127.0.0.1:~> ls         

-rw-r--r--    1 1010     1010            0 Mar 26 21:33 1.txt

#在本机安装 lftp,测试 vsftpd 是否成功运作,经测试可见是成功运作的,windows 客户端建议安装 filezilla client
lftp admin@127.0.0.1:/> ?

    !<shell-command>                     (commands)                           alias [<name> [<value>]]

    attach [PID]                         bookmark [SUBCMD]                    cache [SUBCMD]

    cat [-b] <files>                     cd <rdir>                            chmod [OPTS] mode file...

    close [-a]                           [re]cls [opts] [path/][pattern]      debug [<level>|off] [-o <file>]

    du [options] <dirs>                  exit [<code>|bg]                     get [OPTS] <rfile> [-o <lfile>]

    glob [OPTS] <cmd> <args>             help [<cmd>]                         history -w file|-r file|-c|-l [cnt]

    jobs [-v] [<job_no...>]              kill all|<job_no>                    lcd <ldir>

    lftp [OPTS] <site>                   ln [-s] <file1> <file2>              ls [<args>]

    mget [OPTS] <files>                  mirror [OPTS] [remote [local]]       mkdir [-p] <dirs>

    module name [args]                   more <files>                         mput [OPTS] <files>

    mrm <files>                          mv <file1> <file2>                   [re]nlist [<args>]

    open [OPTS] <site>                   pget [OPTS] <rfile> [-o <lfile>]     put [OPTS] <lfile> [-o <rfile>]

    pwd [-p]                             queue [OPTS] [<cmd>]                 quote <cmd>

    repeat [OPTS] [delay] [command]      rm [-r] [-f] <files>                 rmdir [-f] <dirs>

    scache [<session_no>]                set [OPT] [<var> [<val>]]            site <site-cmd>

    source <file>                        torrent [-O <dir>] <file|URL>...     user <user|URL> [<pass>]

    wait [<jobno>]                       zcat <files>                         zmore <files>

#按一个问号可以查询到能用的命令
[root@am-01:~#] lftp admin@127.0.0.1

口令:

lftp admin@127.0.0.1:~> ls         

-rw-r--r--    1 1010     1010            0 Mar 26 21:33 1.txt

lftp admin@127.0.0.1:/> get 1.txt

lftp admin@127.0.0.1:/> quit

[root@am-01:~#] ls -lt

总用量 7904

-rw-r--r--  1 root root       0 3 月  27 05:33 1.txt

#lftp 可以使用 get 来把文件下载下来

Xshell 实现跟 lftp 类似的功能

01:新建一个会话,主机 IP 一样,端口号为 ssh 的端口,只是协议选择 SFTP 即可,使用 root 用户名及其密码登陆,get 下来的文件可以在会话属性中设置本地存放路径

linux 学习笔记-055-NFS,FTP-exportfs 命令,FTP 介绍,vsftpd 搭建 ftp

linux 学习笔记-055-NFS,FTP-exportfs 命令,FTP 介绍,vsftpd 搭建 ftp

linux 学习笔记-055-NFS,FTP-exportfs 命令,FTP 介绍,vsftpd 搭建 ftp

02:使用快捷键 ctrl + alt + f 下载 xftp 插件(这个将会在下一篇文章提到)

linux 学习笔记-055-NFS,FTP-exportfs 命令,FTP 介绍,vsftpd 搭建 ftp