exportfs命令及使用vsftpd搭建FTP服务

1.exportfs命令

exportfs命令的常用选项为-a、-r、-u和-v,各选项的含义如下:

-a:表示全部挂载或者卸载;

-r:表示重新挂载;

-u:表示卸载某一个目录;

-v:表示显示共享的目录。

当改变/etc/exports配置文件后,使用exportfs命令不需要重启NFS服务。

首先修改服务端(128)的配置文件,新增一行“/tmp 192.168.30.129(rw,sync,no_root_squash)”;

在服务端执行exportfs命令;

[root@yuioplvlinux-128 ~]# exportfs -arv
exporting 192.168.30.129:/tmp
exporting 192.168.30.129:/home/nfstestdir

在客户端(129),查看挂载的目录,并将其卸载;

[root@yuioplvlinux-129 ~]# df -h
文件系统                         容量  已用  可用 已用% 挂载点
/dev/sda3                         28G  3.3G   25G   12% /
devtmpfs                         483M     0  483M    0% /dev
tmpfs                            493M     0  493M    0% /dev/shm
tmpfs                            493M  6.8M  486M    2% /run
tmpfs                            493M     0  493M    0% /sys/fs/cgroup
/dev/sda1                        197M   97M  100M   50% /boot
tmpfs                             99M     0   99M    0% /run/user/0
192.168.30.128:/home/nfstestdir   28G  7.6G   21G   28% /mnt
[root@yuioplvlinux-129 ~]# umount /mnt
[root@yuioplvlinux-129 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        28G  3.3G   25G   12% /
devtmpfs        483M     0  483M    0% /dev
tmpfs           493M     0  493M    0% /dev/shm
tmpfs           493M  6.8M  486M    2% /run
tmpfs           493M     0  493M    0% /sys/fs/cgroup
/dev/sda1       197M   97M  100M   50% /boot
tmpfs            99M     0   99M    0% /run/user/0

挂载NFS;

[root@yuioplvlinux-129 ~]# showmount -e 192.168.30.128
Export list for 192.168.30.128:
/tmp             192.168.30.129
/home/nfstestdir 192.168.30.129
[root@yuioplvlinux-129 ~]# mount -t nfs 192.168.30.128:/tmp /mnt/
[root@yuioplvlinux-129 ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/sda3             28G  3.3G   25G   12% /
devtmpfs             483M     0  483M    0% /dev
tmpfs                493M     0  493M    0% /dev/shm
tmpfs                493M  6.8M  486M    2% /run
tmpfs                493M     0  493M    0% /sys/fs/cgroup
/dev/sda1            197M   97M  100M   50% /boot
tmpfs                 99M     0   99M    0% /run/user/0
192.168.30.128:/tmp   28G  7.6G   21G   28% /mnt

在客户端(129)创建一个123.txt的文件;

[root@yuioplvlinux-129 ~]# cd /mnt/
[root@yuioplvlinux-129 mnt]# touch 123.txt
[root@yuioplvlinux-129 mnt]# ll 123.txt 
-rw-r--r-- 1 root root 0 6月  22 23:33 123.txt

在服务端(128)查看;

[root@yuioplvlinux-128 ~]# cd /tmp/
[root@yuioplvlinux-128 tmp]# ll
总用量 1980
-rw-r--r-- 1 root  root        0 6月  22 23:33 123.txt
-rw-r--r-- 1 root  root  1321673 6月  20 23:30 mysql_all.sql
-rw-r--r-- 1 root  root    30807 6月  20 23:30 mysql_d.sql

可以看到123.txt的所有者和所属组都为root。

2.NFS客户端问题

       在早期的CentOS版本(CentOS6)使用NFS的4版本会存在一个问题,客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody,这时候有两种方式去解决。

1)客户端挂载时加上加上 -o nfsvers=3,指定NFS的版本为3

[root@yuioplvlinux-129 ~]# mount -t nfs -o,nfsvers=3 192.168.30.128:/tmp /mnt/
[root@yuioplvlinux-129 ~]# mount -t nfs -oremount,nfsvers=3 192.168.30.128:/tmp /mnt/   #重新挂载
[root@yuioplvlinux-129 ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/sda3             28G  3.3G   25G   12% /
devtmpfs             483M     0  483M    0% /dev
tmpfs                493M     0  493M    0% /dev/shm
tmpfs                493M  6.8M  486M    2% /run
tmpfs                493M     0  493M    0% /sys/fs/cgroup
/dev/sda1            197M   97M  100M   50% /boot
tmpfs                 99M     0   99M    0% /run/user/0
192.168.30.128:/tmp   28G  7.6G   21G   28% /mnt

2)在服务端和客户端都修改/etc/idmapd.conf配置文件;

exportfs命令及使用vsftpd搭建FTP服务_第1张图片

找到如图所示的这一行,去掉前面的#号,将其修改为“Domain = xxx.com”,这个地址可自定义,然后重启rpcidmapd服务即可解决。

3.FTP介绍

       FTP是File Transfer Protocol(文件传输协议)的英文缩写,用于在因特网上控制文件的双向传输。它同时也是一个应用程序,用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,以访问服务器上的大量程序和信息。

       FTP的主要作用就是让用户连接一个远程计算机,并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。FTP方便传输数据,所以个人用户很多,但在企业中用的越来越少,因为FTP是有一定安全隐患的。

4.使用vsftpd搭建FTP服务

4.1 安装vsftpd

CentOS有自带的FTP软件vsftpd,默认是没有安装的,需要用yum安装,“yum install -y vsftpd”。

4.2 建立账户

vsftpd默认可以支持使用系统账户登录,但是这样不太安全,建议使用虚拟账号来登录;

[root@yuioplvlinux-128 ~]# useradd -s /sbin/nologin virftp

创建与虚拟账号相关的文件,该文件的奇数行为用户名,偶数行为上一行的用户密码;

[root@yuioplvlinux-128 ~]# vim /etc/vsftpd/vsftpd_login
[root@yuioplvlinux-128 ~]# cat /etc/vsftpd/vsftpd_login
test1
123456
test2
qweasd

更改文件的权限,提升安全级别;

[root@yuioplvlinux-128 ~]# chmod 600 /etc/vsftpd/vsftpd_login

因为vsftpd使用的密码文件不是明文的,需要生成随意的库文件;

[root@yuioplvlinux-128 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

创建与虚拟账号相关的目录及配置文件;

[root@yuioplvlinux-128 ~]# mkdir /etc/vsftpd/vsftpd_user_conf

4.3 创建和用户对应的配置文件

用户的配置文件时单独存在的,每一个用户都有一个自己的配置文件,文件名和用户名一致;

[root@yuioplvlinux-128 ~]# cd /etc/vsftpd/vsftpd_user_conf 
[root@yuioplvlinux-128 vsftpd_user_conf]# vim test1
[root@yuioplvlinux-128 vsftpd_user_conf]# cat test1
local_root=/home/virftp/test1
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

local_root为test1账号的家目录,anonymous_enable用来限制是否允许匿名账号登录,write_enable=YES表示可写,local_umask指定umask值,anon_upload_enable表示是否允许匿名账号上传文件,anon_mkdir_write_enable表示是否允许匿名账号可写,其它参数不用关心。

创建FTP共享目录,并设定所属用户和所属组;

[root@yuioplvlinux-128 vsftpd_user_conf]# mkdir /home/virftp/test1
[root@yuioplvlinux-128 vsftpd_user_conf]# touch /home/virftp/test1/yu.txt
[root@yuioplvlinux-128 vsftpd_user_conf]# chown -R virftp:virftp /home/virftp

编辑配置文件/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

4.4 修改全局配置文件/etc/vsftpd/vsftpd.conf

编辑/etc/vsftpd/vsftpd.conf文件,修改以下内容:

1)将anonymous_enable=YES 改为 anonymous_enable=NO;

2)将#anon_upload_enable=YES 改为 anon_upload_enable=NO;

3)将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO;

4)在文件最后新增如下内容:

chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES

然后启动vsftpd服务;

[root@yuioplvlinux-128 ~]# systemctl start vsftpd
[root@yuioplvlinux-128 ~]# ps aux | grep vsftpd
root      5314  0.0  0.0  53260   576 ?        Ss   01:06   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      5316  0.0  0.0 112720   972 pts/2    R+   01:06   0:00 grep --color=auto vsftpd
[root@yuioplvlinux-128 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      868/nginx: master p 
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:41730           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:45220           0.0.0.0:*               LISTEN      4300/rpc.statd      
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      4282/rpcbind        
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      4314/rpc.mountd     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      868/nginx: master p 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      856/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1101/master         
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
tcp6       0      0 :::39619                :::*                    LISTEN      -                   
tcp6       0      0 :::33124                :::*                    LISTEN      4300/rpc.statd      
tcp6       0      0 :::3306                 :::*                    LISTEN      2085/mysqld         
tcp6       0      0 :::111                  :::*                    LISTEN      4282/rpcbind        
tcp6       0      0 :::20048                :::*                    LISTEN      4314/rpc.mountd     
tcp6       0      0 :::21                   :::*                    LISTEN      5314/vsftpd         
tcp6       0      0 :::22                   :::*                    LISTEN      856/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1101/master       

测试是否搭建成功,首先安装lftp客户端软件,使用命令“yum install -y lftp”;

[root@yuioplvlinux-128 ~]# lftp [email protected]
口令: 
lftp [email protected]:~> ls          
-rw-r--r--    1 1126     1126            0 Jun 22 16:52 yu.txt

使用lftp成功登录vsftpd,并且ls列出test1用户家目录下面的yu.txt。

4.5 使用xsheel的SFTP传输数据

新建一个会话,协议选择为SFTP。然后输入主机IP,端口还是22;

exportfs命令及使用vsftpd搭建FTP服务_第2张图片

登录成功后,默认的目录是root目录下;

sftp:/root> ls
dr-xr-x---   11 root     root         4096 Jun 23 01:16 .
dr-xr-xr-x   19 root     root         4096 May 28 21:29 ..
-rw-r--r--    1 root     root           18 Dec 29  2013 .bash_logout
-rw-r--r--    1 root     root          176 Dec 29  2013 .bash_profile
-rw-r--r--    1 root     root          176 Dec 29  2013 .bashrc
-rw-r--r--    1 root     root          100 Dec 29  2013 .cshrc
-rw-r--r--    1 root     root          129 Dec 29  2013 .tcshrc
-rw-------    1 root     root         1257 Mar 20 07:49 anaconda-ks.cfg
-rw-------    1 root     root       119372 Jun 23 01:24 .bash_history
drwx------    2 root     root          104 Mar 23 23:10 .ssh
-rw-------    1 root     root           66 Jun 20 23:45 .lesshst
lrwxrwxrwx    1 root     root           12 Mar 31 01:30 yu
-rw-r--r--    1 root     root           19 Mar 27 20:51 a1
lrwxrwxrwx    1 root     root            3 Mar 31 01:53 a2
-rw-r--r--    1 root     root         3441 Mar 17 12:34 default
-rw-r--r--    1 root     root           41 Mar 31 22:27 test.txt
-rw-r--r--    1 root     root            0 Apr 11 23:37 io.txt
-rw-r--r--    1 root     root            8 Apr 24 22:56 2.txt
drwxr-xr-x    2 root     root           35 Apr 26 03:59 grep
-rw-r--r--    1 root     root        12288 Jun 13 23:26 .3.txt.swp
-rw-------    1 root     root         8413 Jun 14 22:31 .viminfo.tmp
drwxr-xr-x    3 root     root           19 Jun 23 01:16 .local
drwxr-xr-x    3 root     root           18 Jun 23 01:16 .config
-rw-r--r--    1 root     root          162 Apr 19 23:43 Centos7-Base-163.repo
-rw-r--r--    1 root     root         1572 Apr 19 23:48 CentOS7-Base-163.repo
drwxr-----    3 root     root           19 Apr 20 00:25 .pki
-rw-r--r--    1 root     root           48 Apr 24 22:07 3.txt
-rw-r--r--    1 root     root          132 Apr 21 10:32 a.txt
-rw-r--r--    1 root     root          503 Apr 24 21:36 1.txt
drwxr-xr-x    2 root     root           35 Apr 26 22:45 sed
drwx------    3 root     root           17 Apr 26 23:55 .cache
drwxr-xr-x    2 root     root           22 Apr 27 04:10 awk
-rw-r--r--    1 tcpdump  tcpdump      3562 May  8 02:30 1.cap
-rw-r--r--    1 root     root            0 May 12 12:07 cron.log
drwxr-xr-x    4 root     root           32 May 14 23:14 rsync
-rw-r--r--    1 root     root            0 May 14 22:50 123.txt
-rw-r--r--    1 root     root          148 Jun  1 00:04 phpniuocvowv
-rw-------    1 root     root         1024 Jun 12 22:40 .rnd
-rw-------    1 root     root         6578 Jun 14 22:31 .viminfz.tmp
-rw-------    1 root     root         2798 Jun 20 23:27 .mysql_history
-rw-------    1 root     root         6559 Jun 23 01:03 .viminfo

设置sftp传输的文件夹;

使用get命令即可传输文件。

sftp:/root> get 1.cap
Fetching /root/1.cap to 1.cap
sftp: received 3.47 KB in 0.06 seconds

 

你可能感兴趣的:(Linux,Linux)