linux中如何搭建FTP服务
声明:在线安装和离线安装是在不同的服务器上进行的。
在线安装FTP
安装vsftpd服务
1.执行以下命令,安装vsftpd。
yum install -y vsftpd
2.执行以下命令,将vsftpd服务加入到启动项中。
systemctl enable vsftpd
3.执行以下命令,启动 FTP 服务。
systemctl start vsftpd
4.执行以下命令,确认服务是否启动。
netstat -antup | grep ftp
#这条命令是用于查看端口是否占用或者占用情况。
如果显示结果如下,则说明 FTP 服务已成功启动。
添加FTP用户并分配权限
1.执行以下命令,为 FTP 服务创建一个用户,本文以 ftpuser 为例。
useradd ftpuser
2.执行以下命令,重置用户密码
passwd ftpuser
注意:记住此刻设置的密码,默认8位不宜太简单,linux会提示密码过于简单。
3.执行以下命令,创建FTP的工作目录。(用户连接后直接进入这个目录。)
mkdir /var/ftp
4.执行以下命令,为用户分配目录权限。
chown -R ftpuser:ftpuser /var/ftp
修改FTP配置文件
1.执行以下命令,打开 vsftpd.conf 文件。
vim /etc/vsftpd/vsftpd.conf
#禁止匿名用户登录
anonymous_enable=NO
#禁止匿名用户登录
local_enable=YES
write_enable=YES
#全部用户被限制在主目录
chroot_local_user=YES
#启用例外用户名单
chroot_list_enable=YES
#指定用户列表文件,该列表中的用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
#监听IPv4 sockets
listen=YES
#注释掉以下参数,关闭监听IPv6 sockets
#listen_ipv6=YES
#设置本地用户登录后所在的目录
local_root=/usr/local/sinozur/ftp
allow_writeable_chroot=YES
2.设置指定用户列表文件,该列表中的用户不被锁定在主目录,执行以下命令,创建并编辑 chroot_list 文件。
vim /etc/vsftpd/chroot_list
3.输入刚才创建的用户:ftpuser;注意:一个用户名占一行,设置完成后按 Esc 并输入 :wq! 保存并退出。
4.执行以下命令,重启vsftpd服务。
systemctl restart vsftpd
验证服务是否安装成功
1.我采用局域网内的Windows主机的资源管理器,输入地址连接FTP。
2.输入linux中创建的账号:ftpuser;输入密码。
3.连接后进入的目录就是FTP的工作目录:/usr/local/sinozur/ftp;即可上传或者下载文件。
离线安装FTP
验证机器是否安装FTP
1.执行以下命令,查看是否安装FTP
rpm -qa | grep vsftp
若无返回,则说明未安装;若是又返回值,则说明存在安装。
2.下载离线安装包:
https://rpmfind.net/linux/rpm2html/search.php?query=vsftpd(x86-64)
我下载的是vsftpd-3.0.5-150400.3.9.1.x86_64.rpm安装包
3.通过软件将安装包上传到工作目录下。
[root@localhost ~]# cd /usr/local/ftp/
[root@localhost ftp]# ls
vsftpd-3.0.5-150400.3.9.1.x86_64.rpm
4.执行以下命令安装FTP。
rpm -ivh vsftpd-3.0.5-150400.3.9.1.x86_64.rpm
遇到的错误:
warning: vsftpd-3.0.5-150400.3.9.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 39db7c82: NOKEY
error: Failed dependencies:
group(nobody) is needed by vsftpd-3.0.5-150400.3.9.1.x86_64
libc.so.6(GLIBC_2.28)(64bit) is needed by vsftpd-3.0.5-150400.3.9.1.x86_64
libcrypto.so.1.1()(64bit) is needed by vsftpd-3.0.5-150400.3.9.1.x86_64
libcrypto.so.1.1(OPENSSL_1_1_0)(64bit) is needed by vsftpd-3.0.5-150400.3.9.1.x86_64
libssl.so.1.1()(64bit) is needed by vsftpd-3.0.5-150400.3.9.1.x86_64
libssl.so.1.1(OPENSSL_1_1_0)(64bit) is needed by vsftpd-3.0.5-150400.3.9.1.x86_64
shadow is needed by vsftpd-3.0.5-150400.3.9.1.x86_64
user(ftp) is needed by vsftpd-3.0.5-150400.3.9.1.x86_64
网上找了下错误原因:主要是这个centos系统安装这个安装包(vsftpd-3.0.5-150400.3.9.1.x86_64.rpm)缺少依赖。
重新找了个和我系统版本匹配的安装包,上面那个就弃用了。(我的系统内核信息:Linux localhost.localdomain 3.10.0-1160.el7.x86_64)
https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm
5.再次执行安装命令以及返回结果。
[root@localhost ftp]# rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm
#返回结果
[root@localhost ftp]# rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:vsftpd-3.0.2-28.el7 ################################# [100%]
创建FTP工作目录和FTP用户
1.执行以下命令,创建FTP工作目录。
[root@localhost ~]# mkdir ftp
2.执行以下命令,创建用户并修改用户密码。
[root@localhost vsftpd]# useradd ftpuser
[root@localhost vsftpd]# passwd ftpuser
Changing password for user ftpuser.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
3.执行以下命令给工作目录赋权限。
[root@localhost ~]# chown -R ftpuser:ftpuser /root/ftp
查看是否成功。返回结果可见第八行FTP工作目录权限修改成功。
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 2926 Sep 19 08:43 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Oct 13 07:02 Desktop
drwxr-xr-x. 5 root root 44 Nov 9 17:41 docker
drwxr-xr-x. 2 root root 6 Oct 13 07:02 Documents
drwxr-xr-x. 2 root root 6 Oct 13 07:02 Downloads
drwxr-xr-x 2 ftpuser ftpuser 6 Dec 21 00:43 ftp
drwxr-xr-x. 2 root root 6 Oct 13 07:02 Music
drwxr-xr-x. 6 root root 149 Oct 13 10:40 nginx
drwxr-xr-x. 2 root root 6 Oct 13 07:02 Pictures
drwxr-xr-x. 2 root root 6 Oct 13 07:02 Public
drwxr-xr-x. 2 root root 6 Oct 13 07:02 Templates
drwxr-xr-x. 2 root root 6 Oct 13 07:02 Videos
修改配置文件并启动服务
1.执行以下命令,打开 vsftpd.conf 文件。
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
#禁止匿名用户登录
anonymous_enable=NO
#禁止匿名用户登录
local_enable=YES
write_enable=YES
#全部用户被限制在主目录
chroot_local_user=YES
#启用例外用户名单
chroot_list_enable=YES
#指定用户列表文件,该列表中的用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
#监听IPv4 sockets
listen=YES
#注释掉以下参数,关闭监听IPv6 sockets
#listen_ipv6=YES
#设置本地用户登录后所在的目录
local_root=/usr/local/sinozur/ftp
allow_writeable_chroot=YES
2.设置指定用户访问FTP工作目录。
vim /etc/vsftpd/chroot_list
添加上刚刚创建的新用户ftpuser。
3.执行以下命令,将vsftpd服务加入到启动项中。
systemctl enable vsftpd
4.执行以下命令,启动 FTP 服务。
systemctl start vsftpd
5.查看返回值。
[root@localhost ~]# netstat -antup | grep ftp
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 11172/vsftpd
验证是否成功连接。
1.连接ftp地址后,提示无法与服务器连接。
2.排查后发现是linux的防火墙开着在。那我们把ftp服务加入到防火墙通行规则中去。
[root@localhost vsftpd]# firewall-cmd --permanent --zone=public --add-service=ftp
success
[root@localhost vsftpd]# firewall-cmd --reload
success
3.再次尝试连接。
输入用户密码后连接成功。
共有 0 条评论