ftp、tftp、nfs--服务器搭建

服务器

1. ftp服务器

1.1检查是否安装

vsftpd -version

1.2 安装

sudo apt-get install vsftpd

1.3卸载

sudo apt-get remove --purge vsftpd  
#--purge 选项表示彻底删除改软件和相关文件

1.4 配置

 sudo vi /etc/vsftpd.conf

# 禁止匿名用户登录
 anonymous_enable=NO
​
# 允许系统用户登录
local_enable=YES
​
# 启用可以修改文件的 FTP 命令
write_enable=YES
​
# 本地用户创建文件的 umask 值
local_umask=022
​
# 允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
dirmessage_enable=YES
​
# 开启日记功能
xferlog_enable=YES
​
# 使用标准的20端口来连接ftp
connect_from_port_20=YES
​
# 使用标准日志格式
xferlog_std_format=YES
​
# 如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录
chroot_list_enable=YES
​
# 指定限制的用户文件
chroot_list_file=/etc/vsftpd/chroot_list
​
# ftp服务器将处于独立启动模式
listen=YES
​
# 设置一个本地用户登录后进入到的目录
local_root=/home/ftp
​
# 设置PAM认证服务的配置文件名称,该文件保存在“/etc/pam.d/”目录下
pam_service_name=vsftpd
​
# ftp将检查userlist_file设置文件中指定的用户是否可以访问vsftpd服务器
userlist_enable=YES
​
# 只允许user_list文件中记录的ftp用户能登录vsftp服务,其他的ftp用户都不可以登录。
userlist_deny=NO
​
# 定义限制/允许用户登录的文件
userlist_file=/etc/vsftpd/allowed_users
​
# ftp服务器将使用tcp_wrappers作为主机访问控制模式
tcp_wrappers=YES
​
# 连接ftp服务费使用的端口
listen_port=21
​
#取消注释以指示vsftpd使用utf8文件系统。
utf8_filesystem=YES

    或者可以直接添加

anonymous_enable=YES            
anon_root=/home/……/ftp
no_anon_password=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

1.5 创建ftp文件目录

mkdir /home/***/ftp
#新建一个目录anonymous,用来存放用户上传的文件,并修改目录的权限
 cd ~/ftp
 mkdir anonymous
 chomd 777 anonymous

1.6 重启

sudo /etc/init.d/vsftpd restart
sudo systemctl restart vsftpd                #都可以

1.7 登陆

mhf@ubuntu:~/桌面$ ftp 127.0.0.1     #登陆服务器
Connected to 127.0.0.1.
220 (vsFTPd 3.0.3)
Name (127.0.0.1:mhf): anonymous     #设置匿名登陆,后面直接回车,不用密码

    浏览器登陆

输入ftp://服务器端IP

1.8 下载文件

get filename

1.9 上传

#进入anonymous目录 
put filename

1.10 退出

ftp> bye

2.tftp服务器

2.1 概述

  • TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,==提供不复杂、开销不大的文件传输服务==。端口号为69.

  • 它基于UDP协议而实现

  • 此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,==只能从文件服务器上获得或写入文件,不能列出目录,不进行认证==,它传输8位数据。传输中有三种模式:

    • netascii,这是8位的ASCII码形式,

    • 另一种是octet,这是8位源数据类型;

    • 最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。

  • tftp是client客户端,tftpd是server服务器端,d应该指的是daemon。如果你要从别人的tftp服务器端上传/下载东西,就要用到tftp;如果你为别人提供tftp服务,供别人上传/下载东西,那就要安装tftpd服务程序。

2.2 安装

apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd

2.3 建立传输目录

mkdir /tftpboot               # 这是建立tftp传输目录。
sudo chmod 0777 /tftpboot     #设置权限
sudo echo hello > test.txt           # 放入一个文件

2.4 配置

    sudo vim /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"    #指定将来下位机的下载目录为上位机的/tftpboot,此目录随意指定即可
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"    # 这里是选项,-c是可以上传文件的参数,-s是指定tftpd-hpa服务目录,上面已经指定 

    sudo vi /etc/xinetd.d/tftp 

service tftp
{
        socket_type      = dgram
        protocol                 = udp
        wait                     = yes
        user                     = root
        server           = /usr/sbin/in.tftpd
        server_args      = -s /home/mhf/tftpboot/ -c
        disable          = no
        per_source       = 11
        cps                      = 100 2
        flags                    = IPv4
}
#server_args设置的/var/tftpboot目录是tftp服务器的目录,TFTP客户端就是从这个目录里获取文件的。
#使用命令"mkdir /var/tftpboot"建立TFTP服务器的目录。然后设置/var/tftpboot的访问权限为777.

2.5 重启

sudo service tftpd-hpa restart # 启动服务,这里要注意,采用的独立服务形式。
sudo /etc/init.d/xinetd restart

2.6 测试

tftp 127.0.0.1            #登录
tftp>get test.txt         #下载
tftp>put test1.txt        #上传
tftp>q                    #退出

3.nfs服务器

3.1 概述

  • NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;

3.2 安装

服务器端:sudo apt install nfs-kernel-server
服务器端:sudo apt install portmap(如果安装上一个,可以不用执行此操作)	
客户端:sudo apt install nfs-common

3.3 建立共享目录

mkdir /home/mhf/nfs
# NFS共享目录可以是主机的任何一个目录,为了方便使用,最好将权限设置为777。

3.4 查看nfs的端口是否打开

netstat -tl

3.5 配置

sudo vim /etc/exports

#最后一行添加
/home/mhf/nfs *(rw,sync,no_root_squash,no_subtree_check)
  • /home :共享的目录

  • * :指定哪些用户可以访问

  • * 所有可以ping同该主机的用户

  • 192.168.1.* 指定网段,在该网段中的用户可以挂载

  • 192.168.1.12 只有该用户能挂载

  • NFS配置权限设置,即/etc/exports文件配置格式中小括号()里的参数集;

参数命令参数用途
rw 表示可读写
ro Read-only表示只能读权限
Sync 请求或者写入数据时,数据同步写入到NFS server的硬盘中后才会返回
no_root_squas 访问nfs server共享目录的用户如果是root的话,它对该目录具有root权限。这个配置原本为无盘用户准备的。用户应避免使用!
root_squash 对于访问NFS server共享目录的用户,如果是root的话会被压缩成为nobody用户身份。
all_squash 不管访问nfs server共享目录的用户身份如何包括root,它的权限都将被压缩成为匿名用户,同时他们的udi和gid都会变成nobody或nfsnobody账户的uid,gid。在多个nfs客户端同时读写nfs server数据时,这个参数很有用可以确保大家写入的数据的权限是一样的。 但不同系统有可能匿名用户的uid,gid不同。因为此处我们需要服务端和客户端之间的用户是一样的。比如说:服务端指定匿名用户的UID为2000,那么客户端也一定要存在2000这个账号才可以
anonuid anonuid就是匿名的uid和gid。说明客户端以什么权限来访问服务端,在默认情况下是nfsnobody。Uid65534.
anongid 同anongid,就是把uid换成gid而已
no_subtree_check 不检查父目录的权限。

3.6 挂载

mount -t nfs -o nolock 10.10.143.63:/home/mhf/nfs  /home/mhf
# 将/home/mhf/nfs挂载到/home/mhf
  • mount nfssrvname:/Share-Directory  /mnt-Point
    
  • nfssrvname表示nfs服务器主机名,也可用IP地址

  • Share-Directory表示nfs服务器导出的共享资源目录,必须用 绝对路径,与nfssrvname用”:”号隔开;

  • mnt-Point表示共享资源将挂载到客户端主机上的位置,在挂载前一定要确保挂载目录已经存在。

3.7 卸载挂载

umount  /mnt-Point

3.8 重启

sudo /etc/init.d/nfs-kernel-server restart
原文地址:https://www.cnblogs.com/IntelligencePointer/p/11633679.html