跳至主要內容

linux安装ftp服务

tanmantang原创大约 3 分钟linuxlinuxftp文件系统

查看是否已经安装了vsftpd

vsftpd -version

若已经安装了,则会输出版本信息,如vsftpd: version 3.0.2

若提示-bash: vsftpd: command not found找不到命令则未安装

安装vsftpd

yum install -y vsftpd

新建FTP目录

# 创建ftp目录 (根据自身需求更改)
mkdir -p /data/ftp

创建新用户

# useradd -d 登入时的启始目录 -s 登入后所使用的shell 用户名
useradd -d /data/ftp -s /bin/bash mantang

给新建的用户设置密码

passwd mantang

设置ftp目录权限

将/data/ftp目录权限设置为mantang用户,否则ftp客户端将无法写入文件

chown -Rc mantang /data/ftp

防火墙添加FTP服务

firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload

修改Selinux

setsebool -P ftpd_full_access on

修改配置文件

# 备份配置文件(重要,建议不要直接修改配置文件)
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
vim /etc/vsftpd/vsftpd.conf

参数修改如下,其他配置未涉及到的直接默认就行 注意最下面三行,是新添加的

# 是否允许匿名用户登录,默认no不允许
anonymous_enable=NO
# 是否允许本地用户登录,本地用户指/etc/passwd中的用户
local_enable=YES
# 是否允许使用会改变FTP文件系统的指令(delete,stop等等)
write_enable=YES
# 是否允许匿名用户文件上传
ano_upload_enable=NO
# 限制所有用户都在家目录
chroot_local_user=YES
# 是否将系统用户限止在自己的目录下
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd/chroot_list
# vsftpd是否以单独模式运行,默认no
listen=NO 

pam_service_name=vsftpd
userlist_enable=YES
// highlight-start
tcp_wrappers=YES
allow_writeable_chroot=YES
# ftp根目录
local_root=/data/ftp 
// highlight-end

修改权限清单

vim /etc/vsftpd/chroot_list

注意

修改/etc/vsftpd/chroot_list文件时注意 在这个配置文件中添加用户,每个用户一行,在这个文件里的用户登录ftp后,可以访问上级目录。 而不在这个配置文件中的用户只能访问自己的home目录。 该文件可以为空,也就是所有ftp用户只能访问自己目录

启动

# 启动
systemctl start vsftpd.service

# 重启
systemctl restart vsftpd.service

# 停止
systemctl stop vsftpd.service

# 设置开机启动
systemctl enable vsftpd.service

禁止ftp用户ssh登录

由于需要限制ftp用户在自己的目录,在21端口下没有问题,但当ftp用户用sftp登录时,还是可以访问上级目录,于是禁止ftp用户ssh登录

# 禁止用户mantang使用ssh登录
echo "DenyUsers mantang" >> /etc/ssh/sshd_config

# 禁止ftp用户组下面的所有用户使用ssh登录
echo "DenyGroups ftp" >> /etc/ssh/sshd_config

# 重启sshd 服务
systemctl restart sshd

提示

其他更多关于ssh禁用登录的知识,请访问 linux禁止用户使用ssh登录服务器

参考链接:

vsftpd配置文件参数详解open in new window