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

exportfs命令

  • 经常使用选项
  • -a 所有挂载或者所有卸载
  • -r 从新挂载
  • -u 卸载某一个目录
  • -v 显示共享目录
  • 如下操做在服务端上 -vim /etc/exports //增长
/tmp/ 192.168.180.0/24(rw,sync,no_root_squash)
  • exportfs -arv //不用重启nfs服务,配置文件就会生效
  • 如下操做在客户端
  • mkdir /aminglinux
  • mount -t nfs -onolock 192.168.180.134:/tmp /aminglinux
  • touch /aminglinux/test.txt
  • ls -l !$
  • -oremount,nfsvers=3

exportfs命令

  • exportfs命令和nfs-utils这个包一块儿安装的
  • 例子:
    • 假设在第一次配置nfs的共享目录,以后须要新增、更改某些机器或共享的目录;
    • 首先须要更改配置文件,而后重启NFS服务,但若是远程客户端正在使用NFS服务,正在挂载着,若是你须要先中止nfs服务,那远程的客户端就会挂起,就会很大的影响,形成服务异常,进程异常,有很大可能致使系统坏掉
  • nfs服务不能随便重启,要重启,就须要先去服务器上,把挂载的目录卸载下来
    • 在卸载目录的时候,如果在当前目录下去卸载会提示umount.nfs4: /mnt: device is busy
      • 方法一:退出该目录后,再去卸载
      • 方法二:在目录下卸载的时候,加 -l 选项,表示 lazy 懒惰的意思
    • 在卸载目录后,在重启nfs服务
  • 如果挂载了不少台机器,那么每台机器都须要去卸载,就会很麻烦,下降了工做效率
    • 方法:使用exportfs命令,从新加载下
  • exportfs命令
    • -a 所有挂载或者所有卸载
    • -r 从新挂载
    • -u 卸载某一个目录
    • -v 显示共享目录
  • 在B机器客户端,卸载目录
[root@yong-02 ~]# umount /mnt
[root@yong-02 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   18G  5.6G   13G   32% /
devtmpfs                 905M     0  905M    0% /dev
tmpfs                    916M     0  916M    0% /dev/shm
tmpfs                    916M  8.6M  908M    1% /run
tmpfs                    916M     0  916M    0% /sys/fs/cgroup
/dev/sda1                197M  121M   77M   62% /boot
tmpfs                    184M     0  184M    0% /run/user/0
  • 在A机器上的/etc/exports配置文件中,在增长一行,把 /tmp 目录单独共享给192.168.180.134 这个IP,使用exportfs -arv命令
  • exportfs -arv命令,从新使配置文件生效
[root@yong-01 ~]# exportfs -arv
exporting 192.168.180.0/24:/tmp
exporting 192.168.180.0/24:/home/nfstestdir
  • 而后在A机器服务端执行exportfs -arv命令
  • 在B机器客户端showmount -e看是否生效——>并无重启nfs服务,就已经生效
[root@yong-02 ~]# showmount -e 192.168.180.134
Export list for 192.168.180.134:
/tmp             192.168.180.0/24
/home/nfstestdir 192.168.180.0/24
  • 在B机器客户端挂载,将 tmp目录 挂载到 mnt 目录下
[root@yong-02 ~]# mount -t nfs 192.168.180.134:/tmp/ /mnt
[root@yong-02 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   18G  5.6G   13G   32% /
devtmpfs                 905M     0  905M    0% /dev
tmpfs                    916M     0  916M    0% /dev/shm
tmpfs                    916M  8.6M  908M    1% /run
tmpfs                    916M     0  916M    0% /sys/fs/cgroup
/dev/sda1                197M  121M   77M   62% /boot
tmpfs                    184M     0  184M    0% /run/user/0
192.168.180.134:/tmp      18G  8.1G  9.8G   46% /mnt
  • 如今在B机器客户端,查看到的/mnt/目录就是192.168.180.134IP下的tmp目录 ,再到A机器上查看tmp目录,会看到两个目录下的文件内容会同样的。
  • 这时在B机器客户端的mnt目录下建立文件,并查看目录下的文件,能看到新建的nfs.txt文件的属主和属组都是root
[root@yong-02 ~]# vim /mnt/nfs.txt
[root@yong-02 ~]# ll /mnt/nfs.txt 
-rw-r--r-- 1 root root 8 6月  23 11:23 /mnt/nfs.txt
  • 这时再到A机器服务端查看tmp目录,会看到nfs.txt文件的属主和属组也是root
[root@yong-01 ~]# ll /tmp/nfs.txt 
-rw-r--r-- 1 root root 8 6月  23 11:23 /tmp/nfs.txt
  • 这就是由于在A机器服务端的配置文件中,使用了no_root_squash ,因此root用户不受约束,在B机器上到挂载点下,到共享目录下,就能够像在本地磁盘使用root用户同样,是不受限制的(一般状况下,不限制root用户的比较多)

NFS客户端问题

  • NFS 4版本会有该问题
  • 客户端挂载共享目录后,不论是root用户仍是普通用户,建立新文件时属主、属组为nobody
  • 客户端挂载时加上 -o nfsvers=3
  • 客户端和服务端都须要
  • vim /etc/idmapd.conf //
  • 把“#Domain = local.domain.edu” 改成 “Domain = xxx.com” (这里的xxx.com,随意定义吧),而后再重启rpcidmapd服务

NFS知识点

  • 在centos6中,遇到的问题比较多,针对的NFS 4版本有这个问题
    • 问题:客户端挂载共享目录后,不论是root用户仍是普通用户,建立新文件时属主、属组为nobody,虽然已经定义了 no_root_squash 不在限制root用户,最终建立完文件后发现属主和属组不是root或者是限定的1000,而是显示的是 nobody ,这就是NFS 4版本出现的问题,尤为是在centos6 系统上
    • 解决问题:
      • 方法一:是在客户端挂载的时候,加上-o nfsvers=3 ,意思就是指定NFS的版本为 3 ,不在用4的版本
        • mount -t nfs -o nfsvers=3 192.168.180.134:/tmp/ /mnt/
          • 如果不想卸载,直接挂载,可使用mount -t nfs -oremount,nfsvers=3 192.168.180.134:/tmp/ /mnt/ (前提是先挂载上去)
      • 方法二:更改配置文件vim /etc/idmapd.conf ,把“#Domain = local.domain.edu” 改成 “Domain = xxx.com” (这里的xxx.com,随意定义吧),而后再重启rpcidmapd服务
        • 在cnetos7中,自己是没有rpcidmapd服务的,只须要重启rpcbind服务就能够了

FTP介绍

  • FTP多用于Windows传文件到linux
  • rz sz在文件超过4G,就没法使用了——>安装包yum install -y install lrzsz
    • rz把 window 上的文件传输到 linux 上
    • sz 把 linux 上的文件传输到 window 上
  • FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
  • FTP的主要做用就是让用户链接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,而后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。
  • 小公司用的多,大企业不用FTP(多用自动化发布工具),由于不安全

使用vsftpd搭建ftp目录概要

  • centos上自带vsftpd
  • yum install -y vsftpd
  • useradd -s /sbin/nologin virftp
  • vim /etc/vsftpd/vsftpd_login //内容以下,奇数行为用户名,偶数行为密码,多个用户就写多行
testuser1
aminglinux
  • chmod 600 /etc/vsftpd/vsftpd_login
  • db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
  • mkdir /etc/vsftpd/vsftpd_user_conf
  • cd /etc/vsftpd/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
  • mkdir /home/virftp/testuser1
  • touch /home/virftp/testuser1/aming.txt
  • chown -R virftp:virftp /home/virftp
  • 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
  • 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
user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES
  • systemctl start vsftpd //启动vsftpd服务

使用vsftpd搭建ftp

  • 在centos上默认自带的ftp服务软件包叫作vsftpd,vsftpd软件包是可使用系统级别的用户,(也就是假设建立了一个普通用户user1,设置一个密码,这时候就能够用vsftpd启动这个服务,而后用user1这个用户去登录,登陆的形式为ftp,登陆进去后会进入到user1这个用户的家目录下,但这样操做会存在安全隐患)
    • 解决隐患的方法:给ftp设置一个虚拟用户,虚拟用户映射成系统中的一个普通用户(也能够映射多个虚拟用户),这个用户即便给了用户和密码你也是没有办法去经过ssh登陆到服务器的机器,这样就相对安全了不少
  • 安装vsftpd包——>yum install -y vsftpd
[root@yong-01 ~]# yum install -y vsftpd
  • 在安装完成后建立一个普通用户,目的是为了让虚拟用户作一个映射的
  • useradd -s /sbin/nologin virftp
    • 用户名字能够随意取
    • -s 指定它的shell
    • /sbin/nologin 表示这个用户不能登陆到系统,这么作是为了安全
[root@yong-01 ~]# useradd -s /sbin/nologin virftp
  • 编辑 vim /etc/vsftpd/vsftpd_login 虚拟用户的密码文件,在密码文件中定义用户名和密码
  • 文件格式为:奇数行为用户名,偶数行为密码,多个用户就写多行
[root@yong-01 ~]# vim /etc/vsftpd/vsftpd_login

testuser1
123456
user1
111111a
  • 在编辑完密码文件,而后给 /etc/vsftpd/vsftpd_login 文件作一个 600的权限设置,为了确保密码文件的安全,防止全部的用户均可以读取
  • chmod 600 /etc/vsftpd/vsftpd_login
[root@yong-01 ~]# chmod 600 /etc/vsftpd/vsftpd_login
  • 将文本的密码文件转换为计算机识别的二进制文件
  • db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@yong-01 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@yong-01 ~]# ll /etc/vsftpd/
总用量 36
-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    31 6月  23 12:09 vsftpd_login
-rw-r--r-- 1 root root 12288 6月  23 12:10 vsftpd_login.db
  • 在/etc/vsftpd/目录下,会看到生成了一个vsftpd_login.db文件,它和vsftpd_login文件相比只是多了一个 .db 的后缀
  • 这个vsftpd_login.db密码是不能世界 cat命令 查看的,在上面的密码文件是能够自定义的
  • 建立虚拟用户所在的配置文件目录,这个目录也是自定义的,也是须要在配置文件中定义
  • mkdir /etc/vsftpd/vsftpd_user_conf
  • 切换到 /etc/vsftpd/vsftpd_user_conf 文件下
  • cd /etc/vsftpd/vsftpd_user_conf
[root@yong-01 ~]# cd /etc/vsftpd/vsftp_user_conf/
[root@yong-01 vsftp_user_conf]#
  • 建立第一个用户的配置文件,用户的配置文件名字有一点特殊性,须要和用户的名字保持一致,好比在密码配置文件中的用户为testuser1,那么定义的配置文件用户名称就为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                 //链接ftp超时时间(秒)
data_connection_timeout=120         //数据传输的超时时间(秒)
max_clients=10                                //最多容许同时几个终端链接
  • 最终以下
[root@yong-01 vsftp_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
  • 建立虚拟用户的家目录
  • mkdir /home/virftp/testuser1
[root@yong-01 vsftp_user_conf]# mkdir /home/virftp/testuser1
  • 新建一个文件,在登陆的时候就能够看到这个文件了
  • touch /home/virftp/testuser1/yy.txt
[root@yong-01 vsftp_user_conf]# touch /home/virftp/testuser1/yy.txt
  • 将权限作一个修改,由于最后映射成virftp 这个用户,若virftp这个用户没有读的权利那就是错误的,没法正常的去上传和下载
  • chown -R virftp:virftp /home/virftp
[root@yong-01 vsftp_user_conf]# chown -R virftp:virftp /home/virftp/
[root@yong-01 vsftp_user_conf]# ll /home/virftp/
总用量 0
drwxr-xr-x 2 virftp virftp 20 6月  23 12:14 testuser1
  • 定义密码文件的路径
  • 将文件内容放入到/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

最终以下linux

[root@yong-01 vsftp_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
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
  • /etc/pam.d/vsftpd,它是一个用来认证的文件,在登陆FTP须要有一个认证的过程,认证的过程须要告诉它,经过什么样的形式去认证,认证的时候去哪里找这个密码库
  • 在/etc/pam.d/vsftpd 添加的/lib64/security/pam_userdb.so,centos6中是为了区分版本,分32位和64位,必定要注意这个文件是存在的(lib64或lib32)
  • 编辑 /etc/vsftpd/vsftpd.conf 主配置文件
[root@yong-01 vsftpd_user_conf]# 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               //告诉服务,咱们如今用的虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf   //定义虚拟用户配置文件所在路径
allow_writeable_chroot=YES
  • 更改完配置文件,去启动vsftpd服务,启动完并查看下进程和监听的端口
  • systemctl start vsftpd //启动vsftpd服务
[root@yong-01 vsftp_user_conf]# systemctl start vsftpd
[root@yong-01 vsftp_user_conf]# ps aux |grep vsftpd
root      2099  0.0  0.0  53212   572 ?        Ss   12:22   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      2101  0.0  0.0 112676   984 pts/0    R+   12:23   0:00 grep --color=auto vsftpd
[root@yong-01 vsftp_user_conf]# netstat -lntp |grep vsftpd
tcp6       0      0 :::21                   :::*                    LISTEN      2099/vsftpd
  • FTP监听的端口为21端口,22端口是sshd,23端口是telnet(如今telnet几乎没人使用了)

测试FTP

  • 最好在windows上安装一个FTP的客户端软件,filezilla client软件是FTP开源的、免费的能够搭建服务,同时还有一个客户端软件

  • vsftpd服务已经启动
  • 这里为了方便测试,直接在linux上的FTP客户端,为lftp——>安装包yum install -y lftp
[root@yong-01 ~]# yum install -y lftp
  • 安装完成以后,按以下输入方式,而后回车输入密码口令,用ls命令就能够查看到刚刚以前建立的文件,可见,已经链接成功
[root@yong-01 ~]# lftp testuser1@127.0.0.1
口令: 
lftp testuser1@127.0.0.1:~> ls      
drwxr-xr-x    2 1004     1004           20 Jun 23 04:14 testuser1
  • 能够输入 ? 查看可使用使用哪些命令
  • 好比进入到testuser1目录里面,把yy.txt文件直接下载到当前目录
lftp testuser1@127.0.0.1:/> cd testuser1/
lftp testuser1@127.0.0.1:/testuser1> ls
-rw-r--r--    1 1004     1004            0 Jun 23 04:14 yy.txt
lftp testuser1@127.0.0.1:/testuser1> get yy.txt
  • 输入quit 退出ftp
  • 在当前目录直接ls命令查看,会看到yy.txt文件就是刚刚下载下来的
[root@yong-01 ~]# ll yy.txt
-rw-r--r-- 1 root root 0 6月  23 12:14 yy.txt
  • 查询在lftp中可执行的命令,经常使用命令:put、get

xshell实现跟FTP的功能(两种方案)

第一种方案:shell

  1. 在xshell中新建一个会话属性,将名称随便填写,协议改为 sftp 协议,IP为本机的IP,端口仍是22端口,由于走的仍是ssh协议

  • 而后打开,输入用户名和密码,默认是在root下

文件下载路径:vim

  • 第二种方案
    • 输入ctrl+alt+f 使用xftp
相关文章
相关标签/搜索