最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

linux下的java开发环境搭建与调试

来源:动视网 责编:小OO 时间:2025-09-30 14:23:23
文档

linux下的java开发环境搭建与调试

1.先从网上下载jdk(jdk-1_5_0_02-linux-i586.rpm),推荐SUN的官方网站www.sun.com,下载后放在/home目录中,当然其它地方也行;进入安装目录:#cd/home#cpjdk-1_5_0_02-linux-i586.rpm/usr/local#cd/usr/local给所有用户添加可执行的权限#chmod+xjdk-1_5_0_02-linux-i586.rpm.bin#./jdk-1_5_0_02-linux-i586.rpm.bin此时会生成文件jd
推荐度:
导读1.先从网上下载jdk(jdk-1_5_0_02-linux-i586.rpm),推荐SUN的官方网站www.sun.com,下载后放在/home目录中,当然其它地方也行;进入安装目录:#cd/home#cpjdk-1_5_0_02-linux-i586.rpm/usr/local#cd/usr/local给所有用户添加可执行的权限#chmod+xjdk-1_5_0_02-linux-i586.rpm.bin#./jdk-1_5_0_02-linux-i586.rpm.bin此时会生成文件jd
1. 先从网上下载jdk(jdk-1_5_0_02-linux-i586.rpm) ,推荐SUN的官方网站www.sun.com,下载后放在/home目录中,当然其它地方也行;

进入安装目录:

#cd /home #cp jdk-1_5_0_02-linux-i586.rpm /usr/local

#cd /usr/local

给所有用户添加可执行的权限

#chmod +x jdk-1_5_0_02-linux-i586.rpm.bin

#./jdk-1_5_0_02-linux-i586.rpm.bin

此时会生成文件jdk-1_5_0_02-linux-i586.rpm,同样给所有用户添加可执行的权限

#chmod +x jdk-1_5_0_02-linux-i586.rpm安装程序

#rpm -ivh jdk-1_5_0_02-linux-i586.rpm

出现安装协议等,按接受即可。

2.设置环境变量;

#vi /etc/profile在最后面加入 #set java environmentJAVA_HOME=/usr/java/jdk- 1_5_0_02CLASSPATH=.:$JAVA_HOME/lib.tools.jarPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOME CLASSPATH PATH

保存退出。

要使JDK在所有的用户中使用,可以这样:

vi /etc/profile.d/java.sh在新的java.sh中输入以下内容: #set java environmentJAVA_HOME=/usr/java/jdk- 1_5_0_02CLASSPATH=.:$JAVA_HOME/lib.tools.jarPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOME CLASSPATH PATH

保存退出,然后给java.sh分配权限:chmod 755 /etc/profile.d/java.sh

3.在终端使用echo命令检查环境变量设置情况。

#echo $JAVA_HOME#echo $CLASSPATH#echo $PATH

4.检查JDK是否安装成功。

#java -version

如果看到JVM版本及相关信息,即安装成功

oracle9i for linux安装

1.Oracle9i安装

安装在redhat advanced server 3.0上

1、安装完成RAS3.0之后,检查下列软件包是否有安装:

compat-gcc-7.3-2.96.122

compat-libstdc++-devel-7.3-2.96.122

compat-gcc-c++-7.3-2.96.122

compat-libstdc++-7.3-2.96.122

compat-glibc-7.x-2.2.4.32.5

compat-db-4.0.14-5

openmotif-2.2.2-16

setarch-1.3-1

可用命令:

rpm -qa | grep xxx

进行查询

如果上述软件包不存在则通过下列命令安装:

命令:

rpm -ivh xxx.rpm

对于compat系列包,都在CD3上,对于openmotif包,则在CD2上。

2、添加oracle安装用户组及用户帐号

groupadd dba

groupadd oinstall

useradd -g oinstall -G dba oracle

passwd oracle

3、创建oracle9iR2安装目录

mkdir /oracle

mkdir /oracle/product

mkdir /oracle/product/9.2.0

4、将安装目录授权给oracle用户及组

chown -R oracle.oinstall /oracle

chown -R oracle.oinstall /oracle/*

5、应该修改操作系统核心参数.

执行如下命令:

echo "kernel.sem=\\"250 32000 100 128\\"" >> /etc/sysctl.conf

echo "kernel.shmmax=21474838" >> /etc/sysctl.conf

上述命令设定操作系统的共享内存最大数量,以512M物理内存为准,请根据相应物理内存做设定。

6、设定oracle安装用户环境参数,以oracle用户登录,修改环境配置文件:

vi $HOME/.bash_profi

le

添加下面内容:

#setting oracle environment

export LD_ASSUME_KERNEL=2.4.1

export ORACLE_BASE=/oracle

export ORACLE_HOME=$ORACLE_BASE/product/9.2.0

export ORACLE_SID=digitell

export ORACLE_TERM=xterm

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

export LD_LIBRARY_PATH

# Set shell search paths

export PATH=$PATH:$ORACLE_HOME/bin

注意上述的“digitell”单词,它指的是我们默认创建的数据库实例名称是“digitell”,你可根据自己的要求进行改变。

7、更换默认gcc编译器版本:

因为默认的gcc编译器版本都是3.2的,而oracle安装使用的是2.96的,所以必须更换。

执行命令进行更换:

mv /usr/bin/gcc /usr/bin/gcc323

ln -s /usr/bin/gcc296 /usr/bin/gcc

mv /usr/bin/g++ /usr/bin/g++323

ln -s /usr/bin/g++296 /usr/bin/g++

8、安装补丁丁3006854:

unzip p3006854_9204_LINUX.zip

进入解压出来的目录

cd 3006854

sh rhel3_pre_install.sh

等待出来“Patch successfully applied”则表示成功;最后重新启动系统。

9、设定允许RAS3服务器连接到X-win32上,切换到root用户,执行:

#export DISPLAY=IP:0.0

#xhost IP

切换到oracle用户,使用xclock程序,看是否在pc上显示RAS3上的xwindow程序窗口。

提示:从下面开始,所有工作默认都是以当前登录的oracle用户为准,除非特别说明之外。

10、设定操作系统默认语言是英语:

unset LANG

11、将oracle安装文件解压出来:

gunzip ship_9204_linux_disk1.cpio.gz

cpio -idmv < ship_9204_linux_disk1.cpio

gunzip ship_9204_linux_disk2.cpio.gz

cpio -idmv < ship_9204_linux_disk2.cpio

gunzip ship_9204_linux_disk3.cpio.gz

cpio -idmv < ship_9204_linux_disk3.cpio

12、运行oracle安装程序:

cd Disk1

./runInstaller

13、跟着安装向导走就可以了

14、在安装过程中间,出现有关权限组设置时,都填写预先创建好的dba组

15、在语言选择上“Product Languages”千万要记得添加上“Simplified Chinese”(简体中文)

16、在安装产品上选择“Oracle 9i Database 9.2.0.1.0”,在安装类型上选择“Custom”,并只选择下列组件:

Oracle9i 9.2.0.1.0

Oracle Net Services 9.2.0.1.0

Oracle9i Development Kit 9.2.0.1.0

17、在安装过程中间,出现"Create Database"就选择NO",我们会在最后通过dbca创建数据库的。

18、在安装将完成之前,安装程序将会运行配置程序,在运行"Intelligent Agent Configure"的时候,将会出现失败的情况,这时候请继续下一步先。

19、安装补丁OPatch.tar得到opatch工具

tar -xvf OPatch.tar

export PATH=$PATH:/mnt/temp/OPatch:/sbin

20、安装补丁p3238244_9204_LINUX.zip

unzip p3238244_9204_LINUX.zip

cd 3238244

dbshut

opatch apply

当出现是否准备好Updating时,选择“Y”

21、修改dbca脚本:

vi $ORACLE_HOME/bin/dbca

从第118行开始,将第118、119、121、122、123、124共6行都用"#"符号注释掉,结果如下:

#if [ -f /etc/rac_on ]; then

#Run DBCA

$JRE_DIR/bin/jre –native –DORACLE_HOME=$OH……

#else

#Run DBCA

#$JRE_DIR/bin/jre –DORACLE_HOME=$OH……

#fi

22、 修改完成之后再运行dbca重建数据库。

运行下面命令创建一个数据库实例

dbca

23、创建完成后,配置数据库的配置init文件

cp $ORACLE_HOME/admin/digitell/pfile/initdigitell.ora.* $ORACLE_HOME/dbs/initdigitell.ora

2.设置自动启动

1、 修改Oracle系统配置文件/etc/oratab/etc/oratab 格式为: SID:ORACLE_HOME:AUTO

把AUTO域设置为Y(大写),只有这样,oracle自带的dbstart和dbshut才能够发挥作用。我的为:ora9i:/home/oracle/ora/products/9.2.0:Y

2、 编写服务脚本:

如下

#!/bin/bash

#

#################FUNCTION#############

#

# AutoStart Oracle and listener

# AutoStop Oracle and listener

#

#####################################

#

# Created by ZhouYS 2003-11-26

#

case "$1" in

start)

echo "Starting Oracle Databases ... "

echo

"-------------------------------------------------" >>

/var/log/oracle

date +" %T %a %D : Starting Oracle Databasee as part

of system up." >> /var/log/oracle

echo

"-------------------------------------------------" >>

/var/log/oracle

su - oracle -c "dbstart" >> /var/log/oracle

echo "Done."

echo "Starting Oracle Listeners ... "

echo

"-------------------------------------------------" >>

/var/log/oracle

date +" %T %a %D : Starting Oracle Listeners as part

of system up." >> /var/log/oracle

echo

"-------------------------------------------------" >>

/var/log/oracle

su - oracle -c "lsnrctl start" >> /var/log/oracle

echo "Done."

echo ""

echo

"-------------------------------------------------" >>

/var/log/oracle

date +" %T %a %D : Finished." >> /var/log/oracle

echo

"-------------------------------------------------" >>

/var/log/oracle

touch /var/lock/subsys/oracle

;;

stop)

echo "Stoping Oracle Listeners ... "

echo

"-------------------------------------------------" >>

/var/log/oracle

date +" %T %a %D : Stoping Oracle Listener as part of

system down." >> /var/log/oracle

echo

"-------------------------------------------------" >>

/var/log/oracle

su - oracle -c "lsnrctl stop" >> /var/log/oracle

echo "Done."

rm -f /var/lo

ck/subsys/oracle

echo "Stoping Oracle Databases ... "

echo

"-------------------------------------------------" >>

/var/log/oracle

date +" %T %a %D : Stoping Oracle Databases as part of

system down." >> /var/log/oracle

echo

"-------------------------------------------------" >>

/var/log/oracle

su - oracle -c "dbshut" >>/var/log/oracle

echo "Done."

echo ""

echo

"-------------------------------------------------" >>

/var/log/oracle

date +" %T %a %D : Finished." >> /var/log/oracle

echo

"-------------------------------------------------" >>

/var/log/oracle

;;

restart)

$0 stop

$0 start

;;

*)

echo "Usage: oracle {start|stop|restart}"

exit 1

esac

将脚本命名为oracle,保存在/etc/rc.d/init.d下

改变文件属性:chmod 755 oracle

3、建立服务连接:

系统启动时启动数据库,我们需要以下连结∶

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

$ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle

$ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle

$ ln -s ../init.d/oracle /etc/rc.d/rc5.d/S99oracle

#rc4.d unused

4.要在重新启动时停止数据库,我们需要以下连结∶

$ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle #

停止

$ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle #

重新启动

发表于 @ 2006年01月21日 09:34:00|评论(1)|编辑

新一篇: Linux 下Oralce10g的安装 | 旧一篇: Linux 下Mysql的安装评论

#Derekμ 发表于2006-04-14 15:54:00 IP: 61.142.250.*

TrackBack来自《oracle10glinuxμ》:

? oracle10g linuxas4

Linux Oralce10g

-->

的注释去掉,即去掉

激活Invoker Servlet

即把tomcat/conf/web.xml中的下列字段的注释去掉

invoker

/servlet/*

 

设置Port

Tomcat缺省的Port number是8080.由于Tomcat是一个的(Standalone) Web Server,它可以不用Apache而工作,所以你可以不安装Apache,这样你可以把Tomcat设置在Port 80.这样你就可以在URL中省略:8080. 打开文件tomcat/conf/server.xml,找到如下的字段:

port="8080" ...

... />

然后把8080改成80即可.

 

创建temp子目录

在/opt/tomcat/目录下建立一个temp子目录

mkdir temp

4.启动Tomcat

安装完后,重新启动计算机,以使JAVA_HOME和TOMCAT_HOME的设置生效.然后到

/opt/tomcat/bin

下,运行命令:

./startup.sh

正常情况下可以见到如下的信息:

Using CATALINA_BASE: /opt/tomcat

Using CATALINA_HOME: /opt/tomcat

Using CATALINA_TEMDIR: /opt/tomcat/temp

Using JAVA_HOME: /opt/jdk1.4

然后用浏览器打开如下的网页

http://localhost/

或者

http://localhost:8080/ (如果没有把Port number改为80)

如果你见到Tomcat的网页(index.jsp),证明Tomcat安装成功,并已经启动.

如要关闭Tomcat,在/opt/tomcat/bin下运行下面的命令即可

./shutdown.sh

5. 注册你自己的项目(Project)

假设你有一个自己的JSP项目,他应该安装在下面的目录下:

/opt/tomcat/webapps/myproject

你必须在tomcat/conf/server.xml中加入一行

在浏览器中对应的地址为:

http://localhost/myproject

1.建立和运行shell程序

什么是shell程序呢? 简单的说shell程序就是一个包含若干行

shell或者linux命令的文件.

象编写高级

语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.

在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整

的程序文件.

执行shell程序文件有三种方法

(1)#chmod +x file(在/etc/profile中,加入export PATH=${PATH}:~/yourpath,就可以在命令行下直接运行,像执行普通命令一样)

(2)#sh file

(3)# . file

(4)#source file

在编写shell时,第一行一定要指明系统需要那种shell解释你的shell程序,如:#! /bin/bash,

#! /bin/csh,/bin/tcsh,还是#! /bin/pdksh .

2.shell中的变量

(1)常用系统变量

$ # :保存程序命令行参数的数目

$ ? :保存前一个命令的返回码

$ 0 :保存程序名

$ * :以("$1 $2...")的形式保存所有输入的命令行参数

$ @ :以("$1""$2"...)的形式保存所有输入的命令行参数

(2)定义变量

shell语言是非类型的解释型语言,不象用C++/JAVA语言编程时需要事先声明变量.给一

个变量赋值,实际上就是定义了变量.

在linux支持的所有shell中,都可以用赋值符号(=)为变量赋值.

如:

abc=9 (bash/pdksh不能在等号两侧留下空格 )

set abc = 9 (tcsh/csh)

由于shell程序的变量是无类型的,所以用户可以使用同一个变量时而存放字符时而存放

整数.

如:

name=abc (bash/pdksh)

set name = abc (tcsh)

在变量赋值之后,只需在变量前面加一个$去引用.

如:

echo $abc

(3)位置变量

当运行一个支持多个命令行参数的shell程序时,这些变量的值将分别存放在位置变量里.

其中第一个参数存放在位置变量1,第二个参数存放在位置变量2,依次类推...,shell保留

这些变量,不允许用户以令外的方式定义他们.同别的变量,用$符号引用他们.

3.shell中引号的使用方法

shell使用引号(单引号/双引号)和反斜线("\\")用于向shell解释器屏蔽一些特殊字符.

反引号(")对shell则有特殊意义.

如:

abc="how are you" (bash/pdksh)

set abc = "how are you" (tcsh)

这个命令行把三个单词组成的字符串how are you作为一个整体赋值给变量abc.

abc1='@LOGNAME,how are you!' (bash/pdksh)

set abc1='$LOGNAME,how are you!' (tcsh)

abc2="$LOGNAME,how are you!" (bash/pdksh)

set abc2="$LOGNAME,how are you!" (tcsh)

LOGNAME变量是保存当前用户名的shell变量,假设他的当前值是:wang.执行完两条命令后,

abc1的内容是:$LOGNAME, how are you!.而abc2的内容是;wang, how are you!.

象单引号一样,反斜线也能屏蔽所有特殊字符.但是他一次只能屏蔽一个字符.而不能屏蔽

一组字符.

反引号的功能不同于以上的三种符号.他不具有屏蔽特殊字符的功能.但是可以通过他将

一个命令的运行结果传递给另外一个命令.

如:

contents=`ls` (bash/pdksh)

set contents = `ls` (tcsh)

4.shell

ll程序中的test命令

在bash/pdksh中,命令test用于计算一个条件表达式的值.他们经常在条件语句和循环

语句中被用来判断某些条件是否满足.

test命令的语法格式:

test expression

或者

[expression]

在test命令中,可以使用很多shell的内部操作符.这些操作符介绍如下:

(1)字符串操作符 用于计算字符串表达式

test命令 | 含义

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

Str1 = str2 | 当str1与str2相同时,返回True

Str1! = str2| 当str1与str2不同时,返回True

Str | 当str不是空字符时,返回True

-n str | 当str的长度大于0时,返回True

-z str | 当str的长度是0时,返回True

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

(2)整数操作符具有和字符操作符类似的功能.只是他们的操作是针对整数

test表达式 | 含义

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

Int1 -eq int2|当int1等于int2时,返回True

Int1 -ge int2|当int1大于/等于int2时,返回True

Int1 -le int2|当int1小于/等于int2时,返回True

Int1 -gt int2|当int1大于int2时,返回True

Int1 -ne int2|当int1不等于int2时,返回True

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

(3)用于文件操作的操作符,他们能检查:文件是否存在,文件类型等

test表达式 | 含义

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

-d file |当file是一个目录时,返回 True

-f file |当file是一个普通文件时,返回 True

-r file |当file是一个刻读文件时,返回 True

-s file |当file文件长度大于0时,返回 True

-w file |当file是一个可写文件时,返回 True

-x file |当file是一个可执行文件时,返回 True

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

(4)shell的逻辑操作符用于修饰/连接包含整数,字符串,文件操作符的表达式

test表达式 | 含义

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

! expr |当expr的值是False时,返回True

Expr1 -a expr2|当expr1,expr2值同为True时,返回True

Expr1 -o expr2|当expr1,expr2的值至少有一个为True时,返回True

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

注意:

tcsh shell 不使用test命令,但是tcsh中的表达式同样能承担相同的功能.tcsh

支持的表达式于C中的表达式相同.通常使用在if和while命令中.

tcsh表达式 | 含义

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

Int1 <= int2 |当int1小于/等于int2时,返回True

Int1 >= int2 |当int1大于/等于int2时,返回True

Int1 < int2 |当int1小于int2时,返回True

Int1 > int2 |当int1大于int2时,返回True

Str1 == str2 |当str1与str2相同时,返回True

Str1 != str2 |当str1与str2不同时,返回True

-r file |当file是一个可读文件时,返回True

-w file |当file是一个可写文件时

,返回True

-x file |当file是一个可执行文件时,返回True

-e file |当file存在时,返回True

-o file |当file文件的所有者是当前用户时,返回True

-z file |当file长度为0时,返回True

-f file |当file是一个普通文件时,返回True

-d file |当file是一个目录时,返回True

Exp1 || exp2 |当exp1和exp2的值至少一个为True时,返回True

Exp1 && exp2 |当exp1和exp2的值同为True时,返回True

! exp |当exp的值为False时,返回True

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

proftp详细配置一览

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

作者:dsj 2005-02-03 14:57:41 来自:Linux先生

#global也可不要,后面如设置多个虚拟站点清晰

IdentLookups off #连接快些 还有后面的 UseReverseDNS

RequireValidShell off #匿名的一般需要加上这个

MaxLoginAttempts 1 #匿名的话1就可以了,最大密码验证次数

WtmpLog NONE #不记log到wtmp

DenyFilter \\*.*/|.ftpaccess #DenyFilter做一些过滤,正则表达式

#DenyFilter ~!`\\**/?,$@ # 根据自己需要写吧,上面的好烂:P

#LsDefaultOptions "-l" #ls参数

#AllowForeignAddress on #要允许 FXP 写成 on

CommandBufferSize 128 #最大命令长度

DirFakeUser On FTP #不显示给用户真实的用户、组

DirFakeGroup On FTP

DeferWelcome on #显示欢迎信息

PathDenyFilter "(^\\.ftpaccess$)" #同DenyFilter 过滤用

User nobody #proftpd 以哪个用户、组的身份运行

Group nobody

TimesGMT off #时间

DenyAll

#出于某些考虑,开始禁掉,后面需要再打开。READ也可加过来...

#也可以这里设置允许连接的网段 Login,或者后面,建议用防火墙

IgnoreHidden on

HideNoAccess on

AllowOverwrite off #禁止重写覆盖,后面打开允许续传

#AllowRetrieveRestart默认是on 也可以写进来

ServerName "FTP server"

ServerType standalone #运行方式 还可以用 inetd xinetd

ServerIdent on "Welcome to FTP" #身份验证前显示给用户的,也可用文件,这里略

DefaultServer on

UseReverseDNS off #加快连接速度

Port 21 #FTP端口

Umask 022 #掩码 为了便于管理 用 002

PassivePorts 20000 30000 #被动模式端口段

SystemLog /var/proftpd/syslog #log 注意自己加上 logrotate 配置

MaxInstances 250 #最大

TimeoutLogin 30 #身份验证超时

TimeoutIdle 120 #发呆超时

TimeoutNoTransfer 300 #无数据传输超时

#TimeoutStalled 300

#log一些自定义格式,根据需要调整或者用默认

LogFormat myxfer "%h %u %t \\"%r\\" %s %b"

LogFormat default "%h %a %u %t \\"%r\\" %s %b $$ \\'%F\\'"

LogFormat auth "%h %a %t \\"%r\\" %s"

LogFormat write "%h %a %t \\"%r\\" %s %b"

#匿名的根目录 记得设置相应目录权限,ftp 用户应

至少有 r x 权限

User ftp

Group ftpadmin

Umask 002

UserAlias anonymous ftp

MaxClients 50 "客满(%m)" #人多时的提示信息,可以用一些变量

#RateReadBPS 500000 #限速用

MaxClientsPerHost 2 "连接数多" #一个IP的连接数

TransferLog NONE #log

ExtendedLog /var/proftpd/upload.log write myxfer #log

ExtendedLog /var/proftpd/download.log read myxfer #log

DisplayLogin etc/welcome #欢迎文件,可以用一些变量

DisplayFirstChdir .message #改变目录时显示的消息

AuthAliasOnly on #只允许 UserAlias 过的 这里只允许 anonymous 不允许ftp

AllowAll

#打开允许连接,可以这是允许访问的网段,建议防火墙

AllowStoreRestart on #允许上传目录,可以续传,不能覆盖

AllowAll

#如果不想让下载,只让上载 可以加上

#DenyAll

#到这差不多就完了,每个目录可以写 .ftpaccess 设置权限

#后面这两个可以参考根据需要

#在FTP根目录又不让看的,上面把欢迎信息放里面了,当然可以放别的

DenyAll

#特定IP段能看的,也可在目录的.ftpaccess里面设置

Order deny,allow

Allow from 166.111.

#到这匿名的就完了

#加帐号密码可以用多种方式,密码文件,数据库等

#如果用系统的帐号,可以用 DefaultRoot 活动目录,比如把TA堵在家里 ~

#还有别的很多 根据需要自己看文档吧 比如打开MultilineRFC2228等

#

#记得设置相应目录权限,r x 一个都不能少

#记得设置文件权限(chmod/chown) 配置 .ftpaccess

#应该了解 ls rm chmod chown find xargs crontab 等命令以便进行简单管理

#kill/killall -HUP 或者用脚本 ftpshut ftpwho

#rm -f /etc/shutmsg

#相应的辅助工具还有很多,也可以自己写脚本

这是我这个菜鸟学习LINUX所写的第一篇文章,是比较基础的FTP架设的应用,如果我写有什么问题请大家多指教,我后续会陆续出进阶篇把FTP中各种详细的配置跟大家一起进行探讨。

我所用的是LINUX AS+VSFTPD-1.2.0-4的系统架构,在这里说明的是如果对配置文件不是很熟悉,最好做个备份,以免误操作:

1. 匿名服务器的连接(的服务器)

在/etc/vsftpd/vsftpd.conf配置文件中添加如下几项:

Anonymous_enable=yes (允许匿名登陆)

Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)

Local_umask=022 (FTP上本地的文件权限,默认是077)

Connect_form_port_20=yes (启用FTP数据端口的数据连接)*

Xferlog_enable=yes (激活上传和下传的日志)

Xferlog_std_format=yes (使用标准的日志格式)

Ftpd_banner=XXXXX (欢迎信息)

Pam_service_name=vsftpd (

验证方式)*

Listen=yes (的VSFTPD服务器)*

功能:只能连接FTP服务器,不能上传和下传

注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项

2. 开启匿名FTP服务器上传权限

在配置文件中添加以下的信息即可:

Anon_upload_enable=yes (开放上传权限)

Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)

Write_enable=yes (开放本地用户写的权限)

Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

3. 开启匿名服务器下传的权限

在配置文件中添加如下信息即可:

Anon_world_readable_only=no

注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限

(R)读-----下传 (W)写----上传 (X)执行----如果不开FTP的目录都进不去

4.普通用户FTP服务器的连接(服务器)

在配置文件中添加如下信息即可:

Local_enble=yes (本地帐户能够登陆)

Write_enable=no (本地帐户登陆后无权删除和修改文件)

功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限

注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传

5. 用户登陆进其它的目录,只能进它的主目录

设置所有的本地用户都执行chroot

Chroot_local_user=yes (本地所有帐户都只能在自家目录)

设置指定用户执行chroot

Chroot_list_enable=yes (文件中的名单可以调用)

Chroot_list_file=/任意指定的路径/vsftpd.chroot_list

注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可

6. 本地用户访问FTP

Userlist_enable=yes (用userlistlai 来用户访问)

Userlist_deny=no (名单中的人不允许访问)

Userlist_file=/指定文件存放的路径/ (文件放置的路径)

注:开启userlist_enable=yes匿名帐号不能登陆

7. 安全选项

Idle_session_timeout=600(秒) (用户会话空闲后10分钟)

Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)

Accept_timeout=60(秒) (将客户端空闲1分钟后断)

Connect_timeout=60(秒) (中断1分钟后又重新连接)

Local_max_rate=50000(bite) (本地用户传输率50K)

Anon_max_rate=30000(bite) (匿名用户传输率30K)

Pasv_min_port=50000 (将客户端的数据连接端口改在

Pasv_max_port=60000 50000—60000之间)

Max_clients=200 (FTP的最大连接数)

Max_per_ip=4 (每IP的最大连接数)

Listen_port=5555 (从5555端口进行数据连接)

8. 查看谁登陆了FTP,并杀死它的进程

ps –xf |grep ftp

kill 进程号

VSFTPD的高手篇

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

作者:AMD-K6 2005-02-02 15:52:

00 来自:http://www.5ilinux.com/vsftp02.html

我可不是高手!!!^_^我只不过是个菜鸟,尽我的能力写出了我这个菜鸟觉得的高手篇,所以有什么错误请大家指正哦!!!

环境:linux as 3.0 + vsftpd -1.2.0-4的系统架构,是在服务器下的哦!讨厌XINETD^_^

1. 配置本地组访问的FTP

首先创建用户组 test和FTP的主目录

groupadd test

mkdir /tmp/test

然后创建用户

useradd -G test –d /tmp/test –M usr1

注:G:用户所在的组 d:表示创建用户的自己目录的位置给予指定

M:不建立默认的自家目录,也就是说在/home下没有自己的目录

useradd –G test –d /tmp/test –M usr2

接着改变文件夹的属主和权限

chown usr1.test /tmp/test ----这表示把/tmp/test的属主定为usr1

chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什么权限都没有

这个实验的目的就是usr1有上传、删除和下载的权限

而usr2只有下载的权限没有上传和删除的权限

当然啦大家别忘了我们的主配置文件vsftpd.conf

要确定local_enable=yes、write_enable=yes、chroot_local_usr=yes这三个选项是有的哦!

2. 配置FTP的服务器的非端口标准模式进行数据连接

这个非常容易:在VSFTPD。CONF中添加

Listen_port=33333

就可以了啦!

好了重头戏来了,这也是我为什么叫高手篇的缘故!^_^(大家不要扔鸡蛋哦!)

3. 配置单独的虚拟FTP,使用虚拟FTP用户,并使建立的四个帐户中有不同的权限

(两个有读目录的权限,一个有浏览、上传、下载的权限,一个有浏览、下载、删除和改文件名的权限)

A:配置网卡

第一块网卡地址是10.2.3.4 掩码是255.255.0.0

ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up

B:写入/etc/sysconfig中(为了重起后IP地址不会丢失)

cd /etc/sysconfig/network-scripts

cp ifcfg-eth0 ifcfg-eth0:1

vi ifcfg-eth0:1在其中修改内容如下

DEVICE=eth0:1

BROADCAST=211.131.4.255

HWADDR=该网卡的MAC地址

IPADDR=211.131.4.253

NETMASK=255.255.255.0

NETWORK=211.131.4.0

ONBOOT=yes

TYPE=Ethernet

wq推出

C:进入vsftpd.conf所在的文件夹

cp vsftpd.conf vsftpd2.conf

修改vsftpd.conf添加以下信息

Listen_address=10.2.3.4

修改vsftpd2.conf添加以下信息

Listen_address=211.131.4.253

Ftpd_banner=this is a virtual ftp test

到此虚拟的FTP服务器建立好了

D:建立logins.txt

vi /tmp/logins.txt

添加入下信息:

longlei------------用户名

longlei------------密码

zhangweibo

zhangweibo

jinhui

jinhui

lxp

lxp

格式要按照我的来哦,一个用户名,一个密码啦

F:建立访问者的口令库文件,然后修改其权限

db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db

G:进如/etc/pam.d/中创建f

.vu

在此文件中添加如下信息

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

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

H:在/var/ftp/创建目录并改变其属性和它的属主

useradd -d /var/ftp/test qiang

chmod 700 /var/ftp/test

在目录中添加test_file测试文件

I:进入vsftpd2.conf修改其中的信息(我加的是)

Listen_yes

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=qiang------将虚拟用户映射为本地用户

Listen_port=5555

Max_client=10

Max_per_ip=1

Ftpd_banner=this is a virtual server and users

Pam_service_name=ftp.vu

注:在主配置文件中给的权限越低,在后面分用户管理的时候对拥护的权限划分的空间就越大,因为主配置文件最高的服务先读主配置文件,然后再读用户的配置文件

重起服务

到此虚拟USER就建好了

J:在VSFTPD。CONF所在的目录中创建virtaul文件目录

并在文件目录中创建以你用户名命名的配置文件

Longlei zhangweibo jinhui lxp

在longlei中添加:

Anon_world_readable_only=no

在lxp中添加

Anon_world_readable_only=no

这样此两个用户就有了浏览目录的权限了

在jinhui中添加

Anon_world_readable_only=no

Write_enable=yes

Anon_upload_enable=yes

此用户就有了上传、下载和浏览的权限

在zhangweibo中添加

Anon_world_readable_only=no

Write_enable=yes

Anon_upload_enable=yes

Anon_other_write_enable=yes

此用户就有了上传、下载、删除文件目录、修改文件名和浏览的权限

K:修改vsftpd2.conf

加入user_config_dir=/vsftpd.conf所在的目录/virtual

重起服务器就搞定了

好了大家别走开,现在隆重推出VSFTPD。CONF中的我所知道的所有配置信息

Anonymous_enable=yes (允许匿名登陆)

Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)

Local_umask=022 (FTP上本地的文件权限,默认是077)

Connect_form_port_20=yes (启用FTP数据端口的数据连接)*

Xferlog_enable=yes (激活上传和下传的日志)

Xferlog_std_format=yes (使用标准的日志格式)

Ftpd_banner=XXXXX (欢迎信息)

Pam_service_name=vsftpd (验证方式)*

Listen=yes (的VSFTPD服务器)*

Anon_upload_enable=yes (开放上传权限)

Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)

Write_enable=yes (开放本地用户写的权限)

Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

Anon_world_readable_only=no (放开匿名用户浏览权限)

Ascii_upload_enable=yes (启用上传的ASCII传输方式)

Ascii_download_enable=yes (启用下载的AS

ASCII传输方式)

Banner_file=/var/vsftpd_banner_file (用户连接后欢迎信息使用的是此文件中的相关信息)

Idle_session_timeout=600(秒) (用户会话空闲后10分钟)

Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)

Accept_timeout=60(秒) (将客户端空闲1分钟后断)

Connect_timeout=60(秒) (中断1分钟后又重新连接)

Local_max_rate=50000(bite) (本地用户传输率50K)

Anon_max_rate=30000(bite) (匿名用户传输率30K)

Pasv_min_port=50000 (将客户端的数据连接端口改在

Pasv_max_port=60000 50000—60000之间)

Max_clients=200 (FTP的最大连接数)

Max_per_ip=4 (每IP的最大连接数)

Listen_port=5555 (从5555端口进行数据连接)

Local_enble=yes (本地帐户能够登陆)

Write_enable=no (本地帐户登陆后无权删除和修改文件)

这是一组

Chroot_local_user=yes (本地所有帐户都只能在自家目录)

Chroot_list_enable=yes (文件中的名单可以调用)

Chroot_list_file=/任意指定的路径/vsftpd.chroot_list

(前提是chroot_local_user=no)

这又是一组

Userlist_enable=yes (在指定的文件中的用户不可以访问)

Userlist_deny=yes

Userlist_file=/指定的路径/vsftpd.user_list

又开始单的了

Banner_fail=/路径/文件名 (连接失败时显示文件中的内容)

Ls_recurse_enable=no

Async_abor_enable=yes

One_process_model=yes

Listen_address=10.2.2.2 (将虚拟服务绑定到某端口)

Guest_enable=yes (虚拟用户可以登陆)

Guest_username=所设的用户名 (将虚拟用户映射为本地用户)

User_config_dir=/任意指定的路径/为用户策略自己所建的文件夹

(指定不同虚拟用户配置文件的路径)

又是一组

Chown_uploads=yes (改变上传文件的所有者为root)

Chown_username=root

又是一组

Deny_email_enable=yes (是否允许禁止匿名用户使用某些邮件地址)

Banned_email_file=//任意指定的路径/xx/

又是单的

Pasv_enable=yes ( 服务器端用被动模式)

User_config_dir=/任意指定的路径//任意文件目录 (指定虚拟用户存放配置文件的路径)

作者:北南南北 2005-02-02 14:47:19 来自:Linux先生

补充一:如何有选择的把用户在家目录中呢?

我们要自己建一个文件,在/etc目录中

#touch /etc/vsftpd.chroot_list

以beinan和nanbei这两个用户在他们所在的家目录中,而其它的FTP用户不做此。

在vsftpd.chroot_list这个文件中,把beinan和nanbei添上去就行,注意,每个用户占一行。

beinan

nanbei

然后改/etc/vsftpd/vsftpd.conf文件,找如下的两行

#chroot_list_enable=YES

#chroot_list_file=/etc/vsftpd.chroot_list

把前面的#号去掉,也就是这样的

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

如果

没有这样的两行,就可以自己添加上去也是一样的。

设置好后,重新vsFTPD服务器。

补充一之补充:如何把系统内所有的FTP用户都在家目录中呢??经juliaugong兄的提示,我查找了vsFTPd的洋文说明,证明这个选项是一刀切的解决所有的用户都能在家目录中

我们可以通过更改vsftpd.conf文件,加入如下的一行

chroot_local_user=YES

改完配制文件,不要忘记重启vsFTPd服务器

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

关闭 vsftpd: [ 确定 ]

为 vsftpd 启动 vsftpd: [ 确定 ]

[root@linuxsir001 root]#

补充二:打开vsFTP服务器的日志功能:

把下面xferlog_file前面的#号对掉,也就是把vsftp的log功能打开,这样我们就能在/var/log目录下查看vsftpd.log。这是vsFTP的日志功能,这对于我们来说是极为重要的。

#xferlog_file=/var/log/vsftpd.log

补充三:如何让绑定IP到vsFTP?也就是说,如何让用户只能通过某个IP来访问FTP。其实这个功能很有意思。如果绑定的是内网的IP,外部是没有办法访问的。如果绑定的是对外服务的IP,内网也只能通过对外服务的IP来访问FTP

在/etc/vsftpd/vsftpd.conf中加一行,以我的局域网为例,请看第一帖中的操作环境,这样就不能访问我的FTP了,内网也可能通过192.168.0.2来访问FTP

listen_address=192.168.0.2

加完后,要重启vsFTP服务器

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

关闭 vsftpd: [ 确定 ]

为 vsftpd 启动 vsftpd: [ 确定 ]

[root@linuxsir001 root]#

补充四:如何让vsFTP服务器链接数,以及每个IP最大的链接数??

答:应该改vsFTP服务器的配制文件vsftpd.conf,加入下面的两行:

max_clients=数字

max_per_ip=数字

举例:我想让我的vsFTP最大支持链接数为100个,每个IP,最多能支持5个链接,所以我应该在vsftpd.conf中加上如下的两行:

max_clients=100

max_per_ip=5

改好了配制文件,不要忘记启动vsftp服务器。

补充五:如何下载的速度?

anon_max_rate=数字 注:这是匿名的下载速度

local_max_rate=数字 注:这是vsFTP服务器上普通用户的下载速度

注:这个数字的单位是字节,所以我们要计算一下。比如我想让匿名用户和vsFTP上的用户都以80KB下载,所以这个数字应该是1024x80=81920

所以我们要在vsftpd.conf中加入下面的两行

anon_max_rate=81920

local_max_rate=81920

不要忘记重启vsftpd服务

补充六:我的硬盘空间有限,如何把帐号ftp默认的路径/var/ftp更改到别处?或者是,我的linux所有的目录都放在/根分区,因为空间紧张,我能否把ftp这个用户的默认路径放到别的分区??

可以,应该如下操作!

首先要把ftp这个用户删除

#userdel -r ftp

会有错误信息,不过

不用理,这是正常的。

然后我们再把这个用户添加上,比如我想为帐号ftp的家目录设置在/mnt/LinG/ftp,我们就可以如下操作

[root@linuxsir001 root]# mkdir /mnt/LinG

[root@linuxsir001 root]# adduser -d /mnt/LinG/ftp -g ftp -s /sbin/nologin ftp

仅仅是这样做还不行,因为这样还是不能让匿名用户找到它的家目录,所以我们必须改变/mnt/LinG/ftp这个目录的权限。

[root@linuxsir001 root]# chmod 755 /mnt/LinG/ftp/

[root@linuxsir001 root]# chown -R root.root /mnt/LinG/ftp/

补充七:如何定制欢迎信息,也就是我们登入有些FTP之后,会出现类似:欢迎您来到LinuxSir FTP,在这里,您会得到最真诚的帮助,如果有什么问题和建议,请来信,多谢。

实现这个并不难,我们可以查看vsftpd.cof文件中,是否有这行。

dirmessage_enable=YES

如果没有就加上,如果dirmessage_enable=YES前面有#号,就把#号去掉。

然后我们制定一个.message文件,写上您想要写的东西,比如是.message的内容是如下的:

欢迎您来到LinuxSir FTP!

在这里,您会得到最真诚的帮助;

如果有什么问题和建议,请来信,多谢。

我们可以用编辑器来写这个.message,我想这个过程就不用说了吧。

然后我们把.message这个文件复制到各个用户的家目录中。比如我的FTP的一个用户是beinan,这个用户所在的家目录是/home/beinan

我们就要把.message放在/home/beinan这个目录下。如果系统用户ftp,他的目录就是/var/ftp这个目录,这个是默认的,当匿名用户登入时就访问的是/var/ftp这个目录。我们要让匿名用户能看到欢迎信息。就要把.message放在/var/ftp目录中。其它的用户,也无非就是类似的操作。

补充八:如何实现虚拟路径?

比如:

/home/a 映射为ftp://localhost/a

/home/b/c 则为ftp://localhost/c

其实这个不能说是vsFTPd的内容,其实我们早就接触过了,可能我们没有注意,我们可以通过如下的方法来实现。

#mount --bind [原有的目录] [新目录]

比如我的ftp的默认目录是/var/ftp,我想把/mnt/LinG/WinSoft文件夹,映射到/var/ftp目录中,我就如下操作

我们要先在/var/ftp目录中建一个目录

#mkdir /var/ftp/WinSoft

然后执行mount命令

#mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft

这样就OK了。

补充九:如何上匿名访问、上传,并支持下载和执行?

在默认的情况下,vsftp是不支持匿名用户的访问的,所以我们要自己打开相应的选项。现在我针对这个问题,我们要打开如下的选项。

anonymous_enable=YES 注:允许匿名访问

anon_upload_enable=YES 注:允许上传

anon_mkdir_write_enable=YES 注:允许建立相应的目录

anon_umask=022 把上传到FTP的文件或者目录改变权限

当然打开这些选项还是不行的,

我们还要让匿名写入文件的上一级目录有写入权,以我所做的FTP为例,我所做的FTP的匿名访问的目录是/var/ftp,在vsFTPd中,/var/ftp这个目录是不能让匿名用户有写入权限的,这是为了安全考虑,所以我们必须自己在/var/ftp目录中建一个目录,让这个目录有写入权。

比如:我在/var/ftp目录建一个upload目录,然后把它的权限设置成777,这样匿名用户就能写入了。

#mkdir /var/ftp/upload

#chmod 777 /var/ftp/upload

改了一系列的文件,不要忘记重启vsFTPd服务器

我是用standalone模式的,当然用下面的方法

[root@linuxsir001 root]# service vsftpd restart

关闭 vsftpd: [ 确定 ]

为 vsftpd 启动 vsftpd: [ 确定 ]

[root@linuxsir001 root]#

如果您用的是xinetd模式来启动vsFTPd,我们要重启xinetd服务器

[root@linuxsir001 root]# service xinetd restart

停止 xinetd: [ 确定 ]

启动 xinetd: [ 确定 ]

[root@linuxsir001 root]# ]

补充十:通过pam认证方式,添加虚拟用户

通过pam认证,用db_load添加用户,是真正的虚拟用户。现在我们简单的介绍一下,通过以后的学习,我们再深入补充:

1。在/etc/pam.d/目录中创建一个文件ftp

[root@linuxsir001 root]# touch /etc/pam.d/ftp

2。在/etc/pam.d/ftp里面加上如下的两行

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

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

3。创建一系统的用户名用密码的文件logins.txt

[root@linuxsir001 root]# touch logins.txt

在logins.txt文件中,输入如下的内容。这个内容您可以自己来定。比如我下面的。其实linuxsir007是FTP的虚拟用户名,123456 是linuxsir007的密码;linuxsir008是虚拟用户名,234567是linuxsir008的密码,以此类推,您想加入几个就是几个;下面是我添加的FTP的虚拟用户名和密码。

linuxsir007

123456

linuxsir008

234567

linuxsir009

5670

linuxsir010

6701

linuxsir011

7012

4。创建一个真实的用户名linuxsir006,这个linuxsir006的用户,所在的家目录由您来定。我在这里不多说了。我是按系统默认的来添加的。

[root@linuxsir001 root]# useradd linuxsir006

5。把/etc/hosts复制到/home/linuxsir006,并改变它的属主

[root@linuxsir001 root]#cp /etc/hosts /home/linuxsir006/hosts

[root@linuxsir001 root]#chown linuxsir006.linuxsir006 /home/linuxsir006/hosts

6。通过db_load来创建虚拟用户的库文件。我们在前面建的logins.txt文件,我是放在了/root用户目录下。所以咱们得把目录切换到/root目录来创建虚拟用户的库文件。

[root@linuxsir001 root]# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db

7。更改vsftpd.conf文件,加入如下的几行

pam_service_name=ftp

guest_enable=YES

guest_username=linuxsir006

anon_world_readable_only=NO

8。重启vsFTPd服务

器;改了一系列的文件,不要忘记重启vsFTPd服务器

我是用standalone模式的,当然用下面的方法

[root@linuxsir001 root]# service vsftpd restart

关闭 vsftpd: [ 确定 ]

为 vsftpd 启动 vsftpd: [ 确定 ]

[root@linuxsir001 root]#

如果您用的是xinetd模式来启动vsFTPd,我们要重启xinetd服务器

[root@linuxsir001 root]# service xinetd restart

停止 xinetd: [ 确定 ]

启动 xinetd: [ 确定 ]

[root@linuxsir001 root]#

9。如果您想让用户登入FTP时,登入成功的相应的信息,请把您制作的.message复制到您的用户的家目录中,这方面的请参考前面的补充。

10。测试:

[root@linuxsir001 root]# ftp 192.168.0.1

Connected to 192.168.0.1.

220 (vsFTPd 1.1.3)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.0.1:root): linuxsir007

331 Please specify the password.

Password:

230-欢迎光临LinuxSir自由FTP

230-在这里,您将得到最真诚的帮助!

230-本站限度为30KB!

230-每个IP限四个线程

230-请大家遵守FTP的有关规定。

230-多谢合作!

230-

230-LinuxSir管理部

230 Login successful. Have fun.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (192,168,0,1,85,171)

150 Here comes the directory listing.

-rw-r--r-- 1 ftp ftp 174 Jun 01 12:59 hosts

drwxr-xr-x 3 ftp ftp 4096 Jun 01 13:29 linuxsir008

drwxr-xr-x 2 ftp ftp 4096 Jun 01 13:24 sun

226 Directory send OK.

ftp>

补充十一:如何把Redhat 9.0中系统默认安装的vsftpd-1.1.3-8.i386.rpm,系统默认vsFTPd是用standalone启动方式 ,改为xinetd启动方式 ?

如果是用源码包安装的,安装后就是xinetd模式,如果是用RPM包安装的,在Redhat 9.0中,应该用下面的方法来解决。

1.在/etc/xinetd.d/目录中创建一个文件vsftpd

[root@linuxsir001 root]# touch /etc/xinetd.d/vsftpd

/etc/xinetd.d/vsftpd内容如下:

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/sbin/vsftpd

# server_args =

# log_on_success += DURATION USERID

# log_on_failure += USERID

nice = 10

disable = no

}

2。复制vsftpd.conf到/etc/目录下,因为xinetd对vsFTPd配制文件应该在/etc目录下,所以我们就必须把这个文件复制到 /etc目录下,否则会出现系统中local用户无法登入,也就是说,不复制这个文件会出现ftp非匿名用户无法访问,只能用匿名用户访问。

[root@linuxsir001 root]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf

3。更改配制文件/etc/vsftpd.conf,把如下的项注掉:

也就是把

listen=YES

改为

#listen=YES

或者是把这行删除也行。

4。把/etc/init.d/vsftpd这个文件删除。其实最好的备份到别处,因为我们有时实验来实验去,可能还会转到standalone模式启动。我就直接移动到别的目录

比如是/root下面的backup目录。

[root@linuxsir001 root]#mkdir /root/backup

[root@linuxsir001 root]# mv /etc/init.d/vsftpd /root/backup

5。运行ntsysv,把vsftpd的服务取消

[root@linuxsir001 root]#ntsysv

[ ] vsftpd

6。重启xinetd服务

[root@linuxsir001 root]# service xinetd restart

RedHat6.2服务器配置方案大全--第九,十,十一章Apache、Tomcat/JServ/php3/MySQL的整合

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

作者:汤海京 2001-09-29 08:05:01 来自:http://lslnet.com/linux/

第九章 Linux下 Apache、Tomcat的整合

9.1 所需的RPM包:

  jdk1_2_2_006-linux-i386.tar.gz

  jakarta-tomcat.tar.gz,

  mod_jserv.so

9.2 软件安装:

  9.2.1 安装jdk1.2.2

  (1) 解开压缩包

    tar xvzf jdk1_2_2_006-linux-i386.tar.gz

  (2) 目录的处理

    ln -s jdk1.2.2 jdk

    ln -s jdk/jre jre

  (3) 设置$JAVA_HOME,$CLASSPATH

    vi /root/.bash_profile

    加入:

      JAVA_HOME=/usr/local/jdk

      export JAVA_HOME

      CLASSPATH=/usr/local/jdk/lib:/usr/local/jre/lib

      export CLASSPATH

      PATH=$PATH:/usr/local/jdk/bin:/usr/local/jre/bin

  注:JDK的安装到此结束

  9.2.2 安装tomcat

  (1) 解开压缩包

    tar xvzf jakarta-tomcat.tar.gz

  (2) 运行tomcat服务器

    cd /usr/local/jakarta-tomcat/bin

    ./startup.sh start(用./shutdown.sh stop结束tomcat服务器)

    lynx http://localhost:8080/

  看见了jsp/servlet的东西,并且能运行它的例子程序,那么你的tomcat 服务器就安装成功了

  9.2.3 和apache连接

  (1) 简介:

    tomcat本身其实就是一个web服务器,我们可以把它和apache等其他web服务器连接起来,

这两个服务器可以不在同一台机器上。下面的操作是在同一台机器上的情况。

  (2) 拷贝.so文件

    cp mod_jserv.so /usr/local/apache/libexec

  (3) 修改Apache的配置文件,加入对tomcat的支持

    cp /usr/local/jakarta-tomcat/conf/tomcat.conf /usr/local/apache/conf/tomcat.conf

    vi /usr/local/apache/conf/httpd.conf

    加入Include /usr/local/apache/conf/tomcat.conf

  9.2.4 测试

  重新启动你的apache, 然后运行tomcat服务器

  lynx http://localhost/examples/

  如果你看见了jsp、servlet目录,你的apche与tomcat已经连接成功了.

  9.2.5 一些说明:

  如果你的jsp/servlet运行不了或者有错误,一般是你的CLASSPATH设置错误。如果你的apache是

自己编译的,编译apache时请把--enable-module=so打开。

  

第十章 Linux下Apache、JServ的整合

10.1 需要的源码包:

    jdk-1_2_2_006-linux-i386.tar.gz

    jsdk20-solaris2-sparc[1].tar.Z

    ApacheJServ-1.1.2.tar.gz

10.2 安装过程

  10.2.1 安装jdk1.2.2

  (2) 解开压缩包

    tar xvzf jdk1_2_2_006-linux-i386.tar.gz

  (2) 目录的处理

    ln -s jdk1.2.2 jdk

    ln -s jdk/jre jre

  (3) 设置$JAVA_HOME,$CLASSPATH

    vi /root/.bash_profile

    加入:

      JAVA_HOME=/usr/local/jdk

      export JAVA_HOME

      CLASSPATH=/usr/local/jdk/lib:/usr/local/jre/lib

      export CLASSPATH

      PATH=$PATH:/usr/local/jdk/bin:/usr/local/jre/bin

    注:JDK的安装到此结束。

  10.2.2 安装JSDK

  (1) tar zxvf jsdk20-solaris2-sparc[1].tar.Z

  (2) 将产生的JSDK2.0目录移到 /usr/local/JSDK2.0

    mv JSDK2.0 /usr/local/JSDK2.0

    注:JSDK的安装到此结束。

  10.2.3 Apache和Jserv的静态混合编译

  所谓的静态编译是指将Jserv编译进apache里

  (1) tar xvzf apache_1.3.12.tar.gz

    tar xvzf ApacheJServ-1.1.2.tar.gz

  (2) cd apache_1.3.12

    ./configure --prefix=/usr/local/apache

  (3) 配置apache jserv编译参数

    cd ../ApacheJServ-1.1.2

    ./configure \\

    --prefix=/usr/local/jserv \\

    --with-apache-src=../apache_1.3.12 \\

    --with-jdk-home=/usr/local/ jdk1.2.2 \\

    --with-java-platform=2 \\

    --with-JSDK=/usr/local/JSDK2.0/lib/jsdk.jar

    make

    make install

  (4) 编译apache和apache jserv

    cd ../apache_1.3.12

    ./configure \\

      --prefix=/usr/local/apache \\

      --activate-module=src/modules/jserv/libjserv.a

    make

    make install

  (5) 执行/usr/local/apache/bin/httpd -l检查一下mod_jserv是否编译进apache了

  (6) 更改配置文件 /usr/local/apache/conf/httpd.conf

    添加 Include /usr/local/jserv/etc/jserv.conf

  (7) 更改配置文件 /usr/local/jserv/etc/jserv.conf

    SetHandler jserv-status

    order deny,allow

    deny from all

    加入你的信任主机allow from xxxx

    这样在信任主机上通过http://yourserver/jserv/(注意后面这个"/"不能少)可以看到你

的apache jserv的配置信息。

    接着在/usr/local/jserv/servlets下放入你自己的servlet class实验一下效果吧,测试结

果表明在redhat6.2下没有中文显示问题,一切ok!

    其他

关于servlet zone的设置、load balance等等请参考apache jserv文档和java.apache.org网站

    注:Apache和Jserv混合编译到此结束

10.3 最后的测试:

  1. 启动apache:/usr/local/apache/bin/apachectl start

  2. 用浏览器测试http://yourserver/servlets/IsItWorking

    看见了Yes,It's working!了吗?你成功了!!

  

第十一章 Linux下Apache、php3、MySQL的整合

11.1 所需的RPM包

    apache_1.3.12.tar.gz

    php-3.0.16.tar.gz

    mysql-3.22.32.tar.gz

    注意:以上均为源代码而非RPM包

11.2 软件安装

    以root登录,将以上文件均拷贝至/root下

  11.2.1 安装MySQL

  (1) 解开压缩包

      tar -zvxf mysql-3.22.32.tar.gz

  (2) 将产生mysql-3.22.32目录移到/usr/local/mysql

      mv mysql-3.22.32 /usr/local/mysql

  (3) 编译MySQL

      cd /usr/local/mysql

      ./configure --prefix=/usr/local/mysql

      make

      make install

    注:MySQL的安装到此结束

  11.2.2 Apache、PHP3的混合编译

  (1) 解开压缩包

      tar xvzf apache_1.3.12.tar.gz 产生apache_1.3.12目录

      tar xvzf php-3.0.16.tar.gz 产生php-3.0.8目录

  (2) 把Apache的安装目录定为/usr/local/apache

      cd apache_1.3.12

      ./configure --prefix=/usr/local/apache

  (3) 配置支持MySQL、作为Apache功能模块、跟踪变量有效

      cd ../php-3.0.16

      ./configure --with-mysql=/usr/local/mysql --with- apache=../apache_1.3.12 --enable-track-vars

      make

      make install

    注:PHP的安装到此结束

  (4) 配置Apache,加入PHP3的模块

      cd ../apache_1.3.12

      ./configure --prefix=/usr/local/apache --activate- module=src/modules/php3/libphp3.a

      make

      make install

    注:APACHE安装完毕

  11.2.3 更改配置

  (1) 把php.ini文件拷到/usr/local/lib/目录下.

      cd ../php-3.0.8#cp php3.ini-dist /usr/local/lib/php3.ini

  (2) 更改Apache的配置文件

      cd /usr/local/apache/conf

      vi httpd.conf

  找到 AddType application/x-httpd-php3.php3 把它前头的#号给删了当然也可加一行

AddType application/x-httpd-php3.asp 这样用FrontPage编辑会方便一点。

Linux构建最好的FTP服务器

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

2005-01-10 15:03:32 来自:http://www.zhcedu.com.cn

在众多网络应用中

,FTP(文件传输协议)有着非常重要的地位。Internet中一个十分重

要的资源就是软件资源,而各种各样的软件资源大多数都放在FTP服务器中。与大多数

Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户

机程序,连接到主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,

服务器程序执行用户发出的命令,并将执行结果返回给客户机。FTP服务可以根据服务对

象的不同分为两类:系统FTP服务器只允许系统上的合法用户使用;匿名FTP服务器

(Anonymous FTP Server)允许任何人登录到FTP服务器去获取文件。

FTP的数据传输模式针对FTP数据连接而言,分为主动传输模式、被动传输模式和单端口传

输模式三种。

1.主动传输模式

当FTP的控制连接建立,客户提出目录列表、传输文件时,客户端发出PORT命令与服务器

进行协商,FTP服务器使用一个标准端口20作为服务器端的数据连接端口(ftp-data),

与客户建立数据连接。端口20只用于连接源地址是服务器端的情况,并且端口20没有监听

进程来监听客户请求。

在主动传输模式下,FTP的数据连接和控制连接方向相反,由服务器向客户端发起一个用

于数据传输的连接。客户端的连接端口由服务器端和客户端通过协商确定。

2.被动传输模式

当FTP的控制连接建立,客户提出目录列表、传输文件时,客户端发送PASV命令使服务器

处于被动传输模式,FTP服务器等待客户与其联系。FTP服务器在非20端口的其它数据传输

端口上监听客户请求。

在被动传输模式下,FTP的数据连接和控制连接方向一致,由客户端向服务器发起一个用

于数据传输的连接。客户端的连接端口是发起该数据连接请求时使用的端口。当FTP客户

在防火墙之外访问FTP服务器时,需要使用被动传输模式。

3.单端口模式

除上述两种模式之外,还有一种单端口模式。该模式的数据连接请求由FTP服务器发起。

使用该传输模式时,客户端的控制连接端口和数据连接端口一致。因为这种模式无法在短

时间连续输入数据、传输命令,因此并不常用。

Linux下有很多可用的FTP服务器,其中比较流行的有WU-FTP(Washington University

FTP)和VSFTP。Red Hat 8.0中自带了WU-FTP和VSFTP两个软件。WU-FTP是一个著名的FTP

服务器软件,它功能强大,能够很好地运行于众多Unix操作系统中。不过作为后起之秀的

VSFTP越来越流行,在Red Hat 9.0发行版中就只带有VSFTP。

VSFTP中VS的意思是“Very Secure”。从名称可以看出,从一开始,软件的编写者就非常注

重其安全性。除与生俱来的安全性外,VSFTP还具有高速、稳定的

性能特点。在稳定性方

面,VSFTP可以在单机(非集群)上支持4000个以上的并发用户同时连接。据

ftp.redhat.com的数据,VSFTP最多可以支持15000个并发用户。

快速构建FTP服务器

FTP服务器实现的基本功能是上传下载,下面就分几个步骤来搭建一个可以实现下载功能

的简易FTP服务器。

1.安装FTP服务器

如果在安装系统时没有选择安装FTP服务器,可以通过Red Hat 9.0中的“添加/删除应用程

序”工具进行安装。具体方法是,选择“主选单”→“系统设置”→“添加/删除应用程序”,在弹

出的界面中选中FTP服务器,单击“更新”即可。

如果无法确认是否安装了该软件,可以使用以下命令查看:

#rpm -qa|grep vsftpd

vsftpd-1.1.3-8

2.启动FTP服务器

套用Red Hat 9.0的预设范例直接启动VSFTP。

# /sbin/service vsftpd start

为vsftpd启动vsftpd: [确定]

3.在/var/ftp/pub目录下创建一个名为test.txt的文件,文件内容为“This is a test

file”。

4.测试

使用FTP客户端登录到本地服务器,然后以匿名身份(anonymous)登录:

# ftp 127.0.0.1

Connected to 127.0.0.1 (127.0.0.1).

220 (vsFTPd 1.1.3)

Name (127.0.0.1:root): anonymous

331 Please specify the password.

Password:

230 Login successful. Have fun.

Remote system type is UNIX.

Using binary mode to transfer files.

这样就成功地登录到FTP服务器。可以显示服务器目录列表如下:

ftp> ls

227 Entering Passive Mode (127,0,0,1,63,15)

drwxr-xr-x 2 0 0 4096 Dec 04 01:35 pub

226 Directory send OK.

切换到pub目录下,并显示目录内容,可以找到刚才创建的文件test.txt:

ftp> cd pub

250 Directory successfully changed.

ftp> ls

227 Entering Passive Mode (127,0,0,1,232,34)

150 Here comes the directory listing.

-rw-r--r-- 1 0 0 21 Dec 04 01:35 test.txt

226 Directory send OK.

下载test.txt文件:

ftp> mget test.txt

mget test.txt? y

227 Entering Passive Mode (127,0,0,1,186,210)

150 Opening BINARY mode data connection for test.txt (21 bytes).

226 File send OK.

21 bytes received in 0.0108 secs (1.9 Kbytes/sec)

查看本机目录内容,可以看到test.txt已成功下载到本机。

ftp> !ls

a EIO_Binders initrd mnt proc tftpboot ylg.txt

bin etc lib mymnt root tmp

boot home lost+found myshare sbin usr

dev id_dsas.pub misc opt test.txt var

尝试上传名为ylg.txt的文件,可以看到请求被拒绝了。

ftp> put ylg.txt

local: ylg.txt remote: ylg.txt

227 Entering Passive Mode (127,0,0,1,243,10)

550 Permission denied.

退出登录:

ftp> bye

221 Goodbye.

由测试可以看出,已经可以下载文件,但不能上传文件(也不能在服务器上创建目录和文

件)。实际上这是一个专门提供下载服务的匿名FTP服务器。

从上面的步骤可以看出,并不需要做什么配置就可

以完成一个简易FTP服务器的架设。这

是因为Red Hat已经配置好一个缺省的FTP服务器。不过在实际应用中,大部分情况下这个

简易的服务器并不能满足需求。

进一步配置FTP服务器

下面将创建一个能够满足常用需求的FTP服务器。实际应用中,FTP服务器一般要同时提供

上传和下载功能。此外,出于安全考虑,还需要有用户身份验证、用户权限设置及空间管

理等。下面就来搭建这样一个FTP服务器。

1.创建欢迎语。如果希望使用者在进入目录时,能够看到欢迎语或对本目录的介绍,可

以通过以下方法来实现。

确定/etc/vsftpd/vsftpd.conf文件中dirmessage_enable=YES,默认情况下,Red Hat

9.0有此设置。接着,在目录中新增名为.message的文件。本例在/home/ylg目录下创建一

个.message文件,其内容为“欢迎来到我的FTP站点”。

2.更换FTP服务器的默认端口。将预设的21端口改为2121,这样做是基于安全的考虑。更

改方法为,使用vi打开/etc/vsftpd/vsftpd.conf:

#vi /etc/vsftpd/vsftpd.conf

在文件最后增加如下一行内容:

listen_port=2121

3.取消anonymous登录的功能。在vsftpd.conf文件中找到如下一行,并将其值改为“NO”:

anonymous_enable=YES

4.设定使用者不得更改目录。这样做的目的也是基于安全性的考虑。一般情况下,使用

者的预设目录为/home/username。若是不希望使用者在登录后能够切换至上一层目录

/home,则可通过以下设置来实现。在/etc/vsftpd/vsftpd.conf文件中找到以下三行内容:

#chroot_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd.chroot_list

将其改为:

chroot_list_enable=YES

# (default follows)

chroot_list_file=/etc/vsftpd/chroot_list

新增一个文件/etc/vsftpd/chroot_list,文件内容为两个用户名:

ylg

user1

5.针对不同的使用者不同的速度。假设用户ylg所能使用的最高速度为500Kb/s,用

户user1所能使用的最高速度为250Kb/s,可以通过以下方法设置。在

/etc/vsftpd/vsftpd.conf文件尾部新增以下一行:

user_config_dir=/etc/vsftpd/userconf

增加一个名为/etc/vsftpd/userconf的目录:

#mkdir /etc/vsftpd/userconf

在/etc/vsftpd/userconf下新增一个名为ylg的文件,其内容如下所示:

local_max_rate=500000

在/etc/vsftpd/userconf目录下新增一个名为user1的文件,其内容如下所示:

local_max_rate=250000

VSFTP对于速度的范围大概在80%到120%之间,也就是最高速度为100Kb/s,但

实际的速度可能在80Kb/s到120Kb/s之间。如果频宽不足,数值会低于此。

6.对于每一个联机用户,都以的进程来运行。一般情况下,在启动VSFTP时,只会看

到一个名为vsftpd的进程在运行。但若是读者

望每一个联机用户都能以的进程来呈

现,则可通过在/etc/vsftpd/vsftpd.conf文件中增加以下一行来实现:

setproctitle_enable=YES

7.保存/etc/vsftpd/vsftpd.conf文件,然后重新启动vsftpd:

#service vsftpd restart

8.测试刚创建的FTP服务器。

以缺省方式登录会被拒绝,因为此时的默认端口号已经更改为2121,所以登录时需指定端

口。

# ftp 127.0.0.1

ftp: connect: Connection refused

此时也不能再使用匿名方式登录:

# ftp 127.0.0.1 2121

Connected to 127.0.0.1 (127.0.0.1).

220 (vsFTPd 1.1.3)

Name (127.0.0.1:root): anonymous

331 Please specify the password.

Password:

530 Login incorrect.

Login failed.

如果以用户ylg则可以成功登录(指定端口2121),并显示欢迎信息:

# ftp 127.0.0.1 2121

Connected to 127.0.0.1 (127.0.0.1).

220 (vsFTPd 1.1.3)

Name (127.0.0.1:root): ylg

331 Please specify the password.

Password:

230-欢迎来到我的FTP站点

230 Login successful. Have fun.

Remote system type is UNIX.

Using binary mode to transfer files.

因为在设置中设定了不能切换目录,所以下列命令无法正确执行:

ftp> cd /home

550 Failed to change directory.

再来测试一下上传和下载。首先下载服务器目录中的test.txt文件:

ftp> get test.txt

local: test.txt remote: test.txt

227 Entering Passive Mode (127,0,0,1,243,215)

150 Opening BINARY mode data connection for test.txt (21 bytes).

226 File send OK.

21 bytes received in 0.00308 secs (6.7 Kbytes/sec)

可以通过!ls命令看到本机目录中已成功下载该文件。然后上传本机目录中的ylg.txt文件

到服务器:

ftp> put ylg.txt

local: ylg.txt remote: ylg.txt

227 Entering Passive Mode (127,0,0,1,133,248)

150 Ok to send data.

226 File receive OK.

19 bytes sent in 0.0401 secs (0.46 Kbytes/sec)

用ls命令查看服务器目录,会发现该文件已成功上传。

为了测试不同连机用户使用的是不同进程,可以使用ps -ef指令,显示如下所示:

# ps -ef|grep ftp

root 12972 1356 0 13:44 pts/1 00:00:00 ftp 127.0.0.1 2121

nobody 12973 12908 0 13:44 ? 00:00:00 [vsftpd]

ylg 12975 12973 0 13:44 ? 00:00:00 [vsftpd]

user1 13013 13011 0 13:46 ? 00:00:00 [vsftpd]

root 13041 13015 0 13:47 pts/4 00:00:00 grep ftp

到现在为止,一个基本可以满足普通使用需求的FTP服务器就已经架设完成。

在实际应用中,有时为了增加安全性,会将FTP服务器置于防火墙之后。如本文开头所

述,被动传输模式适合于带有防火墙的情况。下面就来创建一个防火墙后的FTP服务器,

该服务器FTP端口为2121,数据传输端口为2020。

执行以下两行指令,只允许2121和2020端口打开,其余端口关闭:

#iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT

#iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

修改/etc/vsftpd/vsftpd.conf文件,在文本最后添加以下两行:

listen_port=2121

ftp_data_port=2020

重新启动vsftpd:

#service vsftpd restart

有时希望直接在/etc/hosts.allow中定义允许或拒绝某一源地址,可以通过以下配置来实

现。先确保/etc/vsftpd/vsftpd.conf中tcp_wrappers=YES,Red Hat 9.0中,这是默认

值。重新启动vsftpd:

#service vsftpd restart

假设提供168.192.2.1和210.31.8.1到210.31.8.254的连接,则可对/etc/hosts.allow进

行如下设定:

vsftpd : 168.192.2.1 210.31.8. : allow

ALL : ALL : DENY

配置虚拟用户FTP

上面配置的FTP服务器有一个特点,就是FTP服务器的用户本身也是系统用户。这显然是一

个安全隐患,因为这些用户不仅能够访问FTP,也能够访问其它的系统资源。如何解决这

个问题呢?答案就是创建一个虚拟用户的FTP服务器。虚拟用户的特点是只能访问服务器

为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内

具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。

在VSFTP中,认证这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认

证模块(PAM)认证。使用这种方式更加安全,并且配置更加灵活。 下面介绍配置过程。

1.生成虚拟用户口令库文件。为了建立此口令库文件,先要生成一个文本文件。该文件

的格式如下,单数行为用户名,偶数行为口令:

#vi account.txt

ylg

1234

zhanghong

4321

gou

5678

2.生成口令库文件,并修改其权限:

#db_load -T -t hash -f ./account.txt /etc/vsftpd/account.db

#chmod 600 /etc/vsftpd/account.db

3.新建一个虚拟用户的PAM文件。加上如下两行内容:

#vi /etc/pam.d/vsftp.vu

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

account required /lib/security/pam_userdb.so db=/etc/vsftpd/account

4.建立虚拟用户,设置该用户所要访问的目录,并设置虚拟用户访问的权限:

#useradd -d /ftpsite virtual_user

#chmod 700 /ftpsite

经过该步骤的设置,/ftpsite就是virtual_user用户的主目录,该用户也是/ftpsite目录

的拥有者。除root用户之外,只有该用户具有对该目录的读、写和执行的权限。

5.生成一个测试文件。先切换至virtual_user用户身份,然后在/ftpsite目录下创建一

个文件:

#su -virtual_user

$vi /ftpsite/mytest

This is a test file.

$su - root

6.编辑/etc/vsftpd/vsftpd.conf文件,使其整个文件内容如下所示(去掉了注释内容):

anonymous_enable=NO

local_enable=YES

local_umask=022

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write

_enable=YES

one_process_model=NO

chroot_local_user=YES

ftpd_banner=Welcom to my FTP server.

anon_world_readable_only=NO

guest_enable=YES

guest_username=virtual_user

pam_service_name=vsftp.vu

上面代码中,guest_enable=YES表示启用虚拟用户;guest_username=virtual则是将虚拟

用户映射为本地用户,这样虚拟用户登录后才能进入本地用户virtual的目录/ftpsite;

pam_service_name=vsftp.vu指定PAM的配置文件为vsftp.vu。

7.重新启动VSFTP:

#service vsftpd restart

8.以虚拟用户gou(Linux中并无该账号)进行测试:

# ftp 127.0.0.1

Connected to 127.0.0.1 (127.0.0.1).

220 Welcom to my FTP server.

Name (127.0.0.1:root): gou

331 Please specify the password.

Password:

230 Login successful. Have fun.

Remote system type is UNIX.

Using binary mode to transfer files.

测试下载服务器目录中的一个文件mytest:

ftp> get mytest

local: mytest remote: mytest

227 Entering Passive Mode (127,0,0,1,159,19)

150 Opening BINARY mode data connection for mytest (21 bytes).

226 File send OK.

21 bytes received in 0.00038 secs (54 Kbytes/sec)

测试上传本机目录中的文件vsftpd.conf:

ftp> !ls

account.db chroot_list k mytest userconf vsftpd.conf

ftp> put vsftpd.conf

local: vsftpd.conf remote: vsftpd.conf

227 Entering Passive Mode (127,0,0,1,117,203)

150 Ok to send data.

226 File receive OK.

4229 bytes sent in 0.00195 secs (2.1e+03 Kbytes/sec)

可以看到,使用没有系统账号的虚拟用户可以成功完成上传、下载的工作。但该FTP虚拟

服务器只允许虚拟用户登录,其它系统用户无法登录,如系统用户user1不是虚拟用户,

则不能登录该虚拟服务器。

# ftp 127.0.0.1

Connected to 127.0.0.1 (127.0.0.1).

220 Welcom to my FTP server.

Name (127.0.0.1:root): user1

331 Please specify the password.

Password:

530 Login incorrect.

Login failed.

在虚拟FTP服务器中,也可以对各个用户的权限进行设置。方法是在/etc/vsftpd.conf文

件中添加如下一行:

user_config_dir=用户配置文件目录

然后在用户配置文件目录下创建相应的用户配置文件,比如为上述名为gou的用户创建一

个配置文件(假设配置文件目录为/etc/user_config_dir):

#vi /etc/user_config_dir/gou

write_enable=NO

anono_upload_enable=NO

重启FTP服务器,这时再使用账号gou来登录,就已经没有上传的权限了。

proftpd学习笔记(一)

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

作者:张微波 2005-01-21 10:53:02 来自:http://www.5ilinux.com

这几天,公司终于放假了,终于可以安下心来好好学些proftp+mysql+quota。

安装proftp之前,必须先做一个工作,假如你的mysql是自己编译的,那就必须先修改/etc/ld.so.conf,否则后面运行proftp会报错。

vi /etc/ld.so.conf

添加下面一行

:

/usr/local/mysql/lib/mysql

注意大家如果mysql的安装路径于我不一样,则填写相应的路径,有关mysql的编译安装请参考《Linux+Apache+Mysql+PHP典型配置》。

1。下载相关软件

wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.9.tar.gz

下载proftp的最新版本1.2.9

wget http://www.castaglia.org/proftpd/modules/proftpd-mod-quotatab-1.2.11.tar.gz

这是配合proftp的磁盘限额的模块

2。解压编译

tar zvxf proftpd-1.2.9.tar.gz

tar zvxf proftpd-mod-quotatab-1.2.11.tar.gz

cp mod_quotatab/*.c proftpd-1.2.9/contrib/

cp mod_quotatab/*.h proftpd-1.2.9/contrib/

vi proftpd-1.2.9/contrib/mod_sql_mysql.c

找到#include 这一行,将mysql.h改成你的系统中此文件所在的路径,如/usr/local/mysql/include/mysql/mysql.h

编译:

./configure \\

--prefix=/usr/local/proftpd \\

--with-modules=mod_sql:mod_sql_mysql:mod_quotatab\\

:mod_quotatab_sql:mod_ratio \\

--with-includes=/usr/local/mysql/include/mysql \\

--with-libraries=/usr/local/mysql/lib/mysql

make

make install

这里我们编译的时候已经加进了mysql,quota,ratio等模块的支持,我会在后面讲他们的应用

ok, 现在我们可以来启动proftp了,只要

/usr/local/proftpd/sbin/proftpd

用你的ftp客户端试验以下,应该可以正常登陆,包括匿名和linux用户名可以。

其实默认的proftp满足日常的服务器管理用还是绰绰有余的,有个地方还是要修改一下,就是默认proftp的配置文件不支持ftp续传,所以我们只要

vi /usr/local/proftpd/etc/proftpd.conf

添加以下两行

AllowRetrieveRestart on

AllowStoreRestart on

重新启动以下proftp,就可以正常续传文件了。

创建proftpd脚本

只要在proftp的源代码目录

cp proftpd-1.2.9/contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd

记得修改proftpd文件,一般要修改proftpd的实际路径

chmod 755 /etc/rc.d/init.d/proftpd

ok

以后就可以用这个教本来启动,停止,重启proftp

呵呵,今天就讲这些,明天讲些proftp的一些基础配置:)

  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top