热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

FreeBSD系统配置vsftpd+pam虚拟用户

1.vsftpd安装cd/usr/ports/ftp/vsftpdmakeinstallclean2.vsftpd的配置文件与启动文件(1)配置文件的位置/usr/local/etc/vsftpd.conf(2)启动文件的位置/usr/local/libexec/vsftpd3.vsftpd虚拟用户的配置vi/usr/

1. vsftpd安装

cd /usr/ports/ftp/vsftpd
make install clean

2. vsftpd的配置文件与启动文件

(1)配置文件的位置 /usr/local/etc/vsftpd.conf
(2)启动文件的位置 /usr/local/libexec/vsftpd

3. vsftpd虚拟用户的配置

vi /usr/local/etc/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022

anon_upload_enable=NO
anon_mkdir_write_enable=NO

#限制本地用户在自己的目录里,这里将chroot_list_enable=YES
和chroot_list_file=/任意路径/vsftpd.chroot_list
注释掉(切记:以后添加新ftp账户的时候,需要在此文件里也添加一行,来对用户进行锁定在自己的目录里,否则是非常的危险的)
chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list 

listen=YES
secure_chroot_dir=/usr/local/share/vsftpd/empty
background=YES


-----------------------------------------------------------------


listen_port=5123     #为了安全,这里修改ftp的端口号
pam_service_name=vsftpd
user_config_dir=/usr/local/etc/vsftpd/

#好像vsftpd用户没有办法修改文件的权限的权限(chmod),加上这两行就可以了http://blog.haohtml.com/archives/7852
virtual_use_local_privs=YES
chmod_enable=YES

#用户虚拟用户
guest_enable=YES
guest_username=virtual  

4. 创建虚拟用户目录与用户的配置文件

用哪个系统用户做为虚拟用户的用户,权限就是谁的,例如用www,作为虚拟用户映射的用户。权限就应该为www。通常该方法用于网站的代码的上传。

一.添加ftp对应的本地系统用户virtual,用户组为www

#pw useradd virtual ?g www?d /home/virtual ?s /sbin/nologin
#mkdir /home/virtual
#passwd virtual

二.创建ftp虚拟用户配置文件

# mkdir /usr/local/etc/vsftpd
#注意这里的路径是user_config_dir 的路径

#cd /usr/local/etc/vsftpd
# vi abc
guest_enable=YES
guest_username=virtual
local_root=/data/htdocs/www
anon_world_readable_Only=no
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_umask=022

用户virtual为本地www组的本地用户,意思是将虚拟用户映射为本地用户(这里可能有问题,virtual用户默认的sh为nologin的,主目录为/home/virtual,并非/nonexistent,所以如果用ftp连接的时候发现直接就提示 "500 OOPS: cannot change directory:/nonexistent",请检查本地用户的主目录)。另外虚拟用户的目录一定让相对应的本地用户对目录有相应的访问操作权限。

#mkdir -p /data/htdocs/www
#chown -R virtual:www /data/htdocs/www
# chmod -R 775 /data/htdocs/www

其中上面的一些选项,可以在vsftpd.conf里进行全局配置的,这样再添加用户的时候就方便多了。这里有些配置是重复的.但不受影响的.

5. 安装vsftpd密码认证模块

cd /usr/ports/security/pam_pwdfile
make install clean

用于生成/usr/local/lib/pam_pwdfile.so文件
注:pam_pwdfile.so, 有关PAM认证模块简介见:http://blog.haohtml.com/index.php/archives/7386

6. 创建vsftpd认证模块
创建认证模块.记得清除默认配置文件里的auth和account内容或者注释掉。

# cp /etc/pam.d/ftpd /etc/pam.d/vsftpd
#vi /etc/pam.d/vsftpd
auth          required
 /usr/local/lib/pam_pwdfile.so 
pwdfile=/usr/local/etc/login
account    required   pam_permit.so

请注意下面的required认证处理的方式,一定要为required,不能为其它的,如sufficient ,有关他们的区别,请参考:http://blog.haohtml.com/index.php/archives/7393

7. 创建用户密码
可以用以下代码来实现用户密码的加密,用于ftp的用户验证。以下内容由于wordpress程序问题,可能显示或者复制的时候有误,请上传一张图.

复制下面

vi /usr/local/etc/add_ftp_user.pl
#! /usr/bin/perl -w
#filename: md5pwd.pl
use strict;
#
print "#example: user:passwd\n";
while () {
    exit if ($_ =~/^\n/);
    chomp;
    (my $user, my $pass) = split /:/, $_, 2;
    my $crypt = crypt $pass, '$1$' . gensalt(8);
    print "$user:$crypt\n";
}
sub gensalt {
    my $count = shift;
    my @salt = ('.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z');
    my $s;
    $s .= $salt[rand @salt] for (1 .. $count);
    return $s;
}

# chmod +x /usr/local/etc/add_ftp_user.pl

# /usr/local/etc/add_ftp_user.pl
#example: user:passwd
abc:abc
abc:$1$gLAEihTV$jQnPZDk4C8TZSrc.L7gLm/

说明:然后把上面的用户名与密码文件复制到下面的login文件中(可以一次添加多个用户及密码,按ctrl+c结束)

# vi /usr/local/etc/login
abc:$1$gLAEihTV$jQnPZDk4C8TZSrc.L7gLm/

9. 启动服务
启动:

/usr/local/libexec/vsftpd
或者
/usr/local/etc/rc.d/vsftpd start

Usage: /usr/local/etc/rc.d/vsftpd
[fast|force|one](start|stop|restart|rcvar|reload|status|poll)

关闭:直接kill掉

#killall vsftpd

这里将vsftpd作为服务启用,写到入/etc/rc.conf

echo 'vsftpd_enable="YES"' >>
/etc/rc.conf 

10. 测试vsftpd的登录情况

略,和下面的一样.

================================

11.添加新用户

下面我们来添加一个新用户

#/usr/local/etc/add_ftp_user.pl
#example:user:password
haohtml:com
haohtml:$1$b5cRPRVT$MODPUh9H0F1JWaioqbrXB.

echo 'haohtml:$1$b5cRPRVT$MODPUh9H0F1JWaioqbrXB.' >>
/usr/local/etc/login

添加配置文件:

vi /usr/local/etc/vsftpd/haohtml

将下面内容添加到文件里(这里为了方便,将guest_enable=YES和guest_username=apache放在了全局配置文件vsftpd.conf里了)

local_root=/data/htdocs/haohtml

anon_world_readable_Only=no

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

anon_umask=022

创建ftp目录

#mkdir /data/htdocs/haohtml
#chown -R virtual:www /data/htdocs/haohtml
#chmod -R 775  /data/htdocs/haohtml

重启vsfptd 生效

#/usr/local/libexec/vsftpd

ftp测试:

FreeBSD vsftpd+pam虚拟用户方案配置FreeBSD vsftpd+pam虚拟用户方案配置

有关配置参数请参考:http://blog.haohtml.com/index.php/archives/857

注意这里我们使用了chroot的功能,新版本的vsftpd软件(发现2.3.5版本有此问题.但2.3.2无此问题),可能会提示一些"Fixing 500 OOPS: vsftpd: refusing to run with writable root inside chroot "错误,解决办法只需要将ftp虚拟用户对应的根目录的写权限取消即可.参考:http://blog.haohtml.com/archives/12426

chmod a-w /data/htdocs/haohtml


推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
author-avatar
up61
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有