ftp服务
1. ftp安装
[root@localhost ~]# yum -y install vsftpd
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 vsftpd.x86_64.0.3.0.2-22.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=====================================================================================
Package 架构 版本 源 大小
=====================================================================================
正在安装:
vsftpd x86_64 3.0.2-22.el7 lw 169 k
事务概要
=====================================================================================
安装 1 软件包
总下载量:169 k
安装大小:348 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : vsftpd-3.0.2-22.el7.x86_64 1/1
验证中 : vsftpd-3.0.2-22.el7.x86_64 1/1
已安装:
vsftpd.x86_64 0:3.0.2-22.el7
完毕!
[root@localhost ~]# systemctl start vsftpd
2. 配置匿名用户ftp
2.1 启动ftp服务
[root@localhost ~]# systemctl start vsftpd
[root@localhost vsftpd]# systemctl restart vsftpd
[root@localhost vsftpd]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@localhost vsftpd]# ss -nalt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 32 :::21 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
2.2 关闭防火墙
[root@localhost pub]# systemctl stop firewalld
[root@localhost pub]# setenforce 0
2.3 对配置文件进行配置
[root@localhost pub]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@localhost pub]# systemctl restart vsftpd
2.4 验证
- lftp验证
[root@localhost ~]# lftp -u ftp 192.168.110.21
口令:
lftp ftp@192.168.110.21:~>
lftp ftp@192.168.110.21:~> ls
drwxrwxrwx 3 0 0 39 Feb 18 06:59 pub
lftp ftp@192.168.110.21:/> cd /pub/
lftp ftp@192.168.110.21:/pub> ls
-rw------- 1 14 50 0 Feb 18 06:58 111
-rw-r--r-- 1 0 0 0 Feb 18 06:50 123
drwxr-xr-x 2 0 0 6 Feb 18 06:49 aaa
lftp ftp@192.168.110.21:/pub> mkdir 222
mkdir 成功, 建立 `222'
lftp ftp@192.168.110.21:/pub> ls
-rw------- 1 14 50 0 Feb 18 06:58 111
-rw-r--r-- 1 0 0 0 Feb 18 06:50 123
drwxr-xr-x 2 14 50 6 Feb 18 07:11 222
drwxr-xr-x 2 0 0 6 Feb 18 06:49 aaa
lftp ftp@192.168.110.21:/pub> rm -f 111
rm 成功, 删除 `111'
lftp ftp@192.168.110.21:/pub> ls
-rw-r--r-- 1 0 0 0 Feb 18 06:50 123
drwxr-xr-x 2 14 50 6 Feb 18 07:11 222
drwxr-xr-x 2 0 0 6 Feb 18 06:49 aaa
lftp ftp@192.168.110.21:/pub> get 123
lftp ftp@192.168.110.21:/pub> exit
[root@localhost ~]# ls
123 anaconda-ks.cfg
- 图形化界面验证
3. 配置虚拟用户ftp
3.1 建立虚拟FTP用户数据库文件
[root@localhost ~]# yum -y install db4*
[root@localhost ~]# cat /etc/vsftpd/user.list
tom
123
jack
456
lw
789
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/user.list /etc/vsftpd/user.db
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers user.db user_list user.list vsftpd.conf vsftpd_conf_migrate.sh
[root@localhost vsftpd]# vim user.db
[root@localhost vsftpd]# chmod 600 /etc/vsftpd/user.*
[root@localhost vsftpd]# ll
总用量 36
-rw-------. 1 root root 125 10月 31 03:45 ftpusers
-rw-------. 1 root root 12288 2月 18 15:32 user.db
-rw-------. 1 root root 361 10月 31 03:45 user_list
-rw-------. 1 root root 24 2月 18 15:29 user.list
-rw-------. 1 root root 5142 2月 18 14:54 vsftpd.conf
-rwxr--r--. 1 root root 338 10月 31 03:45 vsftpd_conf_migrate.sh
3.2 创建FTP根目录及虚拟用户映射的系统用户
[root@localhost vsftpd]# useradd -d /opt/vftp -s /sbin/nologin vftp
[root@localhost vsftpd]# cd /opt/
[root@localhost opt]# ls
vftp
[root@localhost opt]# chmod 755 /opt/vftp/
[root@localhost opt]# ll
总用量 0
drwxr-xr-x. 2 vftp vftp 62 2月 18 15:35 vftp
3.3 建立支持虚拟用户的PAM认证文件
[root@localhost opt]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
[root@localhost opt]# vim /etc/pam.d/vsftpd
[root@localhost opt]# cat /etc/pam.d/vsftpd
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_userdb.so db=/etc/vsftpd/user
3.4 在vsftpd.conf文件中添加支持配置
[root@localhost user_config]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vftp
user_config_dir=/etc/vsftpd/user_config
allow_writeable_chroot=YES
[root@localhost opt]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers user.db user_list user.list vsftpd.conf vsftpd_conf_migrate.sh
[root@localhost vsftpd]# mkdir user_config
3.5 为虚拟用户设置不同的权限
[root@localhost vsftpd]# cd user_config/
[root@localhost user_config]# ls
[root@localhost user_config]# touch tom
[root@localhost user_config]# vim tom
[root@localhost user_config]# cat tom
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@localhost user_config]# touch jack
[root@localhost user_config]# ll
总用量 4
-rw-r--r--. 1 root root 0 2月 18 15:57 jack
-rw-r--r--. 1 root root 79 2月 18 15:56 tom
[root@localhost user_config]# systemctl restart vsftpd
3.6 验证
[root@localhost user_config]# cd /opt/vftp/
[root@localhost vftp]# ls
[root@localhost vftp]# touch aaa
[root@localhost vftp]# mkdir 456
[root@localhost vftp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 2月 18 16:02 456
-rw-r--r--. 1 root root 0 2月 18 16:02 aaa
- 图形化界面验证
tom
jack
- lftp验证
tom
[root@localhost ~]# lftp -u tom 192.168.110.20
口令:
lftp tom@192.168.110.20:~> ls
-rw------- 1 1000 1000 0 Feb 18 08:10 111
-rw------- 1 1000 1000 0 Feb 18 08:07 123
drwxr-xr-x 2 0 0 6 Feb 18 08:02 456
-rw------- 1 1000 1000 197 Feb 18 08:07 program.sh
lftp tom@192.168.110.20:/> mkdir 222
mkdir 成功, 建立 `222'
lftp tom@192.168.110.20:/> ls
-rw------- 1 1000 1000 0 Feb 18 08:10 111
-rw------- 1 1000 1000 0 Feb 18 08:07 123
drwx------ 2 1000 1000 6 Feb 18 08:15 222
drwxr-xr-x 2 0 0 6 Feb 18 08:02 456
-rw------- 1 1000 1000 197 Feb 18 08:07 program.sh
lftp tom@192.168.110.20:/> rm -rf 111 222
rm ok, 2 files removed
lftp tom@192.168.110.20:/> ls
-rw------- 1 1000 1000 0 Feb 18 08:07 123
drwxr-xr-x 2 0 0 6 Feb 18 08:02 456
-rw------- 1 1000 1000 197 Feb 18 08:07 program.sh
lftp tom@192.168.110.20:/> get 123
lftp tom@192.168.110.20:/> exit
[root@localhost opt]# ls
123
lftp tom@192.168.110.20:~> put anaconda-ks.cfg
1451 bytes transferred
lftp tom@192.168.110.20:/> ls
-rw-r--r-- 1 1000 1000 0 Feb 18 08:07 123
drwxr-xr-x 2 0 0 6 Feb 18 08:02 456
-rw-r--r-- 1 1000 1000 1451 Feb 18 08:24 anaconda-ks.cfg
-rw-r--r-- 1 1000 1000 197 Feb 18 08:07 program.sh
jack
[root@localhost ~]# lftp -u jack 192.168.110.20
口令:
lftp jack@192.168.110.20:~> ls
-rw-r--r-- 1 1000 1000 0 Feb 18 08:07 123
drwxr-xr-x 2 0 0 6 Feb 18 08:02 456
-rw-r--r-- 1 1000 1000 1451 Feb 18 08:24 anaconda-ks.cfg
-rw-r--r-- 1 1000 1000 197 Feb 18 08:07 program.sh
lftp jack@192.168.110.20:/> get 123
lftp jack@192.168.110.20:/> exit
[root@localhost ~]# ls
123 anaconda-ks.cfg
lftp jack@192.168.110.20:~> mkdir 111
mkdir: Access failed: 550 Permission denied. (111)
lftp jack@192.168.110.20:~> put 789
put: Access failed: 550 Permission denied. (789)
lftp jack@192.168.110.20:/> ls
-rw-r--r-- 1 1000 1000 0 Feb 18 08:07 123
drwxr-xr-x 2 0 0 6 Feb 18 08:02 456
-rw-r--r-- 1 1000 1000 1451 Feb 18 08:24 anaconda-ks.cfg
-rw-r--r-- 1 1000 1000 197 Feb 18 08:07 program.sh
4. 配置本地用户ftp
[root@localhost ~]# useradd 456
[root@localhost ~]# passwd 456
![在