1.vsftpd部署

通过本地yum源安装

  1. mv /etc/yum.repos.d/* /media/
  2. vi /etc/yum.repos.d/local.repo
  3. [centos]
  4. name=centos
  5. baseurl=file:///opt/centos
  6. gpgcheck=0
  7. enabled=1
  8. mkdir /opt/centos
  9. mount -o loop /dev/cdrom /opt/centos/
  10. yum clean all
  11. yum repolist
  12. #安装vsftpd
  13. yum install -y net-tools vsftpd
  14. systemctl start vsftpd

创建账号数据

  1. vi /etc/vsftpd/users.conf
  2. lizhi
  3. 1234
  4. zhangsan
  5. 5678
  6. db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db
  7. “-f”用于指定数据源文件
  8. “-T”表示允许非Berkeley DB的应用程序使用从文本格式转换的DB数据文件
  9. “-t hash”用于指定读取数据文件的基本方法
  10. chmod 600 /etc/vsftpd/users.*
  11. ls -lh /etc/vsftpd/users.*
  12. 创建 FTP 根目录及虚拟用户映射的系统用户
  13. useradd vsftpd -d /home/vsftpd -s /sbin/nologin
  14. mkdir -p /home/vsftpd/xmcsxy
  15. chmod -R 755 /home/vsftpd
  16. 755改为777可以上传
  17. 建立支持虚拟用户的PAM认证文件
  18. vi /etc/pam.d/vsftpd
  19. #在前俩行插入
  20. auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
  21. account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users

常用的全局配置项:

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:是否将用户禁锢在主目录

添加虚拟用户支持

  1. vi /etc/vsftpd/vsftpd.conf
  2. nonymous_enable=NO
  3. chroot_local_user=YES
  4. guest_enable=YES
  5. allow_writeable_chroot=YES
  6. user_config_dir=/etc/vsftpd/vsftpd_user_conf
  7. mkdir -p /etc/vsftpd/vsftpd_user_conf
  8. cd /etc/vsftpd/vsftpd_user_conf/
  9. vi lizhi
  10. local_root=/home/vsftpd/xmcsxy # 当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
  11. anon_upload_enable=YES # 是否允许登陆用户有上传权限。
  12. write_enable=YES # 是否允许登陆用户有写权限。
  13. 切记配置文件后边不要加空格不然重启会失败!!!
  14. 重启
  15. systemctl restart vsftpd
  16. systemctl enable vsftpd
  17. (提前关闭防火墙)
  18. cd /home/vsftpd/xmcsxy/
  19. touch a.txt

用windows图形化FTP工具(Filezilla):
image.png
上传
image.png
下载
image.png

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 到您没有写入权限的目录。

2.NFS部署

安装nfs依赖包

  1. yum -y install nfs-utils rpcbind
  2. yum -y install net-tools
  3. 启动 服务
  4. systemctl start rpcbind
  5. systemctl enable rpcbind
  6. systemctl start nfs
  7. systemctl enable nfs
  8. 查看端口
  9. netstat -lntp | grep rpc

创建共享目录

  1. mkdir /data
  2. chown -R nfsnobody.nfsnobody /data
  3. chmod 755 -R /data
  4. 配置共享目录
  5. vi /etc/exports
  6. /data 192.168.100.0/24(rw,no_root_squash,async) #分配no_root_squash权限
  7. 生效配置与检验
  8. [root@nfs ~]#exportfs -rv
  9. exporting 192.168.100.0/24:/data
  10. [root@nfs ~]#showmount -e localhost
  11. Export list for localhost:
  12. /data 192.168.100.0/24

调试与检验

  1. 将/data目录挂载到/home/vsftpd/xmcsxy/目录上
  2. mount -t nfs 192.168.100.12:/data /home/vsftpd/xmcsxy/
  3. 取消挂载
  4. umount /挂载的目录
  5. 查看挂载
  6. df -h
  7. 创建对应ftp虚拟用户的家目录
  8. [root@ftp ~]# cd /home/vsftpd/xmcsxy/
  9. mkdir yumwei
  10. mkdir JAVA
  11. mkdir bigdata
  12. mkdir weixin
  13. mkdir android
  14. mkdir game
  15. [root@ftp xmcsxy]# ll
  16. total 40
  17. drwxr-xr-x. 2 root root 4096 Sep 22 03:51 android
  18. drwxr-xr-x. 2 root root 4096 Sep 22 03:50 bigdata
  19. drwxr-xr-x. 2 root root 4096 Sep 22 03:51 game
  20. drwxr-xr-x. 2 root root 4096 Sep 22 03:50 JAVA
  21. drwx------. 2 root root 16384 Sep 22 03:45 lost+found
  22. drwxr-xr-x. 2 root root 4096 Sep 22 03:51 weixin
  23. drwxr-xr-x. 2 root root 4096 Sep 22 03:50 yunwei
  24. nfs服务端安装lftp(ftp命令行客户端):
  25. yum -y install lftp
  26. lftp lizhi@192.168.100.11 (用你自己创建的用户和密码)
  27. 查看
  28. lftp lizhi@192.168.100.11:~> ls

永久挂载
方法一、把挂载信息写入/etc/fstab文件

  1. [root@localhost ~]# vim /etc/fstab
  2. 192.168.200.31:/data/public /mnt nfs defaults 0 0

方法二、挂载命令写入/etc/rc.local文件

  1. mount -t nfs 192.168.200.31:/data/public /mnt/

自动挂载镜像

  1. /dev/sr0 /opt/centos iso9660 defaults 0 0

查看镜像类型
blkid /dev/sr0

黑白名单

设置ftp黑白名单:(系统账号FTP登录限制文件)
ftpusers和user_list两个文件用途和区别:
ftpusers它不受任何配置项影响,总是有效,是黑名单!

  1. useradd test1
  2. useradd test2
  3. passwd test1
  4. passwd test2
  5. vi ftpusers
  6. test1

NFS共享的常用参数,具体如下:
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
注:如果同时指定no_root_squash与all_squash 用户将被压缩为 nfsnobody,如果设置了anonuid、anongid将被压缩到所指定的用户与组,即no_root_squash不生效;

exportfs [-aruv]
参数说明如下:
-a:全部挂载(或卸载)/etc/exports文件内的设定。
-r:重新挂载/etc/exports中的设置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的内容。
-u:卸载某一目录。
-v:在export时将共享的目录显示在屏幕上。
检查有权限挂载的服务器是否能挂载:

运用showmount命令查询
# showmount —help
Usage: showmount [-adehv]
[—all] [—directories] [—exports]
[—no-headers] [—help] [—version] [host]
-a或—all 以 host:dir 这样的格式来显示客户主机名和挂载点目录。
-d或—directories 仅显示被客户挂载的目录名。
-e或—exports 显示NFS服务器的输出清单。
-h或—help 显示帮助信息。
-v或—version 显示版本信。
—no-headers 禁止输出描述头部信息。
显示指定NFS服务器连接NFS客户端的信息
# showmount 192.168.100.12 #此ip为nfs服务器的
显示输出目录列表
# showmount -e
显示指定NFS服务器输出目录列表(也称为共享目录列表)
# showmount -e 192.168.100.12
显示被挂载的共享目录
# showmount -d
显示客户端信息和共享目录
# showmount -a
显示指定NFS服务器的客户端信息和共享目录
# showmount -a 192.168.100.12
showmount -e IP地址或localhost

shell备用数据脚本及定时计划

  1. [root@nfs ~]# vi /usr/local/sbin/backup.sh
  2. a=`date '+%Y%m%d'` #定义时间
  3. b=/backup/weekbackup #定义备份目录路径
  4. c=/var/log/backup.log #定义输出日志路径
  5. pname=$(rpm -qa | grep rsync) #定义rsync安装包检查
  6. #判断rsync是否存在
  7. if [ $? -eq 0 ]
  8. then
  9. echo "软件包rsync已经安装。"
  10. else
  11. echo "软件包rsync没有安装"
  12. yum -y install rsync >> /dev/null
  13. if [ $? -eq 0 ];then
  14. echo "安装rsync完成。"
  15. else
  16. echo "安装rsync失败。"
  17. fi
  18. fi
  19. #判断备份目录是否存在,并增量备份。
  20. if [ ! -d "$b" ];then
  21. mkdir -p $b
  22. echo "$a Backup File missing!" >> /var/log/backup.log
  23. rsync -rvz /data $b/$a
  24. else
  25. rsync -rvz /data $b/$a
  26. if [ -d $b/$a ];then
  27. echo "$a Backup success." >> /var/log/backup.log
  28. find $b -mtime +14 | xargs rm -rf
  29. else
  30. echo "$a Backup failed." >> /var/log/backup.log
  31. fi
  32. fi
  33. 测试脚本
  34. [root@nfs ~]# sh -x /usr/local/sbin/backup.sh
  35. 定时计划:
  36. crontab -e
  37. * 21 */7 * * sh /usr/local/sbin/backup.sh