Ubutu/Debian使用 VSFTPD架设FTP服务器小结

Ubutu/Debian使用 VSFTPD架设FTP服务器小结架设FTP服务器有好几次了,以前搭建好以后,没有记录操作的详细步骤,过阵时间又忘记了。此次架设FTP服务的需求要点:vsftpdmysql虚拟用户虚拟目录 只读用户 只写用户读写用户。1.安装软件:sudoapt-getinstallvsftpdlibpam-mysqlmysql-server安装MySQL过程中会询问MYSQL的root密码,输入两遍,以

大家好,又见面了,我是你们的朋友全栈君。

架设FTP服务器有好几次了,以前搭建好以后,没有记录操作的详细步骤,过阵时间又忘记了。此次架设FTP服务的需求要点: vsftpd mysql 虚拟用户 虚拟目录   只读用户  只写用户 读写用户。

1.安装软件:

sudo apt-get install vsftpd libpam-mysql mysql-server

安装MySQL过程中会询问MYSQL的root密码,输入两遍,以后程序自动完成安装。

2.测试VSFTPD:

修改vsftpd.conf激活匿名用户。

sudo vim /etc/vsftpd.conf

编辑 anonymous_enable=YES , 保存; 执行:

sudo  /etc/init.d/vsftpd restart  &&  ps -e | grep vsftpd

重启服务,并确保程序已启动。如果命令有输出进程号,证明VSFTPD已启动。匿名用户地俄权限为系统本地用户ftp的权限。

此时使用匿名账户登录,检测vsftpd服务和局域网络配置是否正常。

3.建立目录结构:

sudo mkdir /ftp
sudo mkdir /ftp/upload
sudo mkdir /ftp/pub
sudo mkdir /ftp/test

其中/ftp 为FTP文件系统根目录,下面有存放只读数据的pub目录,存放上传数据的upload目录,用户test个人目录。

4.创建VSFTPD虚拟用户,用户名暂定为vsftpd

sudo useradd -d /ftp -s /bin/false vsftpd

5.创建用户数据库:

mysql -uroot -p

输入密码,进入,然后创建数据库和表,并赋予权限:

create database company_passwd;
use company_passwd;
create table vsftpd (
-> id int AUTO_INCREMENT NOT NULL,
-> name char(20)  NOT NULL,
-> passwd char(50)  NOT NULL,
-> primary key(id)
-> );
describe vsftpd;
insert into vsftpd (name,passwd) values ('test',password'123456');
insert into vsftpd (name,passwd) values ('pub',password'123456');
insert into vsftpd (name,passwd) values ('upload',password'123456');
grant select on company.vsftpd to vsftpd@localhost identified by 'aaa';
quit

6.测试vsftpd用户对数据库能否访问:

mysql -uvsftpd -paaa

use company_passwd;
select * from vsftpd;

如果看到test用户,表明正常。

7.打开vsftpd的pam认证:

sudo mv /etc/pam.d/vsftpd{,-bak}
sudo vim /etc/pam.d/vsftpd

先清空内容,然后输入下面代码:

auth required pam_mysql.so user=vsftpd passwd=aaa host=localhost db=company_passwd table=vsftpd usercolumn=name passwdcolumn=passwd crypt=2

account required pam_mysql.so user=vsftpd passwd=aaa host=localhost db=company_passwd table=vsftpd usercolumn=name passwdcolumn=passwd crypt=2

8.备份并更新VSFTPD配置文件:

sudo mv /etc/vsftpd.conf{,-bak}
sudo vim /etc/vsftpd.conf

清空所有内容,输入:

#

listen=YES

anonymous_enable=NO
local_enable=YES
write_enable=NO
guest_enable=YES
guest_username=vsftpd

local_umask=022
connect_from_port_20=YES

dirmessage_enable=YES
ftpd_banner=Welcome to Embedded Lab FTP Server!

nopriv_user=vsftpd
chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
user_config_dir=/etc/vsftpd_user_conf
local_root=/ftp/$USER
user_sub_token=$USER
virtual_use_local_privs=YES

secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log

data_connection_timeout=15

保存。

9.重启VSFTP服务,并确保程序已运行。

sudo /etc/init.d/vsftpd restart && ps -e | grep vsftpd

现在vsftpd+mysql已配置好。可以做些简单测试。

10.权限设定:

sudo chown vsftpd.nogroup /ftp

A. 只读用户pub,只有对/ftp/pub的读权限。

sudo chown root.root /ftp/pub

B.上传用户upload,只对upload目录有写权限,无读权限。

sudo chown root.root /ftp/upload

sudo vim /etc/vsftpd_user_conf/upload

输入:

#
write_enable=YES
anon_upload_enable=YES
chown_uploads=YES
download_enable=NO

C.个人用户,对test目录有读写权限,对upload目录只读,对pub只读。

sudo mkdir /ftp/test/pub
sudo mkdir /ftp/test/upload
sudo cd /ftp/test
sudo mount --bind /ftp/pub  pub
sudo mount --bind /ftp/upload upload
sudo chown root.root pub
sudo chown root.root upload
sudo chown vsftpd.nogroup /ftp/test

编辑test用户私人vsftpd配置:

sudo vim /etc/vsftpd_user_conf/test

输入:

#
write_enable=YES

Interesting Tips:

1.使用local_enable=YES可以开启本地用户,权限亦为本地用户权限。

2.使用guest_enable=YES可以开启虚拟用户,之后所有虚拟用户(包括使用PAM机制允许的本地用户)的权限皆为虚拟用户的权限。故而,如果希望开启虚拟用户,同时保留本地用户仍有本地用户的权限,可以在各个本地用户的用户私有配置里面,添加guest_enable=NO,刷新主配置文件中得设置。

3.如果匿名用户开启,其权限为本地用户ftp的权限。同时匿名用户不受local_root和user_sub_token的影响。

4.虚拟用户默认是同匿名用户拥有一样的权限。若要改变这个,则virtual_use_local_privs=YES. 让虚拟用户拥有和本地用户一样的权限,即本地用户拥有读写权限的文件,虚拟用户也照样拥有。对于匿名的上传文件的属性(属主,属组)可以通过chown_uploads和chown_username重新赋予。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162591.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软件版本号命名规范1.0.0.1什么意思_医疗器械软件版本号命名规范

    软件版本号命名规范1.0.0.1什么意思_医疗器械软件版本号命名规范软件版本号命名规范总原则标准的版本号必须采用XYZ的格式,并且X、Y和Z为非负的整数,禁止在数字前方补零版本是严格递增的,此处是:16.2.0->16.3.0->16.3.1在发布重要版本时,可以发布alpha,rc等先行版本alpha和rc等修饰版本的关键字后面可以带上次数和meta信息版本的优先层级指的是不同版本在排序时如何比较。判断优先层级时,必…

    2025年10月22日
    5
  • 【小白视角】大数据基础实践(五) MapReduce编程基础操作

    【小白视角】大数据基础实践(五) MapReduce编程基础操作目录1.MapReduce简介1.1起源1.2模型简介1.3MRv1体系结构1.4YARN1.4.1YARN体系结构1.4.2YARN工作流程2.MapReduce工作流程3.JavaApi要点4.实验过程最后1.MapReduce简介1.1起源在函数式语言里,map表示对一个列表(List)中的每个元素做计算,reduce表示对一个列表中的每个元素做迭代计算。它们具体的计算是通过传入的函数来实现的,map和reduce提供的是计算的框架。在MapReduce

    2022年6月22日
    33
  • ue4在c盘的缓存_怎么清除ps在C盘的缓存

    ue4在c盘的缓存_怎么清除ps在C盘的缓存大家好,可能很多新手使用UE4的时候会发现C盘越来越小了,那是因为UE4引擎的缓存文件默认保存在C盘的缘故。下面来告诉大家怎么解决这个问题。概述一、出现的问题:UE4的缓存文件会导致C盘膨胀!二、解决的方式:请严格按照下列步骤来执行1.更改UE4的缓存路径2.删除UE4在C盘的缓存3.删除各个引擎版本SwarmAgent(联机构建)的缓存文件…

    2022年10月5日
    3
  • PCIe 1. PCI与PCIe学习一——硬件篇

    PCIe 1. PCI与PCIe学习一——硬件篇最近在学习驱动开发过程中涉及到PCI相关知识,在网上看了很多文章,良莠不齐,我总结一下比较好的文章分享给大家,那就从源头开始说起。PCI总线和设备树是X86硬件体系内很重要的组成部分,几乎所有的外围硬件都以这样或那样的形式连接到PCI设备树上。虽然Intel为了方便各种IP的接入而提出IOSF总线,但是其主体接口(primaryinterface)还依然是PCIe形式。我们下面分成两部分介绍PCI和他的继承者PCIe(PCIexpress):第一部分是历史沿革和硬件架构;第二部分是软件界面和U

    2022年6月20日
    32
  • Mac下查看Tomcat版本「建议收藏」

    终端进入Tomcat目录找到bin下shcatalina.shversion转载于:https://my.oschina.net/u/4013710/blog/30486…

    2022年4月13日
    41
  • pychram安装教程

    pychram安装教程前言Pycharm社区版其实基本也够用的,但是,但是,还是想装专业版呢。一、安装pycharm1.下载安装包先去官网下载好安装包,我们这里用Windown环境的普通版就够用了https://www.jetbrains.com/pycharm/download/#section=windows2.安装后面就是一路next,跟装个QQ一样安装完成后,选择稍后重启电脑,然后去桌面打开pycharm…

    2022年8月27日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号