NFS介绍,exportfs命令,,FTP介绍,使用vsftpd搭建ftp服务

╄→尐↘猪︶ㄣ 提交于 2019-12-24 11:38:06

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

NFS介绍

  • NFS是Network File System的缩写
  • NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本
  • NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。
  • NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致。

NFS服务端安装配置

  • 首先准备两台机器,一个作为客户端,一个作为服务端。
  • 服务端要安装两个服务无 yum install -y nfs-utils rpcbind,客户端也要安装nfs-utils。
  • 安装完成后,编辑vim /etc/exports //加入如下内容
/home/nfstestdir //分享的目录 192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

保存配置文件后,执行如下准备操作

 mkdir /home/nfstestdir
 chmod 777 /home/nfstestdir     //改成777是方便做实验。
 systemctl start rpcbind        //一般是安装好自动启动的,可以看下netstat -lnpt看一下起没起来。 
 systemctl start nfs            //ps aux |grep nfs 和rpc  看看服务有没有启动,一般启动nfs之后,rpc会自动启动相关服务。
 systemctl enable rpcbind       //设置开机自启
 systemctl enable nfs

  • /home/nfstestdir 192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000),看一下这里面的配置选项都有哪些,什么含义

  • rw 读写

  • ro 只读

  • sync 同步模式,内存数据实时写入磁盘

  • async 非同步模式

  • no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大

  • root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户

  • all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户

  • anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid

客户端挂载

  • yum install -y nfs-utils 安装一下客户端的nfs
  • 然后 showmount -e 192.168.245.128 //该ip为NFS服务端ip
[root@aminglinux-01 ~]# showmount -e 192.168.245.128
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

报错,防火墙导致。关一下服务端和客户端的防火墙。 systemctl stop firewalld

还有 setenforce 0

或者:service iptables stop  //关闭防火墙

  • mount -t nfs 192.168.245.128:/home/nfstestdir /mnt 挂载
  • df -h
[root@aminglinux-01 ~]# df -h
文件系统                          容量  已用  可用 已用% 挂载点
/dev/sda3                          18G  3.6G   15G   21% /
devtmpfs                          479M     0  479M    0% /dev
tmpfs                             489M     0  489M    0% /dev/shm
tmpfs                             489M  6.8M  482M    2% /run
tmpfs                             489M     0  489M    0% /sys/fs/cgroup
192.168.245.128:/home/nfstestdir   18G  6.8G   12G   38% /mnt
/dev/sda1                         197M  109M   88M   56% /boot
tmpfs                              98M     0   98M    0% /run/user/0
[root@aminglinux-01 ~]# 

  • 创建一个文件 touch /mnt/aminglinux.txt

ls -l /mnt/aminglinux.txt //可以看到文件的属主和属组都为1000


exportfs命令

  • 常用选项

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

-r 重新挂载

-u 卸载某一个目录

-v 显示共享目录

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

NFS客户端问题

  • 客户端文件属主属组nobody

FS 4版本会有该问题

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

  • 客户端挂载时加上 -o nfsvers=3

  • 客户端和服务端都需要

vim /etc/idmapd.conf // 把“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,随意定义吧),然后再重启rpcidmapd服务


FTP介绍

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

使用vsftpd搭建ftp服务

  • centos上自带的FTP叫vsftpd
  • 安装 yum install -y vsftpd
  • 创建用户 useradd -s /sbin/nologin virftp

首先建立与虚拟账号相关联的系统账号

useradd -s /sbin/nologin virftp

接着建立与虚拟账户相关的文件 vim /etc/vsftpd/vsftpd_login

usertest1
111222333
usertest2
444555666

奇数行为用户名,偶数行为密码,多个用户就写多行

然后更改该文件的权限,提升安全级别

 chmod 600 /etc/vsftpd/vsftpd_login

然后把明文的密码文件改成计算机识别的2进制文件

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

[root@aminglinux-01 ~]# ls -l /etc/vsftpd/
总用量 36
-rw-------. 1 root root   125 8月   3 14:10 ftpusers
-rw-------. 1 root root   361 8月   3 14:10 user_list
-rw-------. 1 root root  5030 8月   3 14:10 vsftpd.conf
-rwxr--r--. 1 root root   338 8月   3 14:10 vsftpd_conf_migrate.sh
-rw-------. 1 root root    40 11月  6 16:43 vsftpd_login
-rw-r--r--. 1 root root 12288 11月  6 16:46 vsftpd_login.db
[root@aminglinux-01 ~]# 

创建虚拟用户的配置文件所在的目录

mkdir /etc/vsftpd/vsftpd_user_conf
  • 创建虚拟用户和对应的配置文件

用户的配置文件名一定要跟对应用户的名字是一样的。cd /etc/vsftpd/vsftpd_user_conf

vim usertest1

写入如下内容

local_root=/home/virftp/usertest1          定义虚拟用户的家目录
anonymous_enable=NO                        是否允许匿名用户
write_enable=YES                           是否允许可写
local_umask=022                            定义创建新文件和新目录的权限是什么
anon_upload_enable=NO                      是否允许匿名用户可以上传
anon_mkdir_write_enable=NO                 是否允许匿名用户可以创建目录并可写
idle_session_timeout=600                   当我们连接FTP超时时间600s
data_connection_timeout=120                数据传输超时时间120s
max_clients=10                             最大客户端连接数

创建虚拟用户的家目录 mkdir /home/virftp/usertest1

创建一个文件,等会登陆就能看到这个文件了 touch /home/virftp/usertest1/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

#%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

  • 修改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

改完配置文件后启动 : systemctl start vsftpd

[root@aminglinux-01 vsftpd_user_conf]# ps aux |grep vsftp
root       3264  0.0  0.0  53204   572 ?        Ss   18:08   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root       3266  0.0  0.0 112668   972 pts/0    S+   18:08   0:00 grep --color=auto vsftp
[root@aminglinux-01 vsftpd_user_conf]# 

  • 测试

安装lftp客户端软件 yum install -y lftp

测试

[root@aminglinux-01 ~]# lftp usertest1@127.0.0.1
口令: 
lftp usertest1@127.0.0.1:~> ls      
lftp usertest1@127.0.0.1:~> ls      
-rw-r--r--    1 0        0               0 Nov 06 10:34 aming.txt
lftp usertest1@127.0.0.1:/> 


扩展学习:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!