debian 安装vsftpd

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

虚拟用户登录(使用db4.8数据库文件)

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

 http://wiki.ubuntu.org.cn/Vsftpd%E8%99%9A%E6%8B%9F%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE


1,安装vsftpd

apt-get instasll vsftpd



2,安装数据库生成工具

apt-get install db4.8-util



3,建立用户清单

vim /home/loguser.txt


test

test



4,生成数据库

sudo db4.8_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db

sudo chmod 600 /etc/vsftpd_login.db


5,配置验证资料

vim /etc/pam.d/vsftpd



auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login
其它全部注释




6,创建本地用户,以管理虚拟用户

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

ps.用户登录终端设为/bin/false(即使之不能登录系统)


http://www.cnblogs.com/Kevin_z/articles/VSFTP.html

设置相应目录的权限

chmod 700 /home/vsftpd




7,vsftpd.conf相应设置

vim /etc/vsftpd.conf


listen=YES
anonymous_enable=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.vu
local_enable=YES
#debian中略有不同
secure_chroot_dir=/var/run/vsftpd


8,各人明细权限


sudo mkdir /etc/vsftpd_user_conf
cd /etc/vsftpd_user_conf 
sudo touch db1 db2 db3

普通用户

local_root=/home/vsftpd/dbzh1
 

高级用户

write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/dbzh3



ps.

1.须建立相应的用户文件夹,并设置vsftpd用户权限

2.这里要注意不能有空格






9,pasv被动模式

http://cwalet.iteye.com/blog/1143382

http://blog.csdn.net/fancsxx/article/details/5933669

http://linux.chinaunix.net/techdoc/net/2009/07/17/1124855.shtml


pasv_enable=yes 

设置是否允许pasv模式
pasv_promiscuous=no

是否屏蔽对pasv进行安全检查,(当有安全隧道时可禁用)
pasv_max_port=10240

pasv使用的最大端口
pasv_min_port=1024

pasv使用的最小端口


10.删除chroot的写入权限

http://www.linuxdiyf.com/viewarticle.php?id=275431

http://my.oschina.net/chinesedragon/blog/62126



解决办法1:
去掉该用户根目录的写的权限,再新建一目录,以后用新目录
#sudo chmod a-w /home/用户名
#sudo mkdir /home/用户名/新目录名
其实很不方便,用户登陆进去会发现必须要再进一层目录才能找到自己的文件



google了下:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
发现是新版的vsftpd为增强安全性,不允许chroot的目录具有写权限。
我勒了去,难道不允许写就增强了安全性了吗,只是增加的用户的麻烦度而已。


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

在此基础上改为mysql数据库设置用户登录

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


1,安装数据库

apt-get install myql-server libpam-mysql 



2,创建表,及数据库管理权限

mysql> 
create database ftpvuser;
use ftpvuser;

create table users(username varchar(20) not null,
password varchar(40) not null,
primary key(username))
type=myisam;
 
 

mysql> 

grant select on ftpvuser.users to
ftpguest@localhost
identified by '123456';

 

mysql> flush privileges;

mysql> 

insert into users(username,password)
values('test','test');

mysql> quit




3,设置验证插件

vim /etc/pam.d/vsftpd
将以前的内容注释掉,然后添加下面2行内容

auth required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0
account required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0


ps.此项只是将验证插件改为更为灵活的mysql,其余权限设定,均与上相同








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



















以下为旧资料



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


1,安装vsftpd

http://linux.vbird.org/linux_server/0410vsftpd.php#theory_pasv

 

apt-get install vsftpd

 

 

2,设置conf


[root@www ~]# vim /etc/vsftpd/vsftpd.conf
# 1. 與匿名者相關的資訊,在這個案例中將匿名登入取消:
anonymous_enable=NO

# 2. 與實體用戶相關的資訊:可寫入,且 umask 為 002 喔!
local_enable=YES
write_enable=YES
local_umask=002
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list  <==這個檔案必須存在!還好,預設有此檔案!

 

 

信息
[root@www ~]# vim /etc/vsftpd/welcome.txt
歡迎光臨本小站,本站提供 FTP 的相關服務!
主要的服務是針對本機實體用戶提供的,
若有任何問題,請與鳥哥聯絡!

 

 

禁止访问用户
[root@www ~]# vim /etc/vsftpd/user_list
root
bin
....(底下省略)....

 

/etc/vsftpd/ftpusers
這兩個檔案的內容是一樣的哩~

/etc/init.d/vsftpd restart

 

 

 

 

 

 

限制目录 

# 1. 修改 vsftpd.conf 的參數值:
[root@www ~]# vim /etc/vsftpd/vsftpd.conf
# 增加是否設定針對某些使用者來 chroot 的相關設定呦!
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

# 2. 建立不被 chroot 的使用者帳號列表,即使沒有任何帳號,此檔案也是要存在!
[root@www ~]# vim /etc/vsftpd/chroot_list
vbird
dmtsai

[root@www ~]# /etc/init.d/vsftpd restart

 

 

 

 

 

 

3,将user_list修改为可访问用户
[root@www ~]# vim /etc/vsftpd/vsftpd.conf
# 這幾個參數必須要修改成這樣:
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

[root@www ~]# /etc/init.d/vsftpd restart
則此時『寫入 /etc/vsftpd/user_list 變成可以使用 FTP 的帳號』了!

 

 

4,由于是NAT内,将PASV改为PORT模式


http://hi.baidu.com/blassyiu/blog/item/3a33e96ca36ca0f2421694e4.html

  port_enable=YES|NO
  如果你要在数据连接时取消PORT模式时,设此选项为NO。默认值为YES。

 

 

5,添加普通用户
http://linux.vbird.org/linux_basic/0410accountmanager.php#users_adduser_env
useradd abc
passwd abc


mkdir /home/abc
chown abc abc

 

 

 

 

 

 

 

 

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

以下为使用MYSQL作虚拟用户的VSFTPD

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

 
 
 
 
 
 
 
 //------------------------------------------------------------------------------
 
 20110726
add for debian 6
 
1,
apt-get install vsftpd
apt-get install mysql-server
apt-get install libpam-mysql 
2,
mkdir /home/ftp
3,
useradd ftpguest -d /home/ftp
chown ftpguest.nogroup /home/ftp
4, 
mysql> create table users(username varchar(20) not null,
    -> password varchar(40) not null,
    -> primary key(username))
    -> type=myisam;
 
 

mysql> grant select on ftpvuser.users to
    -> ftpguest@localhost
    -> identified by '123456';

 

mysql> flush privileges;

mysql> insert into users(username,password)
    -> values('test','test');

mysql> quit

5,

vim /etc/pam.d/vsftpd
将以前的内容注释掉,然后添加下面2行内容

auth required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0
account required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0

6,

vim vsftpd.conf
#关闭匿名用户访问
#anonymous_enable=YES
#开启本地用户访问
local_enable=YES
#开启虚拟用户访问
guest_enable=YES
guest_username=ftpguest
#将本地用户限制在自己的家目录,这样可避免FTP用户访问到其他的系统目录
chroot_local_user=YES

7,

#mkdir /etc/vsftpd/vsftpd_user_conf
#nano /etc/vsftpd/vsftpd_user_conf/test


anon_world_readable_only=NO
#允许写入,上传以及建立目录
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

 

 8,

$ lftp localhost -u tony,tonypass lftp

 

 
 
 
 //------------------------------------------------------------------------------
 
 
 
 
 
apt-get install vsftpd
apt-get install mysql-server
apt-get install libpam-mysql 
 
 
 
 
 
 
1),创建本地用户的家目录,此目录也是FTP的家目录
代码:
    
    
#mkdir /home/ftp

2),创建名为ftpguest的本地用户
代码:
    
    
#useradd ftpguest -d /home/ftp

3),修改FTP家目录的所有者和组
代码:
    
    
#chown ftpguest.nogroup /home/ftp


 
 
 
 
 
 

4,配置MySQL数据库

1),创建用于存储虚拟用户信息的数据库ftpvuser


代码:
    
    
#mysqladmin -u root -p create ftpvuser


2),连接数据库
代码:
    
    
#mysql -u root -p

3)创建用于存储虚拟用户信息的表users
代码:
    
    
mysql>use ftpvuser; mysql>CREATE TABLE users (username varchar(20) NOT NULL, password varchar(40) NOT NULL, PRIMARY KEY (username)) TYPE=MyISAM;

4)让本地用户ftpguest能读取ftpvuser数据库的users表的内容
注:YourPassword用于设定ftpguest访问数据库的密码.
代码:
    
    
mysql>grant select on ftpvuser.users to ftpguest@localhost identified by 'YourPassword'; mysql>flush privileges;

5),建立虚拟用户
代码:
    
    
mysql>insert into users (username,password) values ('normal','555555'); mysql>insert into users (username,password) values ('admin','666666'); mysql>insert into users (username,password) values ('webmaster','777777');


6),完成MySQL的配置
代码:
    
    
mysql>quit;
 
 
 
 
 
 
 
 
 
 
 
 
5,配置vsftpd的PAM验证

1),打开PAM配置文件
代码:
    
    
#nano /etc/pam.d/vsftpd


2),将以前的内容注释掉,然后添加下面2行内容
注:YourPassword就是刚才在前面设定的ftpguest访问数据库的密码.
代码:
    
    
auth required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0 account required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0

 
 
 
 
 
 
 
6,配置vsftpd

1),打开vsftpd的配置文件
代码:
    
    
#nano /etc/vsftpd.conf
注意:一旦修改了/etc/vsftpd.conf文件的内容,必须重启vsftpd才能使新的设置生效,方法是:
代码:
    
    
#/etc/init.d/vsftpd stop #/etc/init.d/vsftpd start
直接#/etc/init.d/vsftpd restart,好像不起作用?

2),修改vsftpd.conf文件如下
代码:
    
    
#关闭匿名用户访问 #anonymous_enable=YES #开启本地用户访问 local_enable=YES #开启虚拟用户访问 guest_enable=YES guest_username=ftpguest #将本地用户限制在自己的家目录,这样可避免FTP用户访问到其他的系统目录 chroot_local_user=YES


3),500 OOPS: cap_set_proc
    赶快登录FTP试一下吧,不过为什么无法登录呢?服务器返回错误:500 OOPS: cap_set_proc
Google之,这个错误似乎与SELinux有关,解决办法是加载capability模块:
代码:
    
    
#modprobe capability

为了让Linux在启动时自动加载此模块,把这个模块放到/etc/modules中即可.

 

 

 

 

 

a,激活单个用户配置功能,增加以下配置行到vsftpd的配置文件:

代码:
    
    
#nano /etc/vsftpd.conf #指定不同用户配置文件的存放路径 user_config_dir=/etc/vsftpd/vsftpd_user_conf
编辑/etc/vsftpd/vsftpd_user_conf/normal
注意:用户的配置文件名与用户名一致,不过匿名用户的配置文件名为ftp,而不是anonymous
代码:
    
    
#mkdir /etc/vsftpd/vsftpd_user_conf #nano /etc/vsftpd/vsftpd_user_conf/normal
加入以下内容:
#允许 下载
代码:
    
    
anon_world_readable_only=NO #允许写入,上传以及建立目录 write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES


 

管理员除了拥有普通用户的权限以外,还拥有删除/重命名/改变文件属性的权限
加入以下内容:

代码:
    
    
#允许重命名和删除文件 anon_other_write_enable=YES #虚拟用户拥有与本地用户相同的权限(由于chmod仅仅对本地用户有效,所以如果想要虚拟用户拥有chmod的权限,这一项必须激活) virtual_use_local_privs=YES #允许修改文件属性 chmod_enable=YES

 

 

 

 

d,网站管理员

加入以下内容:

代码:
    
    
#将FTP家目录指向网站的家目录(我的www目录使用Apache默认的目录) local_root=/var/www #默认情况下,上传到FTP站点的文件的拥有者都是ftpguest,其他用户是没有访问权限的 #所以,当访问网站的时候,会出现"没有权限访问该文件的错误",这是由于Apache的用户 #www-data无法访问/var/www下的文件造成的,把umask设置成033甚至000即可解决这个问题. local_umask=033


 

 

 

 

# vi /etc/vsftpd/vsftpd.conf
设置vsftpd为standalone工作模式
listen=YES
tcp_wrappers=YES

启用本地用户:
local_enable=YES

禁用匿名用户:
anonymous_enable=NO
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES

 

 

更改FTP默认监听端口21:
添加
##Set the listen_port
Listen_port=5200

设置FTP的PASV模式传输端口,以配合防火墙通过PASV模式传输数据:
添加
##set the pasv ports
port_enable=NO
pasv_enable=YES
pasv_min_port=10021
pasv_max_port=10025

设置FTP服务器最大的并发连接数,默认值为0,表示不限最大连接数。
添加
max_clients=1000

设置每个IP地址最大的并发连接数目,默认值为0,表示不限制。
添加
max_per_ip=10

 

 

 
 
 
 
 
 
 
 

7.为VSFTPD配置虚拟用户(文本方式)

7.1创建虚拟与用户数据库

1. 创建loguser.txt,格式如下:

                userid
                pass
        

比如我创建两个用户:tony 密码为tonypass,etony密码为etonypass 则loguser.txt的内容如下:

                tony
                tonypass
                etony
                etonypass
        

2. 安装数据库生成工具:

                # aptitude install  libdb3-util
        

3. 生成数据库:

                # db_load -T -t hash -f loguser.txt /etc/vsftpd_login.db
        

4. 设置数据库文件的访问权限:

                # chmod 600 /etc/vsftpd_login.db
        

7.2配置PAM文件

修改/etc/pam.d/vsftpd 内容如下:

        auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
        account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

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

        useradd -d /home/ftpsite virtual
        mkdir /home/ftpsite
        chown virtual.virtual /home/ftpsite
        ls -ld /home/ftpsite
        drwxr-sr-x 2 virtual virtual 48 2006-08-18 05:48 /home/ftpsite

在目录下创建一些内容

        echo "etony's vsftpd server" > /home/ftpsite/msg

        chown virtual.virtual /home/ftpsite/msg

7.4创建/etc/vsftpd.conf

根据需要创建/etc/vsftpd.conf,但要确保含有一下设置:

        anonymous_enable=NO
        local_enable=YES
        write_enable=NO
        anon_upload_enable=NO
        anon_mkdir_write_enable=NO
        anon_other_write_enable=NO
        chroot_local_user=YES
        guest_enable=YES
        guest_username=virtual
        listen=YES
        listen_port=21
        pasv_min_port=30000
        pasv_max_port=30999

7.5启动vsftpd

        /etc/init.d/vsftpd start|restart

7.6测试

        $ lftp localhost -u tony,tonypass
        lftp tony@localhost:~> ls
        -rw-r--r--    1 1001     1001           22 Aug 17 21:49 msg
        lftp tony@localhost:/> exit
        $ lftp localhost -u tony,tonyp
        lftp tony@localhost:~> ls
        ls: Login failed: 530 Login incorrect.

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

使用虚拟用户登录(pam)

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

 http://wiki.ubuntu.org.cn/Vsftpd%E8%99%9A%E6%8B%9F%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE


1,安装vsftpd

apt-get instasll vsftpd



2,安装数据库生成工具

apt-get install 4.8-util



3,建立用户清单

vim /home/loguser.txt



4,生成数据库

sudo db4.8_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db

sudo chmod 600 /etc/vsftpd_login.db


5,配置验证资料

vim /etc/pam.d/vsftpd



auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login
其它全部注释




6,创建本地用户,以管理虚拟用户

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

ps.用户登录终端设为/bin/false(即使之不能登录系统)


http://www.cnblogs.com/Kevin_z/articles/VSFTP.html

设置相应目录的权限

chmod 700 /home/vsftpd




7,vsftpd.conf相应设置

vim /etc/vsftpd.conf


listen=YES
anonymous_enable=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.vu 
local_enable=YES 
#debian中略有不同
secure_chroot_dir=/var/run/vsftpd


8,各人明细权限


sudo mkdir /etc/vsftpd_user_conf
cd /etc/vsftpd_user_conf 
sudo touch db1 db2 db3

普通用户

local_root=/home/vsftpd/dbzh1


高级用户

write_enable=YES
anon_world_readable_only=NO 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES 
anon_other_write_enable=YES 
local_root=/home/vsftpd/dbzh3



ps.

1.须建立相应的用户文件夹,并设置vsftpd用户权限

2.这里要注意不能有空格






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值