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

目录

一 、exportfs命令
二、NFS客户端问题
三、FTP介绍
四、使用vsftpd搭建ftp

一 、exportfs命令

  • 首次配置完成NFS的共享目录后,如果想要要对共享目录或信任主机进行修改,则需要修改配置文件和重启NFS服务。但此时远程客户端有可能正在挂载并使用NFS的共享目录,重启服务会导致远程客户端被挂起,无法提供服务。所以想重启NFS服务需要先将客户端上挂载的NFS格式的分区或目录卸载。

  • 当有几十台甚至更多的服务器挂载了NFS格式的分区,挂载和卸载会比较困难,此时就会用到exportfs命令。当改变/etc/exports配置文件后,使用exportfs命令挂载不需要重启NFS服务。

  • exportfs命令

常用选项:
-a 全部挂载或者全部卸载
-r 重新挂载
-u 卸载某一个目录
-v 显示共享目录

  • 服务端修改配置文件
[root@minglinux-01 ~] vim /etc/exports
//增加一行
1 /home/nfstestdir 192.168.162.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)   
2 /tmp 192.168.162.132(rw,sync,no_root_squash)

[root@minglinux-01 ~] exportfs -arv  //执行exportfs命令使修改生效
exporting 192.168.162.132:/tmp
exporting 192.168.162.0/24:/home/nfstestdir

  • 在客户端查看
[root@minglinux-02 ~] showmount -e 192.168.162.130
Export list for 192.168.162.130:
/home/nfstestdir 192.168.162.0/24
/tmp             192.168.162.132
[root@minglinux-02 ~] mount -t nfs 192.168.162.130:/tmp/ /mnt/
mount.nfs: /mnt is busy or already mounted
[root@minglinux-02 ~] umount -l /mnt/
[root@minglinux-02 ~] mount -t nfs 192.168.162.130:/tmp/ /mnt/
//用mount命令来挂载NFS服务要用-t nfs来指定挂载的类型为nfs
[root@minglinux-02 ~] df -h
文件系统              容量  已用  可用 已用% 挂载点
/dev/sda3              28G  3.1G   25G   11% /
devtmpfs              901M     0  901M    0% /dev
tmpfs                 911M     0  911M    0% /dev/shm
tmpfs                 911M  9.6M  902M    2% /run
tmpfs                 911M     0  911M    0% /sys/fs/cgroup
/dev/sda1             197M  140M   58M   71% /boot
tmpfs                 183M     0  183M    0% /run/user/0
192.168.162.130:/tmp   28G  6.6G   22G   24% /mnt
[root@minglinux-02 ~] ls /mnt/    //该目录即为服务端的tmp目录
ming.sock   mysql_all.sql  mysql.sock     test.com.log  vmware-root
mysql2.sql  mysqlbak.sql   php-fcgi.sock  user.sql

[root@minglinux-02 ~] vim /mnt/1.txt    //创建一个新文件
[root@minglinux-02 ~] ls -l /mnt/1.txt 
-rw-r--r--. 1 root root 8 12月 11 20:04 /mnt/1.txt
  • 服务端查看
[root@minglinux-01 ~] ls -l /tmp/
总用量 1980
-rw-r--r-- 1 root  root        8 12月 11 20:04 1.txt
srw-rw-rw- 1 root  root        0 12月  8 23:03 ming.sock
-rw-r--r-- 1 root  root    30853 12月  6 23:31 mysql2.sql
-rw-r--r-- 1 root  root  1317840 12月  6 23:29 mysql_all.sql
-rw-r--r-- 1 root  root   659126 12月  6 23:17 mysqlbak.sql
srwxrwxrwx 1 mysql mysql       0 12月  8 23:03 mysql.sock
srw-rw-rw- 1 root  root        0 12月  8 23:03 php-fcgi.sock
-rw-r--r-- 1 root  root     1567 12月  3 23:17 test.com.log
-rw-r--r-- 1 root  root     6541 12月  6 23:24 user.sql
drwx------ 2 root  root        6 12月 11 17:23 vmware-root

二、NFS客户端问题

  • 问题:客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody。NFS的4版本有该问题,偶尔会出现。

  • 解决方法:指定nfs的版本为3,客户端和服务端均需要指定。

  • 方案1:客户端挂载时加上 -o nfsvers=3

[root@minglinux-02 ~] mount -t nfs -onfsvers=3 192.168.162.130:/tmp/ /mnt/
[root@minglinux-02 ~] mount -t nfs -oremount,nfsvers=3 192.168.162.130:/tmp/ /mnt/
  • 方案2:vim /etc/idmapd.conf
    // 把“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,随意定义吧),然后再重启rpcidmapd服务(centos7下重启rpcbind服务)
[root@minglinux-02 ~] vim /etc/idmapd.conf 
···
  5 #Domain = local.domain.edu
  6 Domain = xxx.com
···
[root@minglinux-02 ~] systemctl restart rpcbind

三、FTP介绍

  • FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
  • FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着-FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。
  • 小公司用的多,大企业不用FTP,因为不安全。Git是一个版本管理工具,许多企业用该工具管理网站程序的版本。

四、使用vsftpd搭建ftp

CentOS或者Red Hat Linux上有自带的FTP软件vsftpd,默认并没有安装,需要用yum安装,安装后不用配置,启动后便可以使用。

  • 安装vsftpd
 [root@minglinux-01 ~] yum install -y vsftpd

vsftpd默认可以支持使用系统账号体系登录,但这样不太安全。我们可以创建虚拟用户,并将虚拟用户映射为系统中的某个普通用户,但虚拟用户无法用于登录linux系统的。

  • 创建虚拟用户
[root@minglinux-01 ~] useradd -s /sbin/nologin virftp
//为了FTP传输文件专门创建的虚拟用户,-s指定用户的shell,/sbin/nologin则该用户无法登录系统
  • 建立与虚拟账户相关的文件
[root@minglinux-01 ~] vim /etc/vsftpd/vsftpd_login  //更改该文件的权限,提升安全级别
##该文件的奇数行为用户名,偶数行为上一行的用户密码。
  1 ming1
  2 123456
  3 ming2
  4 abcdef
[root@minglinux-01 ~] chmod 600 /etc/vsftpd/vsftpd_login
[root@minglinux-01 ~] cat !$
cat /etc/vsftpd/vsftpd_login
ming1
123456
ming2
abcdef
[root@minglinux-01 ~] db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
//将文本形式的密码文件转换为计算机识别的二进制密码文件
[root@minglinux-01 ~] ls -l /etc/vsftpd/
总用量 36
-rw------- 1 root root   125 10月 31 03:45 ftpusers
-rw------- 1 root root   361 10月 31 03:45 user_list
-rw------- 1 root root  5116 10月 31 03:45 vsftpd.conf
-rwxr--r-- 1 root root   338 10月 31 03:45 vsftpd_conf_migrate.sh
-rw------- 1 root root    26 12月 11 23:33 vsftpd_login
-rw-r--r-- 1 root root 12288 12月 11 23:34 vsftpd_login.db

  • 建立与虚拟账号相关的目录以及配置文件
[root@minglinux-01 /etc/vsftpd/vsftpd_user_conf] vim ming1 
//用户的配置文件是单独存在的,每一个用户都有一个自己的配置文件,文件名和用户名一致
//写入如下内容
  1 local_root=/home/virftp/ming1
  2 anonymous_enable=NO
  3 write_enable=YES
  4 local_umask=022
  5 anon_upload_enable=NO
  6 anon_mkdir_write_enable=NO
  7 idle_session_timeout=600
  8 data_connection_timeout=120
  9 max_clients=10

local_root为ming1账号的家目录,登录系统的虚拟用户会在该目录下读写文件
anonymous_enable用来限制是否允许匿名账号登录(若为NO,表示不
允许匿名账号登录)
write_enable=YES表示可写
local_umask指定umask值
anon_ upload_enable表示是否允许匿名账号上传文件anon_mkdir_write_enable表示是否允许匿名账号可写
idle_session_timeout表示空闲状态下的超时时间
data_connection_timeout表示数据传输超时时间
max_clients表示最大客户端连接数

  • 创建虚拟用户家目录
[root@minglinux-01 /etc/vsftpd/vsftpd_user_conf] mkdir /home/virftp/ming1
[root@minglinux-01 /etc/vsftpd/vsftpd_user_conf] cd /home/virftp
[root@minglinux-01 /home/virftp] touch /home/virftp/ming1/ming.txt
[root@minglinux-01 /home/virftp] chown -R virftp:virftp /home/virftp
[root@minglinux-01 /home/virftp] ls -ld
drwx------ 3 virftp virftp 75 12月 11 23:50 .
[root@minglinux-01 /home/virftp] ll
总用量 0
drwxr-xr-x 2 virftp virftp 22 12月 12 00:10 ming1
  • 定义密码文件位置
[root@minglinux-01 /home/virftp] vim /etc/pam.d/vsftpd    
//该文件为登录ftp时用于认证的文件,记录登录ftp认证时的认证形式和认证时使用的密码库位置等信息
//插入2和3两行内容
  1 #%PAM-1.0
  2 auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
  3 account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
  4 session    optional     pam_keyinit.so    force revoke
  5 auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftp    d/ftpusers onerr=succeed
  6 auth       required     pam_shells.so
  7 auth       include      password-auth
  8 account    include      password-auth
  9 session    required     pam_loginuid.so
 10 session    include      password-auth

CentOS7为64位系统,所以库文件路径为/lib64/security/pam_userdb.so(32位系统的库文件路径为/lib/security/pam_userdb.so)。

  • 修改vsftpd的主配置文件
···
 12 anonymous_enable=NO //将anonymous_enable=YES 改为 anonymous_enable=NO
···
 29 anon_upload_enable=NO // 将#anon_upload_enable=YES 改为 anon_upload_enable=NO 
···
 33 anon_mkdir_write_enable=NO // 将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO
···

增加如下内容
130 chroot_local_user=YES
131 guest_enable=YES
132 guest_username=virftp
133 virtual_use_local_privs=YES
134 user_config_dir=/etc/vsftpd/vsftpd_user_conf
135 allow_writeable_chroot=YES

  • 启动vsftpd服务
[root@minglinux-01 /home/virftp] systemctl start vsftpd
[root@minglinux-01 /home/virftp] ps aux | grep vsftp
root       4043  0.0  0.0  53260   576 ?        Ss   00:30   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root       4046  0.0  0.0 112720   984 pts/1    S+   00:33   0:00 grep --color=auto vsftp
[root@minglinux-01 /home/virftp] 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:2049            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      1512/rpc.mountd     
tcp        0      0 0.0.0.0:56309           0.0.0.0:*               LISTEN      1504/rpc.statd      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      782/sshd            
tcp        0      0 0.0.0.0:34296           0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
tcp6       0      0 :::36705                :::*                    LISTEN      1504/rpc.statd      
tcp6       0      0 :::3306                 :::*                    LISTEN      1225/mysqld         
tcp6       0      0 :::33900                :::*                    LISTEN      -                   
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::20048                :::*                    LISTEN      1512/rpc.mountd     
tcp6       0      0 :::21                   :::*                    LISTEN      4043/vsftpd         
tcp6       0      0 :::22                   :::*                    LISTEN      782/sshd     

  • 安装linux上的ftp客户端软件lftp
yum install -y lftp
  • 测试
[root@minglinux-01 /home/virftp] lftp ming1@127.0.0.1
口令: 
lftp ming1@127.0.0.1:~> ls          
-rw-r--r--    1 1014     1014            0 Dec 11 16:10 ming.txt
lftp ming1@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>
lftp ming1@127.0.0.1:/> get ming.txt
lftp ming1@127.0.0.1:/> quit
[root@minglinux-01 /home/virftp] ls
ming1  ming.txt

使用lftp成功登录vsftpd,并且ls列出ming1用户家目录下面的ming.txt,其中1014为virftp用户的uid和gid。
输入?后回车可以查看支持的命令。
get命令获取远程服务端的文件,文件下载到当前目录下。

  • Windows上用xshell实现与ftp类似的功能
  1. 使用SFTP实现:
  • 新建会话


    image.png
  • 输入用户名和密码连接


    image.png
image.png
  • 成功登录


    image.png
  • 测试get一个文件

sftp:/root> cd /tmp
sftp:/tmp> ls
drwxrwxrwt    8 root     root          276 Dec 12 00:35 .
dr-xr-xr-x   19 root     root          271 Nov 10 16:09 ..
drwxrwxrwt    2 root     root            6 Sep  5 01:18 .font-unix
drwxrwxrwt    2 root     root            6 Sep  5 01:18 .XIM-unix
drwxrwxrwt    2 root     root            6 Sep  5 01:18 .X11-unix
drwxrwxrwt    2 root     root            6 Sep  5 01:18 .Test-unix
drwxrwxrwt    2 root     root            6 Sep  5 01:18 .ICE-unix
-rw-r--r--    1 root     root         1567 Dec  3 23:17 test.com.log
-rw-r--r--    1 root     root       659126 Dec  6 23:17 mysqlbak.sql
-rw-r--r--    1 root     root         6541 Dec  6 23:24 user.sql
-rw-r--r--    1 root     root      1317840 Dec  6 23:29 mysql_all.sql
-rw-r--r--    1 root     root        30853 Dec  6 23:31 mysql2.sql
srw-rw-rw-    1 root     root            0 Dec  8 23:03 ming.sock
srw-rw-rw-    1 root     root            0 Dec  8 23:03 php-fcgi.sock
srwxrwxrwx    1 mysql    mysql           0 Dec  8 23:03 mysql.sock
drwx------    2 root     root            6 Dec 11 17:23 vmware-root
-rw-r--r--    1 root     root            8 Dec 11 20:04 1.txt
sftp:/tmp> get php-fcgi.sock   //无权限读取该文件
sftp: cannot open /tmp/php-fcgi.sock to read
sftp:/tmp> get user.sql  //获取成功
Fetching /tmp/user.sql to user.sql
sftp: received 6.38 KB in 0.01 seconds
  • 设置文件存储的路径
image.png
  1. 使用xftp实现:
    下载xftp连接即可


    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容