FTP
vsftp部署安装
配置本地yum
[root@ftp ~]# cd /etc/yum.repos.d/
[root@ftp yum.repos.d]# mkdir aa
[root@ftp yum.repos.d]# mv * /aa
[root@ftp yum.repos.d]# vi local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[root@ftp yum.repos.d]# mkdir /opt/centos
[root@ftp ~]# mount CentOS-7-x86_64-DVD-2003.iso /opt/centos/
[root@ftp ~]# yum repolist
已加载插件:fastestmirror
Determining fastest mirrors
centos | 3.6 kB 00:00:00
(1/2): centos/group_gz | 153 kB 00:00:00
(2/2): centos/primary_db | 3.3 MB 00:00:00
源标识 源名称 状态
centos centos 4,071
repolist: 4,071
通过yum源安装vsftp
[root@ftp ~]# yum -y install vsftpd
#启动
[root@ftp ~]# systemctl start vsftpd
虚拟用户配置
创建账号数据
[root@ftp ~]# vi /etc/vsftpd/users.conf
zhang
123456
zhen
78910
[root@ftp ~]# db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db
[root@ftp ~]# cd /etc/vsftpd/
[root@ftp vsftpd]# ls
ftpusers user_list users.conf users.db vsftpd.conf vsftpd_conf_migrate.sh
[root@ftp vsftpd]# chmod 600 /etc/vsftpd/users.*
[root@ftp vsftpd]# ls -lh /etc/vsftpd/users.*
-rw-------. 1 root root 24 9月 22 10:21 /etc/vsftpd/users.conf
-rw-------. 1 root root 12K 9月 22 10:21 /etc/vsftpd/users.db
创建 FTP 根目录及虚拟用户映射的系统用户
[root@ftp vsftpd]# useradd vsftpd -d /home/vsftpd -s /sbin/nologin
[root@ftp vsftpd]# mkdir -p /home/vsftpd/xmcsxy
[root@ftp vsftpd]# chmod -R 755 /home/vsftpd
建立支持虚拟用户的PAM认证文件
#添加放到前边
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
[root@ftp vsftpd]# vim /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
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.conf 文件中添加虚拟用户支持配置
[root@ftp vsftpd]# vim /etc/vsftpd/vsftpd.conf
#修改
anonymous_enable=NO
#添加,紧随之后
chroot_local_user=YES
guest_enable=YES
allow_writeable_chroot=YES
为不同的虚拟用户建立独立的配置文件
user_config_dir=/etc/vsftpd/vsftpd_user_conf
有了上述配置以后,就可以在/etc/vsftpd/vsftpd_user_conf 目录中为每个虚拟用户分别建立配置文件了
[root@ftp vsftpd]# mkdir -p /etc/vsftpd/vsftpd_user_conf
[root@ftp vsftpd]# cd /etc/vsftpd/vsftpd_user_conf/
[root@ftp vsftpd_user_conf]# vim zhang
# 当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
local_root=/home/vsftpd/xmcsxy
# 是否允许登陆用户有上传权限
anon_upload_enable=YES
# 是否允许登陆用户有写权限
write_enable=YES
重启服务并测试
[root@ftp vsftpd_user_conf]# systemctl restart vsftpd
[root@ftp vsftpd_user_conf]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@ftp vsftpd_user_conf]# systemctl stop firewalld
[root@ftp vsftpd_user_conf]# setenforce 0
[root@ftp vsftpd_user_conf]# systemctl stop firewalld
[root@ftp vsftpd_user_conf]# cd /home/vsftpd/xmcsxy/
[root@ftp xmcsxy]# echo '8yuhsdjkfbsjfbkdjkekjdjw'>a.txt
[root@ftp xmcsxy]# ls
a.txt
运用windows图形化FTP工具(Filezilla)(https://www.filezilla.cn/download/client
)
登录,拖动上传下载
FTP状态码
1xx – 肯定的初步答复
这些状态代码指示一项操作已经成功开始,但客户端希望在继续操作新命令前得到另一个答复。
110 重新启动标记答复。
120 服务已就绪,在 nnn 分钟后开始。
125 数据连接已打开,正在开始传输。
150 文件状态正常,准备打开数据连接。
2xx – 肯定的完成答复
一项操作已经成功完成。客户端可以执行新命令。
200 命令确定。
202 未执行命令,站点上的命令过多。
211 系统状态,或系统帮助答复。
212 目录状态。
213 文件状态。
214 帮助消息。
215 NAME 系统类型,其中,NAME 是 Assigned Numbers 文档中所列的正式系统名称。
220 服务就绪,可以执行新用户的请求。
221 服务关闭控制连接。如果适当,请注销。
225 数据连接打开,没有进行中的传输。
226 关闭数据连接。请求的文件操作已成功(例如,传输文件或放弃文件)。
227 进入被动模式 (h1,h2,h3,h4,p1,p2)。
230 用户已登录,继续进行。
250 请求的文件操作正确,已完成。
257 已创建“PATHNAME”。
3xx – 肯定的中间答复
该命令已成功,但服务器需要更多来自客户端的信息以完成对请求的处理。
331 用户名正确,需要密码。
332 需要登录帐户。
350 请求的文件操作正在等待进一步的信息。
4xx – 瞬态否定的完成答复
该命令不成功,但错误是暂时的。如果客户端重试命令,可能会执行成功。
421 服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。
425 无法打开数据连接。
426 Connection closed; transfer aborted.
450 未执行请求的文件操作。文件不可用(例如,文件繁忙)。
451 请求的操作异常终止:正在处理本地错误。
452 未执行请求的操作。系统存储空间不够。
5xx – 永久性否定的完成答复
该命令不成功,错误是永久性的。如果客户端重试命令,将再次出现同样的错误。
500 语法错误,命令无法识别。这可能包括诸如命令行太长之类的错误。
501 在参数中有语法错误。
502 未执行命令。
503 错误的命令序列。
504 未执行该参数的命令。
530 未登录。
532 存储文件需要帐户。
550 未执行请求的操作。文件不可用(例如,未找到文件,没有访问权限)。
551 请求的操作异常终止:未知的页面类型。
552 请求的文件操作异常终止:超出存储分配(对于当前目录或数据集)。
553 未执行请求的操作。不允许的文件名。
常见的FTP 状态代码及其原因
150 – FTP 使用两个端口:21 用于发送命令,20 用于发送数据。状态代码 150 表示服务器准备在端口 20 上打开新连接,发送一些数据。
226 – 命令在端口 20 上打开数据连接以执行操作,如传输文件。该操作成功完成,数据连接已关闭。
230 – 客户端发送正确的密码后,显示该状态代码。它表示用户已成功登录。
331 – 客户端发送用户名后,显示该状态代码。无论所提供的用户名是否为系统中的有效帐户,都将显示该状态代码。
426 – 命令打开数据连接以执行操作,但该操作已被取消,数据连接已关闭。
530 – 该状态代码表示用户无法登录,因为用户名和密码组合无效。如果使用某个用户帐户登录,可能键入错误的用户名或密码,也可能选择只允许匿名访问。如果使用匿名帐户登录,IIS 的配置可能拒绝匿名访问。
550 – 命令未被执行,因为指定的文件不可用。例如,要 GET 的文件并不存在,或试图将文件 PUT 到您没有写入权限的目录。
常用的全局配置项
listen=YES:是否以独立运行的方式监听服务
listen_address=192.168.x.x:设置监听的 IP 地址
listen_port=21:设置监听 FTP 服务的端口号
write_enable=YES:是否启用写入权限
download_enable=YES:是否允许下载文件
userlist_enable=YES:是否启用 user_list 列表文件
userlist_deny=YES:是否禁用 user_list 中的用户
max_clients=0:限制并发客户端连接数
max_per_ip=0:限制同一 IP 地址的并发连接数
guest_enable=YES:启用虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf :虚拟用户使用的配置文件目录
allow_writeable_chroot=YES:允许写入用户主目录
常用的匿名 FTP 配置项:
anonymous_enable=YES:启用匿名访问
anon_umask=022:匿名用户所上传文件的权限掩码
anon_root=/var/ftp:匿名用户的 FTP 根目录
anon_upload_enable=YES:允许上传文件
anon_mkdir_write_enable=YES:允许创建目录
anon_other_write_enable=YES:开放其他写入权
anon_max_rate=0:限制最大传输速率(字节/秒)
常用的本地用户 FTP 配置项:
local_enable=YES:是否启用本地系统用户
local_umask=022:本地用户所上传文件的权限掩码
local_root=/var/ftp:设置本地用户的 FTP 根目录
chroot_local_user=YES:是否将用户禁锢在主目录
NFS
NFS部署
#检查环境
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
#安装所需依赖包
[root@localhost ~]# yum -y install nfs-utils rpcbind
#安装完后查看nfsnobody用户在不在
[root@localhost ~]# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) 组=65534(nfsnobody)
#启动NFS相关服务
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl enable rpcbind
#查看rpc端口
[root@localhost ~]# netstat -tnulp|grep rpc
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1458/rpcbind
tcp6 0 0 :::111 :::* LISTEN 1458/rpcbind
udp 0 0 0.0.0.0:785 0.0.0.0:* 1458/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 1458/rpcbind
udp6 0 0 :::785 :::* 1458/rpcbind
udp6 0 0 :::111 :::* 1458/rpcbind
[root@localhost ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
NFS配置
#创建共享目录
[root@localhost ~]# mkdir /data
[root@localhost ~]# mkdir /data/public
[root@localhost ~]# mkdir /data/test
[root@localhost ~]# mkdir /data/linux
[root@localhost ~]# chown -R nfsnobody.nfsnobody /data
[root@localhost ~]# chmod 755 -R /data
[root@localhost ~]# vi /etc/exports
/tmp *(rw,no_root_squash)
/data/public 192.168.100.0/24(rw)
/data/test 192.168.100.20(rw)
/data/linux *.xmcsxy.com(rw,all_squash,anonuid=40,anongid=40)
生效配置与检验测试
#重新加载nfs服务生效配置的方法
#1
[root@localhost ~]# systemctl restart nfs
#2
[root@localhost ~]# exportfs -rv
#检查有权限挂载的服务器是否能挂载
[root@localhost ~]# showmount -e localhost
Export list for localhost:
/tmp *
/data/linux *.xmcsxy.com
/data/public 192.168.100.0/24
/data/test 192.168.100.20
#取消挂载
[root@localhost ~]# umount /mnt/
#设置永久挂载
[root@localhost ~]# vi /etc/fstab
192.168.100.20:/data/public /mnt nfs defaults 0 0
#查看端口映射情况
[root@localhost ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 50580 status
100024 1 tcp 34857 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 43962 nlockmgr
100021 3 udp 43962 nlockmgr
100021 4 udp 43962 nlockmgr
100021 1 tcp 45649 nlockmgr
100021 3 tcp 45649 nlockmgr
100021 4 tcp 45649 nlockmgr
#添加新磁盘重启虚拟机
[root@nfs ~]# reboot
Last login: Wed Sep 22 16:38:56 2021 from 192.168.100.1
[root@nfs ~]# cat /proc/partitions
major minor #blocks name
8 0 20971520 sda
8 1 1048576 sda1
8 2 19921920 sda2
8 16 20971520 sdb
11 0 1048575 sr0
253 0 17821696 dm-0
253 1 2097152 dm-1
[root@nfs ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x08c4dc0a 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
#格式化分区并永久挂载
[root@nfs ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@nfs ~]# vi /etc/fstab
/dev/sdb1 /data ext4 defaults 0 0
[root@nfs ~]# vi /etc/exports
/data 192.168.100.0/24(rw,no_root_squash,async)
[root@nfs ~]# exportfs -rv
exporting 192.168.100.0/24:/data
[root@nfs ~]# showmount -e localhost
Export list for localhost:
/data 192.168.100.0/24
[root@nfs ~]# showmount -e 192.168.100.10
Export list for 192.168.100.10:
/data 192.168.100.0/24
调试与检验成果
[root@nfs ~]# mount -t nfs 192.168.100.20:/data /home/vsftpd/xmcsxy/
[root@nfs ~]# cd /home/vsftpd/xmcsxy/
[root@nfs xmcsxy]# mkdir yumwei
[root@nfs xmcsxy]# mkdir JAVA
[root@nfs xmcsxy]# mkdir bigdata
[root@nfs xmcsxy]# mkdir weixin
[root@nfs xmcsxy]# mkdir android
[root@nfs xmcsxy]# mkdir game
[root@nfs xmcsxy]# ll
总用量 40
drwxr-xr-x. 2 root root 4096 9月 22 17:03 android
drwxr-xr-x. 2 root root 4096 9月 22 17:03 bigdata
drwxr-xr-x. 2 root root 4096 9月 22 17:03 game
drwxr-xr-x. 2 root root 4096 9月 22 17:03 JAVA
drwx------. 2 root root 16384 9月 22 16:57 lost+found
drwxr-xr-x. 2 root root 4096 9月 22 17:03 weixin
drwxr-xr-x. 2 root root 4096 9月 22 17:03 yumwei