14.4 exportfs命令

14.5 NFS客户端问题

15.1 FTP介绍

15.2/15.3 使用vsftpd搭建ftp

14.4 exportfs命令:

exportfs命令是跟nfs-utils包一起安装的

应用场景:我们共享了一个目录,需要更改或者增加目录,就需要更改配置文件和重启NFS服务。如果远程客户端正在挂载着使用着,如果停掉远程客户端就会挂起(nginx或者php),这个影响会很大。就是D进程不可中断的进程。只能先卸载下来(umount)在重启NFS,但有几十台机器就不合适了。就会使用exportfs

~~1.

exportfs常用选项

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

一般使用 -arv,就会让配置文件生效

-r 重新挂载

-u 卸载某一个目录

-v 显示共享目录

以下操作在服务端上

vim /etc/exports //增加

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

exportfs -arv //不用重启nfs服务,配置文件就会生效

~~2.

以下操作在客户端

mount -t nfs 192.168.30.134:/tmp /tmp

或mount -t nfs -o nfsvers=3 192.168.30.134:/tmp/ /mnt/ #(为解决已经出现nobody,下一节有讲)。要先umonut /mnt/

ls -l !$

-oremount,nfsvers=3 (-o重新挂在完以后,可以使用-oremount。不卸载的话不能直接-oremount)

实例:

~~1.

[root@afeilinux-01 ~]# vim /etc/exports 打开那个配置文件

/home/nfstestdir 192.168.30.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

/tmp/ 192.168.30.134(rw,sync,no_root_squash) 在下面加入一行配置,选了no_root_squash(不限制root)此时写的是服务端的IP

[root@afeilinux-01 ~]# exportfs -arv 再exportfs -arv 重新加载显示共享目录

报错

exportfs: No options for /home/nfstestdir : suggest (sync) to avoid warning
exportfs: No options for 192.168.30.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000) : suggest (sync) to avoid warning
exportfs: No options for 192.168.30.134/24(rw,sync,no_root_squash,no_subtree_check) : suggest (sync) to avoid warning
exporting :192.168.30.134/24(rw,sync,no_root_squash,no_subtree_check)
exportfs: Failed to stat 192.168.30.134/24(rw,sync,no_root_squash,no_subtree_check): No such file or directory
exporting :192.168.30.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
exportfs: Failed to stat 192.168.30.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000): No such file or directory
exporting :/home/nfstestdir

检查配置文件

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

/home/nfstestdir 192.168.30.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
/tmp/ 192.168.30.134/24(rw,sync,no_root_squash)

发现第一行配置文件只能写成一行,两行会报错。第二行少了/。

exporting 192.168.30.134/24:/tmp
exporting 192.168.30.0/24:/home/nfstestdir

显示有了

双方关闭防火墙和selinux,不然会报错

 cat /var/log/messages | grep mount
 

~~2.

[root@afeilinux-02 ~]# showmount -e 192.168.30.134 在02上showmount看一下有没有

Export list for 192.168.30.134:
192.168.30.134/24(rw,sync,no_root_squash)                     *
192.168.30.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000) *
/home/nfstestdir 

[root@afeilinux-02 ~]# mount -t nfs 192.168.30.134:/tmp/ /mnt/ 在02上挂载到/mnt(这时的IP写的是服务端的,就是制定服务端的IP及共享的目录)到本机的/mnt

此时,02的/mnt就是01的/tmp

mount.nfs: /mnt is busy or already mounted

[root@afeilinux-02 ~]# df -h 看一下有没有这个挂载

文件系统                         容量  已用  可用 已用% 挂载点
/dev/sda3                         46G  4.9G   41G   11% /
devtmpfs                         476M     0  476M    0% /dev
tmpfs                            487M  7.7M  479M    2% /run
tmpfs                            487M     0  487M    0% /sys/fs/cgroup
192.168.30.134:/home/nfstestdir   46G  4.9G   41G   11% /mnt

是有的

在[root@afeilinux-02 mnt]#下挂载

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

创建文件报错

 vi /mnt/1212.txt

文件无法保存

取消挂载

 [root@afeilinux-02 mnt]# umount -l  192.168.30.134:/tmp/ /mnt/

再挂载

[root@afeilinux-02 ~]# mount -t nfs 192.168.30.134:/tmp/ /mnt/

[root@afeilinux-02 ~]# vi /mnt/1212.txt 在02上测试一下,在02的挂载点/mnt下建个文件

[root@afeilinux-02 ~]# ls -l /mnt/1212.txt 看一下

-rw-r--r--. 1 root root 0 7月  31 14:21 /mnt/1212.txt

属主属组为root

[root@afeilinux-01 ~]# ls -l /tmp/1212.txt 回到01上看一下

-rw-r--r--. 1 root root 0 7月  31 14:21 /tmp/1212.txt

属主属组也是root

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

14.5 NFS客户端问题:

~~NFS 4版本会有该问题,尤其是centos6

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

方法如下两种:

~1.

客户端挂载时加上 -o nfsvers=3 #指定为3版本

~2.客户端和服务端都需要

vim /etc/idmapd.conf //

把“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,随意定义吧),然后再重启rpcidmapd服务(在centos7上是没有rpcidmapd服务的,需要的话重启rpcbind就可以)

实例:

客户端和服务端都需要

vim /etc/idmapd.conf //

把“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,随意定义吧),然后再重启rpcidmapd服务(在centos7上是没有rpcidmapd服务的,需要的话重启rpcbind就可以)

需要的话重启rpcbind就可以

[root@afeilinux-02 ~]# umount /mnt/ 先卸载02的挂载点

[root@afeilinux-02 ~]# mount -t nfs -o,nfsvers=3 192.168.30.134:/tmp/ /mnt/ 再 -o,nfsvers=3

[root@afeilinux-02 ~]# mount -t nfs -oremount,nfsvers=3 192.168.30.134:/tmp/ /mnt/ 执行完上一步,才能-umount(没什么用,因为上一步已经挂载了,只是为了体现remount吧)

-rw-r--r--. 1 root root 0 7月  31 14:34 /mnt/1213.txt

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

15.1 FTP介绍:

应用场景:之前接触过lrzsz(windows与linux互传)。在文件太大(超过4G)或者,使用阿里云的机器存在跳板机(一台机器调到另一台机器,中间就有一个跳板机)的情况下,lrzsz会不好使。

FTP就可以解决。可以让我们在linux服务器上,搭建FTP服务。客户端上(比如windows)安装一个客户端软件。就可以连到服务端,吧本地的文件传到服务器上去,也可以把服务器的文件下载到本地来。这就是FTP服务器

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

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

~3.小公司用的多,大企业不用FTP,因为不安全 (使用自动化发布的工具,可理解为版本的更新上线)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

15.2/15.3 使用vsftpd搭建ftp:

centos上自带的ftp服务软件包就叫vsftpd

~1.centos上自带vsftpd

~2.yum install -y vsftpd

~3.useradd -s /sbin/nologin virftp

因为创建普通用户是可以通过ftp来登录系统的,这样不安全。所以要要设置一个虚拟用户,让他无法登录系统

创建普通用户的目的就是让这些虚拟的用户做一个映射的。就是在上传或者下载的时候要有一个用户去执行,就是我们再次创建的这个用户

~4.vim /etc/vsftpd/vsftpd_login //内容如下,奇数行为用户名,偶数行为密码,多个用户就写多行

这个文件为虚拟用户的密码文件,定义用户名和密码

testuser1

aminglinux

~5.chmod 600 /etc/vsftpd/vsftpd_login

~6.db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

db_load将这个密码文件转换成计算机识别的二进制文件

.db这个文件是不能直接cat的

~7.mkdir /etc/vsftpd/vsftpd_user_conf

创建虚拟用户的配置文件所在的目录,也是自定义的

~8.cd /etc/vsftpd/vsftpd_user_conf

~9.vim testuser1 //加入如下内容 创建第一个用户的配置文件,用户的名字要跟上面定义的用户名保持一致(~4.)

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 #当我们连接ftp空闲时间段,超出600秒断开(断开后重新登录)

data_connection_timeout=120 #数据传输的超出时间

max_clients=10 #最大的客户端是多少

~10. mkdir /home/virftp/testuser1 #创建虚拟用户的家目录

touch /home/virftp/testuser1/aming.txt #测试的时候会看到这个文件(lftp)

chown -R virftp:virftp /home/virftp

vim /etc/pam.d/vsftpd //在最前面加上 #用来定义密码文件在哪里(这个文件是用来认证的一个文件)。登录ftp需要有一个认证的过程,什么样的形式,去哪里找密码库,比对输入的用户密码对不对

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

红色标记的这个文件必须要是存在的,64位的

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

~11.vim /etc/vsftpd/vsftpd.conf #编辑vsftpd的主配置文件

将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 #虚拟用户要映射到一个系统的用户(就是我们之前操作的)。就使用guest_username

virtual_use_local_privs=YES #告诉服务我们现在使用的是虚拟服务

user_config_dir=/etc/vsftpd/vsftpd_user_conf #定义虚拟文件配置文件所在的路径

allow_writeable_chroot=YES

~12.systemctl start vsftpd //启动vsftpd服务

测试ftp:

~1.yum install -y lftp #为测试方便我们在linux上安装测试软件

也可以在windows上安装ftp客户端。filezilla client

lftp [email protected]

执行命令ls,看是否正常输出

若不正常查看日志/var/log/messages和/var/log/secure

windows下安装filezilla客户端软件,进行测试

实例:

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

[root@afeilinux-01 ~]# useradd -s /sbin/nologin virftp

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

testuser1
aminglinux

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

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

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

总用量 36
-rw-------. 1 root root   125 10月 31 2018 ftpusers
-rw-------. 1 root root   361 10月 31 2018 user_list
-rw-------. 1 root root  5116 10月 31 2018 vsftpd.conf
-rwxr--r--. 1 root root   338 10月 31 2018 vsftpd_conf_migrate.sh
-rw-------. 1 root root    38 7月  31 15:19 vsftpd_login
-rw-r--r--. 1 root root 12288 7月  31 15:23 vsftpd_login.db

[root@afeilinux-01 ~]# mkdir /etc/vsftpd/vsftpd_user_conf

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

[root@afeilinux-01 vsftpd_user_conf]#

[root@afeilinux-01 vsftpd_user_conf]# 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

[root@afeilinux-01 vsftpd__user_conf]# mkdir /home/virftp/testuser1

[root@afeilinux-01 vsftpd__user_conf]# touch /home/virftp/testuser1/aming.txt

[root@afeilinux-01 vsftpd__user_conf]# chown -R virftp:virftp /home/virftp

[root@afeilinux-01 vsftpd__user_conf]# 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

#%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
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

[root@afeilinux-01 vsftpd__user_conf]# ls /lib64/security/pam_userdb.so #检查这个文件是存在的

/lib64/security/pam_userdb.so

[root@afeilinux-01 vsftpd__user_conf]# vim /etc/vsftpd/vsftpd.conf

# Allow anonymous FTP? (Beware - allowed by default if you comment this out). #这一行的下一行修改

anonymous_enable=NO 修改为NO

# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access #这一行的下一行修改

anon_upload_enable=NO 注释去掉,修改为NO

# new directories. #这一行的下一行修改

anon_mkdir_write_enable=NO #注释去掉,修改为NO

主配置文件的最下面加入:

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

[root@afeilinux-01 vsftpd__user_conf]# systemctl start vsftpd

[root@afeilinux-01 vsftpd__user_conf]# ps aux |grep vsftpd

root       5647  0.0  0.0  53276   572 ?        Ss   15:46   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root       5652  0.0  0.0 112724   988 pts/0    R+   15:49   0:00 grep --color=auto vsftpd

[root@afeilinux-01 vsftpd__user_conf]# netstat -lntp

tcp6 0 0 :::21 :::* LISTEN 2565/vsftpd vsftpd监听21端口

测试:

tcp        0      0 0.0.0.0:36653           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      5532/rpc.mountd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      864/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      981/master
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:47234           0.0.0.0:*               LISTEN      4701/rpc.statd
tcp6       0      0 :::3306                 :::*                    LISTEN      1128/mysqld
tcp6       0      0 :::45100                :::*                    LISTEN      -
tcp6       0      0 :::39311                :::*                    LISTEN      4701/rpc.statd
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
tcp6       0      0 :::20048                :::*                    LISTEN      5532/rpc.mountd
tcp6       0      0 :::21                   :::*                    LISTEN      5647/vsftpd
tcp6       0      0 :::22                   :::*                    LISTEN      864/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      981/master
tcp6       0      0 :::2049                 :::*                    LISTEN      -    

[root@afeilinux-01 ~]# yum install -y lftp

[root@afeilinux-01 ~]# lftp [email protected]

口令:

lftp [email protected]:~> ls

-rw-r--r--    1 1002     1002            0 Jul 31 07:34 aming.txt

lftp [email protected]:/> get testuser1/aming.txt

49 bytes transferred

lftp [email protected]:/> exit

[root@afeilinux-01 ~]# ls

testuser1

[root@afeilinux-01 ~]# cat aming.txt

dfsdfsgfsgfsdfsd

sdgfsdfsdfsd

sdfsdfsdfsdfsfsfsd

xshell怎么实现跟ftp类似的功能:

两种方法~1.与~2.

~1.

新建一个会话

55.exportfs命令 NFS客户端问题 FTP介绍与使用vsftpd搭建ftp-LMLPHP

进去以后可以ls看一下。我们get下来的文件的路径可以自定义(比如到桌面上)

55.exportfs命令 NFS客户端问题 FTP介绍与使用vsftpd搭建ftp-LMLPHP

~2.

使用xftp。在xshell界面按Ctrl+Alt+F,会提示安装xftp

具体操作在下一任务。(56)

07-31 21:11