Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2521409
  • 博文数量: 867
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 9800
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 14:44
文章分类

全部博文(867)

文章存档

2007年(6)

2006年(861)

我的朋友

分类: LINUX

2006-09-07 20:36:57


 
debian系统

S1: 安装vsftp
引用:

#apt-get install vsftpd
安装完毕后会产生一个ftp用户(匿名登录),目录在/home/ftp ,配置文件/etc/vsftpd.conf

S2: 简单配置
如果只是做一些简单的工作,或者对权限不是很严格的话,匿名登录就OK了 .
修改/etc/vsftpd.conf:
引用:

debian:/etc# cat /etc/vsftpd.conf|grep -v "#"
listen=YES

anonymous_enable=YES #允许匿名用户登录


local_enable=YES #Vsftpd所在系统的用户可以登录系统

write_enable=YES # 允许修改 , 全局


anon_upload_enable=YES #匿名上传



anon_mkdir_write_enable=YES #匿名新建和写


dirmessage_enable=YES #起用提示功能,欢迎词等
xferlog_enable=YES #打开日志文件
connect_from_port_20=YES #控制用port模式传输数据使用2端口
xferlog_file=/var/log/vsftpd.log #日志文件路径
ftpd_banner=Welcome to FTP service. #登录欢迎词
secure_chroot_dir=/var/run/vsftpd #这选项指向一个空目录,并且ftp用户对此目录无写权限
pam_service_name=vsftpd #指明VSFTPD使用用PAM验证服务时的PAM配置文件名
rsa_cert_file=/etc/ssl/certs/vsftpd.pem #不知道 .^-


guest_enable=YES #启动这项功能,所有的非匿名登入者都视为guest
guest_username=iguest 定义VSFTPD的guest用户在系统中的用户名


[separator]
以上是我电脑上的vsftpd.conf文件内容(过滤了以#开头的注释行),当然,这个只是简单的一些设置,更为复杂的设置请参考vsftpd.conf文档,比如设置速度,端口,等等 !
设置了以上一些东东之后,匿名登录就可以登录系统了.. 呵呵! 但是要注意下文件夹的权限属性,
默认的/home/ftp权限:
引用:

msn@debian:/home$ ls -ld /home/ftp/
drwxr-xr-x 5 root root 1024 2006-07-26 17:22 /home/ftp/

在/home/ftp下面新建立一个文件夹,权限为777, 那匿名用户就可以上传,新建文件de .而ftp根目录只有读的权限
引用:

debian:/etc/#mkdir /home/ftp/pub
debian:/etc/#chmod 777 /home/ftp/pub
debian:/etc/#ls -ld /home/ftp/pub/
drwxrwxrwx 4 msn nogroup 1024 2006-08-02 17:50 /home/ftp/pub/



############## 以下为设置mysql验证的虚拟用户配置 #######################



S3:安装mysql以及一个mysql通过PAM验证的包
安装mysql这里我就跳过了,有兴趣的可以找找安装mysql的文档,
因为vsftpd是通过PAM验证,所以我们还需要一个mysql通过PAM验证的包,在Debian下它叫做libpam-mysql
引用:

debian:/etc/#apt-get install libpam-mysql

S4:新建用户iguest
vsftpd使用PAM方式来验证虚拟用户,因为虚拟用户的信息保存在数据库中,所以我们还需要一个能够读取数据库内容的本地用户, 而且还需要设置它的本地目录.
引用:

debian:/etc/#mkdir /var/ftp
debian:/etc/#useradd -d /var/ftp -s /bin/false iguest #增加iguest用户,主目录为/var/ftp,设置/bin/false不允许登录系统
debian:/etc/#chown iguest.nogroup /var/ftp #改变/var/ftp文件夹


S5:创建数据库
引用:

debian:/etc/#mysql -uroot -p
mysql>create database ftpd;
mysql>use ftpd;
mysql> create table user (
-> id int AUTO_INCREMENT NOT NULL,
-> name char(20) binary NOT NULL,
-> passwd char(50) binary NOT NULL,
-> primary key(id)
-> );

mysql> describe user;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| id | int(10) | | PRI | NULL | auto_increment |
| name | char(20) | | | | |
| passwd | char(50) | | | | |
+--------+----------+------+-----+---------+----------------+
#增加用户
mysql>insert into user (name,passwd) values ('adsl','123456');
让iguest能访问ftpd和表user:
mysql>grant select on ftpd.user to iguest@localhost identified by '123456';
mysql>quit

以上是在mysql里面创建一个ftpd库和user表,用来存储vsftpd登录用户和密码的.最后一个命令是让新建的iguest用户能访问ftpd和user表,用下面命令看看是否OK
引用:

debian:/etc/# mysql -uiguest -p123456 ftpd


S5:打开vsftpd的PAM验证
将以前的内容全部注释掉,然后加入以下内容:
#vi /etc/pam.d/vsftpd
引用:

auth required pam_mysql.so user=iguest passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0

account required pam_mysql.so user=iguest passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0

上面的内容比较好理解,就最后的crypt说明下,crypt=0,口令以明文方式(不加密)保存在数据库中;crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。
我们前面用的是 mysql>insert into user (name,passwd) values ('adsl','123456'); 这是明文的所以crypt=0,如果使用了values ('test',password('123456'));那么就要crypt=2

S6:重启,完成
引用:

#/etc/init.d/vsftpd restart
msn@debian:/home$ lftp adsl@localhost
口令:
lftp adsl@localhost:~> ls
-rw-r--r-- 1 0 0 0 Aug 03 02:12 test.txt


饭饭 06-08-03 12:12

vsftpd.conf 详细的说明在这里
阅读(1095) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~