首先做个表态, 本人并不是linux的大师, 仅限于平时有空在自己虚拟机上尝试玩几下。所以文章里有什么说的不对或者不专业的地方忘各人谅解。

最近因为某个创业项目需要, 整个服务器架构都需要自己去搭建,今天在aliyun服务器上,自己尝试搭建了FTP。 在Ubuntu OS 下安装了vsftpd ,并配置了虚拟账户登录。

大概的步骤是这样的:

vsftpd 安装 -> 创建虚拟用户数据库 -> 配置PAM文件->为虚拟用户创建本地系统用户->修改master vsftpd配置文件 -> 修改虚拟用户vsftpd 配置文件 -> 重启vsftpd

完美, 没有瑕疵。 关于如何安装vsftpd 在这边文章里不做描述, 大家不懂的地方可以问问度娘。 这里详细介绍下如何创建FTP 虚拟用户。

创建虚拟用户数据库

创建一个文本文件,ie, usrlist.txt 。保存的地址可以自己决定, 我的是/etc/vsftpd/

格式如下:

user_id
password

注意:奇数行为账户名,偶数行为密码。也就是1.3.5.等行为用户名,2.4.6行为密码;最后一行需要回车(否则建立数据库文件时无法识别最后一行,导致报奇数行错误)这里我用红色highlight就是因为自己曾经在这里摔过跟头..

生成数据库

如果你系统里没有安装db-util, 就需要自己手动安装,我看到网上其他地方很多人装的是db<version>-util, 但我在我的服务器上找不到这个包, 于是我直接装的是db-util。  这个工具其实就是把相应的文本文件转换成相应的数据库文件。

sudo apt-get install db-util

安装完后就可以把刚刚创建的txt文本文件转换为数据库,生成验证文件。

db_load -T -t hash -f usrlist.txt /etc/vsftpd/vsftpd_login.db
chmod 600  /etc/vsftpd/vsftpd_login.db

配置PAM文件

pam 文件地址在 /etc/pam.d/vsftpd.  我在原有的基础上加入了投两行,直接显示给你们看:

auth sufficient  pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient  pam_userdb.so db=/etc/vsftpd/vsftpd_login
# Standard behaviour for ftpd(8).(以pam模块限制某些账号无法登录主机的设定)
auth    required    pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.# Standard pam includes@include common-account@include common-session@include common-authauth  required    pam_shells.so

我们上一步建立的数据库文件vsftpd_login在这里被应用。

我们建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd 来启用的,后面会介绍。

为虚拟用户创建本地系统用户

新建一个系统用户vsftpd,用户家目录为/home/vsftpd, 用户登录终端设为/bin/false(即使之不能登录系统)

sudo useradd vsftpd -d /home/vsftpd -s /bin/false
sudo chown vsftpd:vsftpd /home/vsftpd

我们创建的虚拟用户就是通过借助这个本地用户来登录ftp。

修改master vsftpd配置文件

master配置文件在 /etc/vsftpd.conf ,我们接下来通过配置这个文件让虚拟用户生效,主要的命令有几条

listen=YES
anonymous_enable=NO (如果要让访问的用户必须输入用户名和密码的话,这个时候这里就是设置成NO)
dirmessage_enable=YES (登录后是否显示登录信息)
xferlog_enable=YES (开启登录记录)
xferlog_file=/var/log/vsftpd.log (上传、下载日志文件路径)
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd(这个就是我们上面设置的本地用户名)
user_config_dir=/etc/vsftpd_user_conf (用户配置文件)
pam_service_name=vsftpd (pam模块名称, 验证文件)
local_enable=YES (允许本地用户登录)
secure_chroot_dir=/var/run/vsftpd  

修改虚拟用户vsftpd 配置文件

根据上面的user_config_dir路径我们创建虚拟用户自定义的权限设置,比如虚拟用户是ftpuser, 那么我们就在该路径下创建一个叫ftpuser的文件

直接显示我的配置文件内容:

local_root=/usr/www (这里是你要ftp登录的主目录)
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

重启vsftpd 服务

终于, 重启下服务, 然后测试,成功

>> ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.2)
Name (localhost:root): <你的虚拟用户账号名称>
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Troubleshooting

  1. 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
是文件夹问题,把ftp账户登陆的文件夹设置为只读即可正常登陆,但是这样便没办法在ftp登陆的文件夹根目录写入文件了,只能新建一个文件夹来使用。尝试添加如下,重启vsftpd
echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf

Ubuntu下vsftpd - 虚拟账户配置相关推荐

  1. Ubuntu 下apache2 虚拟主机配置

    一.安装: ubuntu 及debian 下的apahce 有点特别,如果使用apt-get 方式安装( apt-get install apache2 ) 则安装目录默认在 /etc/apache2 ...

  2. Vsftpd 虚拟用户配置参考---终极版

    Vsftpd 虚拟用户配置文档 一.主要文件列表 虚拟用户列表 account.txt 口令库文件 /etc/vsfptd/account.db PAM认证 /etc/pam.d/vs_1 主配置文件 ...

  3. Linux下Apache虚拟主机配置

    说明: Apache版本:httpd-2.2.31 Apache安装目录:/usr/local/apache 目的: 配置Apache虚拟主机 具体操作: 1.修改Apache主配置文件 cp /us ...

  4. wireshark使用教程 linux,Linux入门教程:ubuntu下安装wireshark(以及配置非root),这个强大的工具可以捕...

    Linux入门教程:ubuntu下安装wireshark(以及配置非root),这个强大的工具可以捕 Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数据,并为用户提供关 ...

  5. 基于不同IP地址下的虚拟主机配置以及基于不同端口下的虚拟主机配置

    基于不同IP地址下的虚拟主机配置 一.配置vhost.conf(主配置文件) (一).进入主配置文件目录:cd /etc/httpd/conf.d (二).配置主配置文件:vim vhost/conf ...

  6. firefox linux 中文字体,Ubuntu下的Firefox字体配置方案

    有关gnome & gtk*的字体配置,在各人机器上总会有些不一.一种配置,适合我:可能并不一定适合别人.软件本身的说明往往是最有说服力,配置起来也最有效果的吧.这里也提供一个Ubuntu下的 ...

  7. linux apache部署php,Linux下apache虚拟主机配置多版本php同时运行 | 系统运维

    学习本教程须掌握: 1.Linux下指定版本编译安装LAMP 2.Linux下Apache虚拟主机配置 3.CentOS 7.x编译安装Nginx1.10.3+MySQL5.7.16+PHP5.2 5 ...

  8. ubuntu下vsftpd配置详细篇

    1. 本人配置的ftp服务器的设计要求如下: (1).匿名用户可登录浏览,但不能下载 (2).设置4个不同等级的用户使用此ftp服务器(虚拟用户),分别如下 用户名:nan306   路径/home/ ...

  9. vsftpd的虚拟账户配置

    1). yum -y install vsftpd db4-utils 2). 建立系统账号      useradd virftp -s /sbin/nologin 3). 建立虚拟账户       ...

  10. win下ubuntu安装mysql_MySQL在Win10与Ubuntu下的安装与配置

    近段时间把自己电脑(win).虚拟机(Ubuntu)以及阿里云(ubuntu)都重置了一遍,其中本机以及阿里云都有用到MySQL,不想之后找教程找的那么麻烦.所以就自己总结一遍,一次性把轮子造好. 环 ...

最新文章

  1. 把mysql安装到服务器端_MySQL服务器端安装
  2. java jtable应用源码_JTable的应用(一)
  3. URLConnection和HttpURLConnection类
  4. char与byte的差别
  5. 中运量71路线路图_上海新增公交线路835路 连接中运量71路与虹桥枢纽
  6. Android中Xml工具类的封装
  7. 模拟定位工具gps mock
  8. android自定义wifi列表,Android开发之Wifi基础教程
  9. IDEA 2017 破解方法(附图)
  10. STATA长面板数据分析
  11. 阿里云服务器安装Nginx
  12. 笔记本自带键盘与IDEA快捷键冲突
  13. Building 'xxx' Gradle project info
  14. i tell you
  15. c语言围棋原理,围棋中的数学原理
  16. 铲雪车(snow) UVA10203 Snow Clearing 题解 优化版
  17. lqr ilqr代码实例
  18. 51、基于51单片机的GPS定位系统(GSM短信)
  19. STM8L052C6 低功耗+LCD显示 经验分享
  20. python恶搞代码-Python里最搞怪的招式是啥 |初探生成器

热门文章

  1. 《卫报》评全球最具影响力博客50强 徐静蕾入选
  2. ie打开本地html页面慢,ie11 第一次浏览jquery+CSS3网页时候延时3秒
  3. 富文本 和 图片裁切
  4. roaringbitmap java,BitMap与RoaringBitmap、JavaEWAH
  5. idea gradle GC overhead limit exceeded
  6. error occurred during initialization of VM报错解决
  7. 举个栗子!Tableau 技巧(183):快速实现部分类别的排序
  8. python命令行参数是什么
  9. uniapp实现苹果支付流程
  10. 用 Opencv 和 Python 对汪星人做模糊检测