个人机器需要开个文件共享,Linux机器懒得配置SMB,就直接安装了ProFtpd,以做FTP服务器

Ubuntu安装挺简单,可使用就不那么友好了,配合GAdmin-Proftpd,一样不好用。

首先就卡在用户上,默认ftp用户等等都登录不进,各种认证失败,麻烦死了

搜索一下资料,可以支持Sqlite3做后端用户认证

就修改了一下Proftpd的配置,首先在modules.conf打开sql认证的终端

LoadModule mod_sql.c

......

# Install proftpd-mod-sqlite and decomment the previous
# mod_sql.c module to use this
LoadModule mod_sql_sqlite.c

然后再配置Sqlite3的配置,直接从网络上抄下来的,内容直接存为一个文件,放在/etc/proftp.d/conf.d/目录下

#首先来说这俩,定义proftpd以什么身份来运行,跟apache里的是一个意思
#我是习惯了apache定义为www用户和www组,配置proftpd也就这样了
#以什么身份运行,我个人感觉没啥特别意义,关键是虚拟用户对实体用户的映射!
User ftp
Group nobody
#sqlite2跟3差别较大,各软件平台对其支持也是分开来的,比如PHP
#这里就是指明,使用sqlite3
SQLBackend sqlite3
#数据库文件的绝对路径,一定要绝对
SQLConnectInfo /usr/local/lib/ftpd.db
#数据库内虚拟用户的密码认证方式
#我认为Backend的意思就是数据库自己的认证方式,比如mysql的password方案
#该方案可以指定多种,使用空格隔开,按照先后,依次try
#下面这句的意思就是“先用sqlite自己的认证方式(我用的明文,其他解决方案没研究)
#如果不行,再使用crypt(3)的方案”,实际配置文件里我只要了一个Plaintext
SQLAuthTypes Plaintext Backend Crypt
#自定义存放用户信息的表和字段
#下面这句的意思就是
#users表 里的 字段:用户名 密码 系统映射uid 系统映射gid 主目录 shell路径
#切记:表和字段的名字可以随便起(跟实际数据库中的表和字段相对应),但顺序不可乱
#按照我对英文howto的理解,前4个字段名是必须要设置的,后两个如果自己用不上
#必须使用NULL来填补,这样mod_sql模块就不会去检索这俩字段了
SQLUserInfo users user_name user_passwd uid gid home_dir NULL
#如果主目录字段名设置为NULL,那么这里这个就必须要定义
#这个是用来定义那些没有“主目录定义的用户”的主目录,有点绕口:P
#SQLDefaultHomedir “/tmp”
#这个参数设置为off的意思,是不让proftpd去检查该FTP用户映射到系统里的用户的shell
#就是说,有没有shell,我都让你登陆。特别是上面的字段,将shell路径这个设置为了NULL
RequireValidShell off
#组信息,没啥意思,就这么放着吧,意思跟上面那个SQLUserInfo一样
#表名 组名 组id 成员
SQLGroupInfo groups group_name gid members
#这里是用户身份认证的程度,只验证user,连带group啥的都验证
#图简单,我这里只验证user这一层
SQLAuthenticate users
#设置ProFTPD允许登陆的最小UID,这个UID是映射到linux系统内实际用户的UID,小于这个值将不允许登陆
#这个值如果不设置,系统默认的是999,在很多国内的文章里,uid和gid都是设置5000多
#所以即使不管这个值,也不会有问题,可是如果你跟我一样,映射用户的uid和gid都小于999了,就要注意它了
#我的www用户的uid和gid都是504,在这里,卡了我有一个多小时,TNND
SQLMinUserUID 1000
#这两个的意思,是所有未在数据库中定义uid和gid的用户的默认uid及gid
SQLDefaultUID 1001
SQLDefaultGID 1002

最后建立SQLITE3的数据库

执行sqlite3 /usr/local/lib/ftpd.db

输入如下两个SQL语句,分别创建表,及插入一个用户

CREATE TABLE "users" ("user_name" varchar(20), "user_passwd" varchar(50), "uid" int(11) NOT NULL DEFAULT 1001, "gid" int(11) NOT NULL DEFAULT 1002, "home_dir" varchar(200), "shell" varchar(200));

INSERT INTO "users" VALUES('test','test',1001,1002,'/home/www/ftp/test',NULL);

 使用test用户就可以登录了。

表的uid和gid的默认值都设置为了1001/1002,即XXX用户在系统内的uid和gid的值。新添加字段时,这两个字段我也设置了。XXX用户和组在我系统内是早就建好的,uid和gid分别都是1001/1002。

通过这两个字段的值,就完成了proftpd内的虚拟用户跟系统内实体用户的映射

如果插入的虚拟用户的UID与GID都是1000,那创建的文件/目录就归属于当前用户了(大多是系统建立时的第一个用户)

然后配置目录权限,我希望做到是所有用户只允许上传、下载,不允许删除

简单配置一个文件放在/etc/proftp.d/conf.d目录下

<Limit DELE RMD>
DenyAll #全部匿名用户在download文件夹不能WRITE写入、删除、删除文件夹
</Limit>

配置文件备份:https://files.cnblogs.com/files/eaglexmw/proftpd.conf.tar.gz

ubuntu下配置ProFtpd服务使用sqlite3作为后端用户认证的更多相关文章

  1. [转]Ubuntu下配置NFS服务

    [转]Ubuntu下配置NFS服务  http://blog.163.com/liu8821031%40126/blog/static/111782570200921021253516/ Table ...

  2. Ubuntu下配置tftp服务

    Ubuntu下配置tftp服务 1.安装TFTP软件 sudo apt-get install tftp-hpa tftpd-hpa tftp-hpa是客户端,tftpd-hpa是服务器端 2.建立t ...

  3. Ubuntu下配置NFS服务

    Table of Contents 1.下载相关软件 2.建立共享目录 3.修改该配置文件 4.重启服务 5.测试服务器 6.测试客户端 测试系统:Ubuntu8.04 1.下载相关软件 使用如下命令 ...

  4. Ubuntu 下配置ftp服务端

    安装sudo apt-get install pure-ftpdsudo netstat –ano | grep “21”查看21端口是否已开启.完成安装后,就可以用Ubuntu系统的用户名和密码登陆 ...

  5. Ubuntu 下配置 SSH服务全过程及问题解决

    Windows下做Linux开发,装虚拟机里,怎么可以不用SSH呢.有人说,“做Linux开发,还不直接装机器上跑起来了,还挂虚拟机,开SSH……闲的蛋疼了吧”,不管怎样,我接触Linux算是3年了, ...

  6. Ubuntu下配置python完成爬虫任务(笔记一)

    Ubuntu下配置python完成爬虫任务(笔记一) 目标: 作为一个.NET汪,是时候去学习一下Linux下的操作了.为此选择了python来边学习Linux,边学python,熟能生巧嘛. 前期目 ...

  7. 转[开发环境配置]在Ubuntu下配置舒服的Python开发环境

    在Ubuntu下配置舒服的Python开发环境 Ubuntu 提供了一个良好的 Python 开发环境,但如果想使我们的开发效率最大化,还需要进行很多定制化的安装和配置.下面的是我们团队开发人员推荐的 ...

  8. Ubuntu下配置C/C++开发环境

    在 Ubuntu 下配置 C/C++ 开发环境 转自:白巴的临时空间 Submitted by 白巴 on 2009-04-27 19:52:12. 学习笔记 虽然 Ubuntu 的版本已经是9.04 ...

  9. Sco Openserver下 配置SSH服务(图解)

    Sco Openserver下 配置SSH服务 好久没玩儿Sco Unix系统了,春节过后为邮政系统的一个朋友调试系统( 装了个远程服务) ,这两天将安装过程回忆了一下,总结出来给大家分享. 本试验需 ...

随机推荐

  1. ArcGis下的叠加分析

     1矢量与矢量叠加的话就用ToolBox里有Overlay: 2如果是矢量和栅格叠加的话用Spatial analysis模块中的 zonal statistics: 3还有就是栅格与栅格的叠加S ...

  2. C++——类继承以及类初始化顺序

    对于类以及类继承, 几个主要的问题:1) 继承方式: public/protected/private继承. 这是c++搞的, 实际上继承方式是一种允许子类控制的思想. 子类通过public继承, 可 ...

  3. 【BZOJ 4103】 [Thu Summer Camp 2015]异或运算 可持久化01Trie

    我们观察数据:树套树 PASS    主席树 PASS  一层一个Trie PASS 再看,异或!我们就把目光暂时定在01Tire然后我们发现,我们可以带着一堆点在01Trie上行走,因为O(n*q* ...

  4. Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D

    D. Little Artem and Dance time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  5. video视频在结束之后回到初始状态

    目前尝试了两种解决方案,但是方案1在安卓移动端无法生效(猜测是因为移动端安卓启动的是原生的视频播放控件的原因) 方案一: 重新load资源,这种方法比较简洁,但是在安卓下不适用 video.addEv ...

  6. vue相对路径修改

    如果静态文件不是部署在网站根目录下,vue-cli将给你造成巨大的麻烦. 你不能直接把build好的文件抛进一个目录.你不能直接在本地打开用vue做好的静态网站. 改成相对路径,主要需要做两步. 1. ...

  7. WebComponents四大天王教程

    Shadow Dom: http://www.html5rocks.com/zh/tutorials/webcomponents/shadowdom/ http://www.html5rocks.co ...

  8. UOJ#80 二分图最大权匹配 [模板题]

    从前一个和谐的班级,有 nlnl 个是男生,有 nrnr 个是女生.编号分别为 1,…,nl1,…,nl 和 1,…,nr1,…,nr. 有若干个这样的条件:第 vv 个男生和第 uu 个女生愿意结为 ...

  9. DotNETCore 学习笔记 宿主

    Hosting -------------------------------------------------------------------------- Setting up a Host ...

  10. centos6.4 nginx+mysql+php整合phpmyadmin出错解决方案

    今天在centos下整合phpmyadmin出错,错误提示如下: Error during session start; please check your PHP and/or webserver ...