14.4 exportfs命令

  • exportfs命令是随nfs-utils安装包一起安装的.

  • exportfs命令的应用场景:

  • 假设在服务器上已配置了NFS服务,共享了NFS目录.过段时间,需要增加另一个共享目录,那么我们需要编辑NFS配置文件\etc\exports,然后重启NFS服务.然而,问题是,由于已经有NFS客户端在使用我们之前创建的共享目录了,如果我们停止/重起NFS服务的话,会导致NFS客户端相关使用NFS服务的进程(比如nginx)被挂起(进程状态为D),从而出现重启不了,又杀不死进程,甚至把机器搞死机的尴尬情况.

  • 为了避免这种情况,在停止/重启NFS服务时,需要先将NFS客户端上挂载的共享目录卸载,待NFS服务重起后,再挂载.但如果有很多NFS客户端的话,这将是一件工作量很大的事情.为了解决这个问题,可使用exportfs命令.

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


  • 示例操作:
  • NFS服务端增加/tmp/为共享目录,后使用exportfs命令让配置文件生效(不用重启NFS服务).
  • 服务端上的操作:
  • 编辑NFS配置文件: vim /etc/exports
  • 增加如下一行: /tmp/ 192.168.133.132(rw,sync,no_root_squash)
  • exportfs -arv #执行后不用重启nfs服务,配置文件就会生效
  • 客户端上的操作:
  • showmount -e 192.168.133.130 #IP为NFS服务端的IP地址
  • mount -t nfs 192.168.133.130:/tmp/ /mnt/ #挂载服务端的/tmp目录
  • touch /mnt/1212.txt
  • ls -l /mnt/

14.5 NFS客户端问题

  • NFS 4版本(尤其是在centos6上)会有如下问题: 客户端挂载共享目录后,不管是root用户还是普通用户,在创建新文件时属主、属组为nobody.
  • 解决方法有两种:
  • 方法1:
  • 客户端挂载时加上 -o nfsvers=3(或-oremount,nfsvers=3,重新进行挂载),例如: mount -t nfs -oremount,nfsvers=3 192.168.133.130:/tmp/ /mnt/
  • 方法2:
  • 更改/etc/idmapd.conf配置文件,客户端和服务端都需要.
  • 编辑/etc/idmapd.conf配置文件: vim /etc/idmapd.conf 把"#Domain = local.domain.edu"改为"Domain = xxx.com"(这里的xxx.com,随意定义),然后再重启rpcidmapd服务(centos7中没有rpcidmapd,重启rpcbind则可).

15.1 FTP介绍

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

15.2/15.3 使用vsftpd搭建ftp

  • 这两小节学习使用centos自带vsftpd来搭建ftp.
  • 安装vsftpd yum install -y vsftpd
  • 创建用于ftp连接用的用户(出于安全考虑,这里使用虚拟用户) useradd -s /sbin/nologin virftp
  • 创建vsftpd密码文件: vim /etc/vsftpd/vsftpd_login
  • 增加内容如下(奇数行为用户名,偶数行为密码,多个用户就写多行): testuser1 aminglinux
  • 更改vsftpd密码文件权限为600: 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
  • 编辑vsftpd主配置文件: 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服务 ps aux | grep vsftp
  • 查看监听的端口(21端口): netstat -lntp

  • 测试ftp yum install -y lftp lftp testuser1@127.0.0.1
  • 执行命令ls,看是否正常输出.
  • 若不正常查看日志/var/log/messages和/var/log/secure
  • 也可以windows下安装filezilla客户端软件, 进行测试.