部署环境
- CentOS Linux release 7.8.2003 (Core)
- vsftpd-3.0.2-27.el7.x86_64
- yum配置为阿里云源
安装vsftp
使用yum安装vsftd
[root@localhost etc]# yum install vsftpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 vsftpd.x86_64.0.3.0.2-27.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
========================================================================================================================================================================
Package 架构 版本 源 大小
========================================================================================================================================================================
正在安装:
vsftpd x86_64 3.0.2-27.el7 base 172 k
事务概要
========================================================================================================================================================================
安装 1 软件包
总下载量:172 k
安装大小:353 k
Is this ok [y/d/N]: y
Downloading packages:
vsftpd-3.0.2-27.el7.x86_64.rpm | 172 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : vsftpd-3.0.2-27.el7.x86_64 1/1
验证中 : vsftpd-3.0.2-27.el7.x86_64 1/1
已安装:
vsftpd.x86_64 0:3.0.2-27.el7
完毕!
防火墙21端口放行
[root@localhost vsftpd]# firewall-cmd --add-port=21/tcp --permanent
success
[root@localhost vsftpd]# firewall-cmd --reload
success
启动vsftpd服务
[root@localhost vsftpd]# service vsftpd start
Redirecting to /bin/systemctl start vsftpd.service
启动过程中可能会报错使用以下指令查看报错信息
[root@localhost vsftpd]# systemctl status vsftpd.service
如果提示
vsftpd.service: control process exited, code=exited status=1
则可能为端口被vsftp进程占用,此时即使使用service vsftpd stop也无法杀死vsftp进程需要手动杀死进程
首先查看占用21端口的进程
[root@localhost vsftpd]# netstat -natp |grep 21
tcp 0 0 10.101.53.121:22 10.101.53.196:51857 ESTABLISHED 17524/sshd: root@pt
tcp 0 0 10.101.53.121:22 10.101.53.93:54673 ESTABLISHED 28425/sshd: root@pt
tcp6 0 0 :::21 :::* LISTEN 20284/vsftpd
可以看到vsftpd进程未被杀死,将其kill
[root@localhost vsftpd]# kill 20284
之后重启vsftp服务
[root@localhost vsftpd]# systemctl start vsftpd.service
配置vsftp
现在的需求为,新建一个账户,需要此账户使用ftp登入服务器后,可进入指定的文件夹。
首先新建一个账户web
[root@localhost vsftpd]# useradd web
修改密码,需要输入两次密码确认,输入时是看不见输入字符的,如果输入错误了,使用ctrl+u清除后重新输入密码。
[root@localhost vsftpd]# passwd web
更改用户 web 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
修改sudoers文件,使web账户拥有修改其他目录的权限
[root@localhost vsftpd]# chmod -v u+w /etc/sudoers
"/etc/sudoers" 的权限模式保留为0777 (rwxrwxrwx)
使用vi编辑文件,在root下放添加一条记录
root ALL=(ALL) ALL
web ALL=(ALL) ALL #这个是新用户
进入vsftpd文件夹
[root@localhost vsftpd]# cd /etc/vsftpd
使用vi指令新建文件chroot_list,不添加任何内容直接保存退出
[root@localhost vsftpd]# vi /etc/vsftpd/chroot_list
新建一个userconf文件夹,在其中新建一个文件名为web的文件
[root@localhost vsftpd]# mkdir /etc/vsftpd/userconf
[root@localhost vsftpd]# vi /etc/vsftpd/userconf/web
在web文件中写入如下信息,这里配置的是登入以后所在的目录节点,可根据需求自行更改,我这里直接配置根目录
local_root=/
编辑/etc/vsftpd/vsftpd.conf文件
在文末加入以下信息
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
user_config_dir=/etc/vsftpd/userconf
allow_writeable_chroot=YES
重启vsftp服务
[root@localhost vsftpd]# service vsftpd restart
Redirecting to /bin/systemctl restart vsftpd.service
将vsftp加入开机自启动
[root@localhost vsftpd]# chkconfig vsftpd on
注意:正在将请求转发到“systemctl enable vsftpd.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
客户端连接
这里用两种方式连接ftp服务器
- cmd模式下ftp指令连接
- 资源管理器连接
win+r输入cmd打开cmd窗口
使用以下指令连接ftp服务器
C:\Users\admin>ftp #打开ftp命令行
ftp> open 10.101.53.121 #连接到服务器
连接到 10.101.53.121。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(10.101.53.121:(none)): web #输入用户名
331 Please specify the password.
密码: #输入密码
230 Login successful.
ftp> ls #查看当前目录下所有文件
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
backup
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
226 Directory send OK.
ftp: 收到 115 字节,用时 0.02秒 7.19千字节/秒。
ftp> bye #退出ftp命令行
221 Goodbye.
C:\Users\admin>
资源管理器连接ftp服务器前,需要先做几个设置
打开cmd,输入OptionalFeatures.exe打开“windows功能”
将“TFTP客户端”、“fpt服务”以及“ftp拓展性”勾选->确定
再次打开cmd,输入inetcpl.cpl打开“internet属性窗口”
将“使用被动FTP(用于防火墙和DSL调制解调器的兼容)”去掉勾选->确定
win+e打开资源管理器
在地址栏输入ftp地址并访问
未登录时会显示pub文件夹并且无法进行文件传输操作,右键空白处选择登录,输入账号密码即可看到文件目录
在复制文件夹的时候,可能会提示550 create directory operation failed
ftp> mkdir
目录名 asdf
550 Create directory operation failed.
ftp>
原因是当前目录无写权限
可以用chmod 777来提权
[root@localhost home]# ll
总用量 4
drwxr-xr-x. 7 root root 251 10月 22 08:59 lnmp1.7
drwxr-xr-x. 5 mysql mysql 4096 10月 22 10:48 mysql_db
drwx------. 5 web web 128 10月 22 14:55 web
drwxrwxrwx. 2 root root 82 10月 22 10:19 wwwlogs
drwxr-xr-x. 3 root root 21 10月 22 10:00 wwwroot
[root@localhost home]# chmod 777 wwwroot
[root@localhost home]# ls
lnmp1.7 mysql_db web wwwlogs wwwroot
[root@localhost home]# ll
总用量 4
drwxr-xr-x. 7 root root 251 10月 22 08:59 lnmp1.7
drwxr-xr-x. 5 mysql mysql 4096 10月 22 10:48 mysql_db
drwx------. 5 web web 128 10月 22 14:55 web
drwxrwxrwx. 2 root root 82 10月 22 10:19 wwwlogs
drwxrwxrwx. 3 root root 21 10月 22 10:00 wwwroot
1 条评论
[...]摘自:https://www.ihawo.com/archives/201.html[...]