FTP 介绍
FTP 是 File Transfer Protocol(文件传输协议的英文简称), 用于 internet 上控制文件双向传输, ftp 主要作用就是让用户连接一个远程计算机 (安装了 FTP 程序), 并查看远程计算机中的文件, 可以把远程计算机中的文件复制到本地计算机中, 或者把文件传输到远程计算机当中. 什么情况下使用 FTP; 在远程终端中操作 linux 时, 有时候我们需要传输一个很大的文件到服务器, 或者需要从服务器下载一个很大的文件. 通常我们使用 rzsz 命令就可以满足大部分需求, 但是当文件大于 4GB 以上时, rzsz 会不支持大文件传输, 这时候 rzsz 这个命令就无能为力了. 我们就需要使用一个能够传输大文件的传输协议, 这个就是文件传输协议, 即 FTP 传输工具 FTP 因为安全性较差, 大的企业中应用到的地方不多, 因为大企业都会有自己的一套传输控制的方案
使用 vsftp 搭建 ftp 服务
安装 vsftpd
[root@aaa /]# yum install -y vsftpd
已加载插件: fastestmirror
- base | 3.6 kB 00:00:00 ? ?
- epel/x86_64/metalink | 8.3 kB 00:00:00 ? ?
- epel ? ?
已安装:
vsftpd.x86_64 0:3.0.2-22.el7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
完毕!
创建运行的用户, vsftp 可以使用系统级别的用户, 该用户是系统用户, 可以登录到系统当中, 但是这样又会不安全, 所以 vsftp 有虚拟用户这一设置, 虚拟用户建立在真实用户上, 虚拟用户可以登录访问 vsftp, 但是不可以登录系统, 增加了安全性创建真实用户和虚拟用户, 虚拟用户在配置文件中定义, 奇数行为用户名. 偶数行为用户的密码, 创建后保存退出
- [root@aaa /]# useradd -s /sbin/nologin vsftpd
- [root@aaa /]# vim /etc/vsftpd/vsftpd_login
- user1
- passwd1
- ~ ? ?
使用 db_load 转换用户密码配置文件 ?db_load -T -t hash -f? ? 密码配置文件 ? 转换后的文件. db? 将虚拟用户配置文件权限设置为 600 只允许 root 可读, 其他用户无权限访问, 并把虚拟用户配置文件转为二进制的文件
- [root@aaa /]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
- [root@aaa /]# ll -h /etc/vsftpd/
总用量 36K
-rw------- 1 root root 125 8 月 3 2017 ftpusers
-rw------- 1 root root 361 8 月 3 2017 user_list
-rw------- 1 root root 5.0K 8 月 3 2017 vsftpd.conf
-rwxr--r-- 1 root root 338 8 月 3 2017 vsftpd_conf_migrate.sh
-rw------- 1 root root 14 8 月 18 09:05 vsftpd_login
-rw-r--r-- 1 root root 12K 8 月 18 09:10 vsftpd_login.db
创建虚拟用户配置文件, 创建虚拟用户配置文件保存目录, 并配置文件必须要和虚拟用户配置文件中的用户名保持一致
- [root@aaa /]# mkdir /etc/vsftpd/vsftpd_user_conf
- [root@aaa /]# cd /etc/vsftpd/vsftpd_user_conf/
- [root@aaa vsftpd_user_conf]# vim user1
local_root=/home/vsftpd/user1 ? ? ? ? ? ? 指定虚拟用户的家目录, 即可访问的目录
anonymous_enable=NO ? ? ? ? ? ? ? ? ? ? ? 是否禁止匿名用户访问, YES 允许 / 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 ? ? ? ? ? ? ? ? ? ? ? ? ? ? 最大链接数
创建虚拟用户的访问目录, 创建测试文件并将虚拟用户家目录设置为指定的所属主, 所属组
- [root@aaa vsftpd_user_conf]# mkdir /home/vsftpd/user1
- [root@aaa vsftpd_user_conf]# touch /home/vsftpd/user1/index.html
- [root@aaa vsftpd_user_conf]# chown -R vsftpd:vsftpd /home/vsftpd/
在 vsftp 的模块配置文件中添加保存虚拟用户和用户密码的文件位置, 指定支持库的位置. 加入如下两行, 注意的是在 lib64 这个位置, 是区分系统位数的, 如 lib32 对应的是 32 位的操作系统
- auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
- account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
- [root@aaa vsftpd_user_conf]# vim /etc/pam.d/vsftpd
- #%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
修改 vsftpd 的主配置文件, 这个文件起到全局作用, 其配置生效的优先级大于虚拟用户配置文件中的配置在主配置文件中修改下列内容, 取消注释并将 YES 改为 NO
[root@aaa vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO ? ? ? ? ? ? ? ? 禁止匿名用户访问
anon_upload_enable=NO ? ? ? ? ? ? ? 禁止匿名用户写入
anon_mkdir_write_enable=NO ? ? ? ? 禁止匿名用户读取
主配置文件中添加新的配置项
- chroot_local_user=YES
- guest_enable=YES
- guest_username=vsftpd
- vurtual_use_local_privs=YES
- user_config_dir=/etc/vsftpd/vsftpd_user_conf
- allow_writeable_chroot=YES
来源: http://www.bubuko.com/infodetail-2745050.html