??xml version="1.0" encoding="utf-8" standalone="yes"?> 本文转自: http://tb.blog.csdn.net/TrackBack.aspx?PostId=616106
2 #
3 # httpd Startup script for the Apache HTTP Server
4 #
5 # chkconfig: - 85 15
6 # description: Apache is a World Wide Web server. It is used to serve \
7 # HTML files and CGI.
8 # processname: httpd
9 # config: /etc/httpd/conf/httpd.conf
10 # config: /etc/sysconfig/httpd
11 # pidfile: /var/run/httpd.pid
12
13 # Source function library.
14 . /etc/rc.d/init.d/functions
15
16 if [ -f /etc/sysconfig/httpd ]; then
17 . /etc/sysconfig/httpd
18 fi
19
20 # Start httpd in the C locale by default.
21 HTTPD_LANG=${HTTPD_LANG-"C"}
22
23 # This will prevent initlog from swallowing up a pass-phrase prompt if
24 # mod_ssl needs a pass-phrase from the user.
25 INITLOG_ARGS=""
26
27 # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
28 # with the thread-based "worker" MPM; BE WARNED that some modules may not
29 # work correctly with a thread-based MPM; notably PHP will refuse to start.
30
31 # Path to the apachectl script, server binary, and short-form for messages.
32 apachectl=/usr/local/apache2/bin/apachectl
33 httpd=${HTTPD-/usr/local/apache2/bin/httpd}
34 prog=httpd
35 pidfile=${PIDFILE-/var/run/httpd.pid}
36 lockfile=${LOCKFILE-/var/lock/subsys/httpd}
37 RETVAL=0
38
39 # check for 1.3 configuration
40 check13 () {
41 CONFFILE=/usr/local/apache2/conf/httpd.conf
42 GONE="(ServerType|BindAddress|Port|AddModule|ClearModuleList|"
43 GONE="${GONE}AgentLog|RefererLog|RefererIgnore|FancyIndexing|"
44 GONE="${GONE}AccessConfig|ResourceConfig)"
45 if LANG=C grep -Eiq "^[[:space:]]*($GONE)" $CONFFILE; then
46 echo
47 echo 1>&2 " Apache 1.3 configuration directives found"
48 echo 1>&2 " please read /usr/share/doc/httpd-2.0.52/migration.html"
49 failure "Apache 1.3 config directives test"
50 echo
51 exit 1
52 fi
53 }
54
55 # The semantics of these two functions differ from the way apachectl does
56 # things -- attempting to start while running is a failure, and shutdown
57 # when not running is also a failure. So we just do it the way init scripts
58 # are expected to behave here.
59 start() {
60 echo -n $"Starting $prog: "
61 check13 || exit 1
62 LANG=$HTTPD_LANG daemon $httpd $OPTIONS
63 RETVAL=$?
64 echo
65 [ $RETVAL = 0 ] && touch ${lockfile}
66 return $RETVAL
67 }
68 stop() {
69 echo -n $"Stopping $prog: "
70 killproc $httpd
71 RETVAL=$?
72 echo
73 [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
74 }
75 reload() {
76 echo -n $"Reloading $prog: "
77 if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
78 RETVAL=$?
79 echo $"not reloading due to configuration syntax error"
80 failure $"not reloading $httpd due to configuration syntax error"
81 else
82 killproc $httpd -HUP
83 RETVAL=$?
84 fi
85 echo
86 }
87
88 # See how we were called.
89 case "$1" in
90 start)
91 start
92 ;;
93 stop)
94 stop
95 ;;
96 status)
97 status $httpd
98 RETVAL=$?
99 ;;
100 restart)
101 stop
102 start
103 ;;
104 condrestart)
105 if [ -f ${pidfile} ] ; then
106 stop
107 start
108 fi
109 ;;
110 reload)
111 reload
112 ;;
113 graceful|help|configtest|fullstatus)
114 $apachectl $@
115 RETVAL=$?
116 ;;
117 *)
118 echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
119 exit 1
120 esac
121
122 exit $RETVAL
]]>
当显C?boot ... 9 seconds按Q意健
输入Qboot -s
d以后
#/sbin/mount -a
#passwd
输入新密?
FreeBSD 5.*
当要求选择启动模式时按4q入单用h式登录以?
#/sbin/mount -a
#passwd
输入新密?
? Solaris
ROOT密码遗忘的处理方?
1,如果q能用普通用L(fng)陆的?%df /etc,定包含/etc目录分区的设备名
%df /etc
/ /dev/dsk/c0t0d0s0...
此例中是c0t0d0s0,如果你的根目录分备不一L(fng)?替换一下就可以?
2,把系l盘插入cdrom?
3,出现提示W后,使用sync命o(h)h文gpȝ
4,按下stop+A
5,ok状态下键入boot cdrom -s
6,?提示W下键入mkdir /temp ,然后键入mount /dev/dsk/c0t0d0s0 /temp
如果出现挂接不上的情冉|,那么p行fsck?fsck /dev/rdsk/c0t0d0s0,然后在mount
7,cd /temp/etc
8,cp shadow shadowbak
9,cat shadow
得到root的口令字W串
root:djglcj0J:6453::::(其中djglcj0J是root的加密后的口令字W串)
10,sed s/djglcj0J// shadow>shadownew
11,cat shadownew查看是否已经变ؓ(f)
root::6453::::
12,cp shadownew shadow
13,cd /
unmount /temp
sync
shutdown -i0 -g0 -y
14,取出CD?重vpȝ,q时root׃需要密码啦Q?
q样也可以!
OK boot cdrom -s
#TERM=sun
#export TERM
#mount /dev/dsk/c0t0d0s0 /a
#vi /a/etc/shadow(删除root的加密后的密?
#reboot
? SCO UNIX
一旦运行SCO UNIX 机器的超U用户口令忘了,可以用这个方法解冟?
在另一台安装了SCO UNIX的机器上Q以Root用户注册Q进入系l,?mkdev fd命o(h)或命令scoadmin中的Filesystem之Floppy Filesystem Manager来制作应急启动盘Q包括Boottable 盘和Root filesystem盘?
上q制作的Root filesystem盘安装到盘上?
# mount /dev/fd0135ds18 /mnt
再将盘上的/etc/passwd ?tcb/files/auth/r/root两个文g拯到Root filesystem盘上?
# cp /etc/passwd /mnt
# cp /tcb/files/auth/r/root /mnt
卸蝲机器1盘上的软盘?
# umount /dev/rfd0135ds18
用Boot软盘d动遗忘口令的机器Q根据提C插入Root filesystem软盘Q待出现"#"Ӟq行下面操作Q将盘挂到软盘上:(x)
# mount /dev/hd0root /mnt
备䆾盘上的/etc/passwd?tcb/files/auth/r/root两个文g。因两个文g中还包含其他用户的注册信息?
用Root filesystem软盘上的两个文gQ覆盖硬盘上的两个文?etc/passwd ?tcb/files/auth/r/root?
# mkdir /cyh
# mount /dev/fd0135ds18 /cyh
# cd /cyh
# cp passwd /mnt/etc
# cp root /mnt/tcb/files/auth
卸蝲安装上的两个文gpȝ?
# umount /dev/hd0root
# umount /dev/fd0135ds18
取出软盘Q重新启动机器,待出现LoginӞ以Root用户注册Q键入第二台机器的超U用户口令,q样便可q入的超U用户了?
q入用户后,用Passwd和Rootq两个文件的备䆾覆盖原来的文Ӟ接着用passwd命o(h)修改用户的口令?
用户可以用Alt+F2换一个窗口,以Root注册Q现在用修改后的口o(h)p用了?
? AIX 4.3.3(IBM) RS/6000
第一张安装盘攑օ光驱Q重h器,按f5键,l端?Q进入maintance面Q选择mount rootvg的功能选项Q调用password修改口o(h)Q退出即?
? Linux
三种办法Q?
1.在系l进入单用户状态,直接用passwd rootL?
2.用安装光盘引导系l,q行linux rescue状态,原?分区挂接上来,作法如下Q?
cd /mnt
mkdir hd
mount -t auto /dev/hdaX(原来/分区所在的分区? hd
cd hd
chroot ./
passwd root
q样可以搞定
3.本机的盘拿下来,挂到其他的linuxpȝ上,采用的办法与W二U相?
? RedHat 8/RedHat9
Q?Q? lilo?
1. 在出?lilo: 提示旉?linux single
画面昄 lilo: linux single
2. 回R可直接进入linux命o(h)?
3. #vi /etc/shadow
第一行,即以root开头的一行中root:后和下一?前的内容删除Q?
W一行将cM?
root::......
保存
4. #reboot重启Qroot密码为空
Q?Q? grub?
1. 在出现grub画面Ӟ用上下键选中你^时启动linux的那一?别选dos?Q然后按e?
2. 再次用上下键选中你^时启动linux的那一?cM于kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/)Q然后按e?
3. 修改你现在见到的命o(h)行,加入singleQ结果如下:(x)
kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/
4. 回Rq回Q然后按b键启动,卛_直接q入linux命o(h)?
5. #vi /etc/shadow
第一行,即以root开头的一行中root:后和下一?前的内容删除Q?
W一行将cM?
root::......
保存
6. #reboot重启Qroot密码为空
7.HP-UX
启动时按esc q入isl
q入ISL后:(x)
isl>bo pri
(yes/no)y
ipl>hpux -is
ipl>vi /etc/passwd
Lroot 的密码即?
]]>
Solaris 10 3/05 CD 1
Solaris 10 3/05 CD 2
Solaris 10 3/05 CD 3
Solaris 10 3/05 CD 4
Solaris 10 3/05 Language CD
下蝲完Solaris 10 的光? _粗地看了一下其中的内容。第一张盘主要是Solaris pȝ基本软gQ第二张有许多和gnome相关的包Q第三张主要是staroffice, W四张包含了许多open source的Y件如Apache/Ant/Python/TCL/mysql{等?br />
安装准备Q?br />
W者还是喜Ƣ用Linux 的分区工P 通过使用http://gceclub.sun.com.cn/NASApp/sme/jive/thread.jsp?GXHC_JSESSIONID=-2089798192477626027&GXHC_jive.user.lastvisited=1107746952510&forum=14&thread=6819 描述
的方法做了分区?我把自己60G的硬盘分?个区Q?
名称 内容 cd 大小 文gpȝ 描述
/dev/hda1 Win->C: Primary 10G NTFS Windows XP
/dev/hda2 Ext Ext 25G --- 扩展分区
/dev/hda3 Linux Primary 10G EXT3 Linux
/dev/hda4 Solaris Primary 11.5G Solaris Solaris x86 partition
/dev/hda5 数据分区 Logical 12G FAT32 所有操作系l共?br />
/dev/hda6 数据分区 Logical 12G FAT32 所有操作系l共?br />
/dev/hda7 linux swap Logical 1G swap Linux swap,
其中W四个主分区ID配成?x82 (Solaris 分区), 大小?2G, 然后把自׃载的文g都先解成.iso文gq放?dev/hda5分区?q个分区在Windows下面是D?
安装:
W者比较吝啬,一看要刻那么多盘,不干了。决定试试只ȝ一张盘的方法?dW一张盘Q把BIOS设ؓ(f)光盘启动Q然后从光盘启动?非常利地看CSolaris 的启动界面:(x)
SunOS Secondary Boot Version 4.02, 然后{待Initializing System... ??Solaris Interactive, l箋{待. Configuring devices 那一步比较慢?br />
l过几分钟的{待后就看到pȝ自己认识了我的Intel Pro/100 VE |卡 iprb0Q?接着又看到系l自p识了我的昑֍(Nvidia Gefore 4 420)、键盘和鼠标{, 非常高兴!
要知道,在Solaris 9安装的时候,我可是费了好大的劲才配上昑֍|卡的啊?请参?br />
http://gceclub.sun.com.cn/NASApp/sme/jive/thread.jsp?GXHC_JSESSIONID=-2089798192477626027&GXHC_jive.user.lastvisited=1107746952510&forum=14&thread=6681)
接着开始配|了?我选的是用体中文安装,接下来配|网l、地域、时间、Root口o(h){,非常单,q里我就不多说了。接下来我选择软g自动重新引导和自动弹出CD,
W一张盘安装的介质我选择了CD, 后面的几张盘我都是选择了网l文件系l?接收License Agreement后选择了初始安装、自定义安装Q?选择了所有的中文的Y件包q且把默认语a环境设ؓ(f)中文的GB18030, 没有选择M附加产品Q然后选择整个组/~省包, 选择盘上的Solaris分区Q选择不保留数据,在分布文件系l时Q因为是个h机器, 我只配了/ 和swap 两个文gpȝ
我的文gpȝ如下
/ 10G
swap 1.5G
接着开始安装了?br />
当第一张盘安装l束后, 要注意在重启q程中取出第一张光盘,否则机器又会(x)从光盘启动。当pȝ提示W二张光盘的位置Ӟ我选择了网l文件系l?目的是节U几张光??br />
前面讲到Q我的Solaris 10光盘I(y)SO文g?dev/hda5下面Q也是Windows下的D盘,是FAT32的文件系l。我的做法是Q先打开一个TerminalQ然后把q个FAT32的磁盘mount 到Solaris下,最后通过lofiadm/mount命o(h)把ISO文g mount到Solaris下面。做法如下:(x)
1. 把FAT32的光盘mount到Solaris下面Q?br />
首先建立目的目录Q我打算?dev/hda5 mount?wind, /dev/hda6 mount?wine. 所以,q行# mkdir /wind #mkdir /wine.
接着/dev/dsk, ls 看到c0d0p0到c0d0p4, q里c0d0p2对应前面分中的/dev/hda2了,也就是那个扩展分区,里面包含了两个FAT32的logical-drive /dev/hda5?dev/hda6?br />
在Solaris 里面用device-name和logical-drive分别对应d区和逻辑分区。这里扩展分区的device-name是c0d0p2Q?dev/hda5逻辑分区的logical-drive 可以用c 或者数?来表C?/dev/hda6的logical-drive是d 或者数?。弄清楚了这些命令就单了?br />
#mount -F pcfs /dev/dsk/c0d0p2:c /wind
#mount -F pcfs /dev/dsk/c0d0p2:d /wine
当然Q要C?etc/vfstab里面加入下面两行Q以便系l重新启动时能把FAT32的分动mount?br />
/dev/dsk/c0d0p2:c /dev/rdsk/c0d0p2:c /wind pcfs 2 yes -
/dev/dsk/c0d0p2:d /dev/rdsk/c0d0p2:d /wine pcfs 3 yes -
参考文档:(x)
System Administration Guide: Devices and File Systems (http://docs.sun.com/app/docs/doc/817-5093)
ch. 18. Mounting and Unmounting File Systems, Page 306, x86: How to Mount a PCFS (DOS) File System From a Hard Disk
2. 用lofiadm/mount命o(h)做虚拟光?br />
在Windows上有很多虚拟光驱E序Q如Daemon, Virtual CD{,可以?iso文g虚拟成光驱?在Solaris下,我们用lofiadm命o(h)。方法如?
# lofiadm -a /wind/solaris10/sol-10-GA-x86-v2-iso.iso ?iso文gexport为块讑֤Q参?a 表示add, q个命o(h)的output?dev/lofi/1。这h们就可以把设?dev/lofi/1 mount到文件系l了
# mount -F hsfs -o ro /dev/lofi/1 /mnt ?dev/lofi/1 mount?mnt
然后#cd /mnt, 看到mount成功后,里面有了光盘上的内容Q再回到安装界面Q?在\径里面输?mntQ?然后p利安装了。接下来要装W三张盘的时候,同样到Terminal去,
# umount /mnt 用来unmount, q个不用我多说了
# lofiadm -d /dev/lofi/1
接着对照W二张盘的命令来安装W三、第四张盘和语言包?br />
装完后,pȝ?x)提C重新启动?重启后,有CDE和JDS3两种桌面可供选择Q我选择q入Java Desktop System 3的界面?br />
大功告成Q?整个q程׃我将q?.5时的时间。其中觉得第四张盘耗的旉最ѝ另外觉得JDS 3的桌面很漂亮也很方便使用?br />
基本配置Q?br />
1. 1400x1050分L率的讄
我的W记本分辨率?400x1050的,而Solaris 10h后默认用的?280x1024的,看v来有Ҏ(gu)p。查了一些文档,知道需要新Z个文?etc/X11/xorg.conf。下面是我的/etc/X11/xorg.conf的内宏V?br />
[/etc/X11/xorg.conf]
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerFlags"
Option "HandleSpecialKeys" "Always"
EndSection
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
ModulePath "/usr/X11R6/lib/modules"
FontPath "/usr/X11R6/lib/X11/fonts/TrueType/"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/sun/"
FontPath "/usr/X11R6/lib/X11/fonts/F3bitmaps/"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
Load "record"
Load "xtrap"
Load "bitstream"
Load "speedo"
Load "type1"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/mouse"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/kdmouse"
Option "SendCoreEvents"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 28.0-70.0
VertRefresh 55.0-100.0
DisplaySize 288 216
EndSection
Section "Device"
### Available Driver options are:-
### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
### [arg]: arg optional
#Option "SWcursor" # [<bool>]
#Option "HWcursor" # [<bool>]
#Option "NoAccel" # [<bool>]
#Option "ShadowFB" # [<bool>]
#Option "UseFBDev" # [<bool>]
#Option "Rotate" # [<str>]
#Option "VideoKey" # <i>
Option "FlatPanel" # [<bool>]
#Option "FPDither" # [<bool>]
#Option "CrtcNumber" # <i>
Option "MergedFB" "true" # [<bool>]
Option "CRT2HSync" "31-60" # [<str>]
Option "CRT2VRefresh" "50-75" # [<str>]
Option "CRT2Position" "Clone" # [<str>]
Option "MeataModes" "1400x1050-1024x768 1280x1024-1024x768 1024x768-1024x768 800x600-800x600 640x480-640x480"
Identifier "Card0"
Driver "nv"
VendorName "nVidia Corporation"
BoardName "NV17 [GeForce4 420 Go]"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1400x1050" "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
[End of /etc/X11/xorg.conf]
注意Q我加入?br />
Section "ServerFlags"
Option "HandleSpecialKeys" "Always"
EndSection
q样在Xorg的XServer 到问题Ӟ我就可以?Alt + Ctrl + BkSp" 重新启动xserver了,非常方便?br />
另外我还Ҏ(gu)我的实际情况到启?>首选项->桌面首先?>昄下面更改了很多东西,q里我就不一一描述了。其中比较重要的一个是Z把字体改大,我选择了字?>l节->分L率,把每英寸Ҏ(gu)?6改ؓ(f)120Q解决了1400x1050分L率下字很的问题?br />
2. DHCP Client配置
我公叔R用的是DHCPQ但问题是DHCP Serverl我分配的主机名老是dhcp-12什么的Q而且?x)变动,对于装JES什么的特别不方ѝ于是我修改?br />
/etc/default/dhcpagentQ把最后一行从PARAM_REQUEST_LIST=1,3,6,12,15,28,43 改ؓ(f)PARAM_REQUEST_LIST=1,3,6,15,28,43?br />
L了选项hostname(12)。这个大家可以看注释?另外是加入新文?etc/nodename, 里面的内Ҏ(gu)自己喜欢的主机名。我用的是lap1?br />
3. 默认权限的配|?br />
pȝ默认是采用安全的Ҏ(gu)Q但我的机器上面没有什么非帔R要的数据Q而且l常需要用root用户q行ssh,telnet,ftp{,而这些系l默认都不允许?br />
没办法,手工改啦?br />
ssh:
/etc/ssh/sshd_config, 把PermitRootLogin改ؓ(f)yes。另外我曄出现不能正常启动ssh service的情c(din)原因是没有?etc/ssh下面自动生成
ssh_host_rsa_key
ssh_host_rsa_key.pub
ssh_host_dsa_key
ssh_host_dsa_key.pub
{key文gQ?最后我手工生成了这些文Ӟ解决了这个问题:(x)
Q?ssh-keygen -b 1024 -t rsa1 -f /etc/ssh/ssh_host_key -N ""
Q?ssh-keygen -b 1024 -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
Q?ssh-keygen -b 1024 -t dsa -f /etc/ssh/ssh_host_dsa_key -N ""
telnet:
单,修改文g/etc/default/loginQ把行CONSOLE=/dev/console注释掉,可以用root用户telnet上来?br />
ftp:
只要修改/etc/ftpd/ftpusersQ?把root用户注释掉就可以用root用户q行ftp了?br />
4. 默认shell的配|?
pȝ默认使用的是/sbin/shQ但我喜Ƣ用更行的bash, 于是修改/etc/passwdQ把W一行从root:x:0:0:Super-User:/:/sbin/sh 改ؓ(f)root:x:0:0:Super-User:/:/bin/bashQ重新登陆后发现默认shell成功更改。据说这个做法不是特别安全,但我q是喜欢q么做?br />
5. 打印机的配置?
在Solaris 10的JDS桌面下安装打印机比较单,只要通过启动->首选项->pȝ首选项->d/删除打印机就行了。在囑Ş界面里选择打印?>新的附加打印机或者新的网l打印机Q通过囑Ş界面可以很单配好打印机?br />
本文转自:http://gceclub.sun.com.cn/NASApp/sme/jive/thread.jsp
]]>
“我很受震惊,”Cantrill 说到Q?“q是M一个客户都可能遇到的问题,但是他们可不敢奢望让内核开发h员ؓ(f)之夜以日地工作Q编写自定义代码以弄清楚问题。我们得扑և一个更好的Ҏ(gu)?#8221;
l过两年半的紧张开发,Cantrill和他的工作组l于研究Zq个更好的方法:(x) Dtrace
DTrace是过dq中在操作系l方面最h义的革新之一:
ProbeQSolaris中分散着30,000多的位置指针Q也叫探器probesQDTrace可激zL千上万的探测器,记录所x的位|指定的数据Q如命中Q即可从该地址昄用户q程或系l内核的数据Q从而了解系l,包括Q?br />
1。Q何函数的参数
2。内核的M全局变量
3。函数调用的旉QNSQ十亿分之一U,无Q何其它PC/Unix在ns一U精度)
4。跟t堆栈,包括指明函数调用的代?
5。函数调用时q行的进E?
6。生函数调用的U程
Probe于自定义D语言E序相关联,probe表示的格式ؓ(f)Q?
provider:module:function:name
1。显C当前动态系l中的动态Dtrace探针probe:
# dtrace -l |more
ID PROVIDER MODULE FUNCTION NAME
1 dtrace BEGIN
2 dtrace END
3 dtrace ERROR
4 vminfo fasttrap fasttrap_uwrite softlock
5 vminfo fasttrap fasttrap_uread softlock
6 fbt pool pool_open entry
7 fbt pool pool_open return
8 fbt pool pool_close entry
9 fbt pool pool_close return
10 fbt pool pool_ioctl entry
11 fbt pool pool_ioctl return
12 fbt pool pool_info entry
13 fbt pool pool_info return
。。?
43545 fbt zmod z_strerror return
43546 fbt zmod z_uncompress entry
43547 fbt zmod z_uncompress return
卛_前本人V210上有43547个probe?
2。体?dtrace ?Unix ps 命o(h)Q?
如用ps看mozillaq程Q?
# ps -e |grep mozilla
2386 pts/11 0:00 mozilla
2436 pts/11 10:12 mozilla-
也可使用dtrace 通过probe探针看:(x)
# dtrace -n 'syscall::exece:return { trace(execname);}'
dtrace: description 'syscall::exece:return ' matched 1 probe
CPU ID FUNCTION:NAME
0 11082 exece:return uname
0 11082 exece:return uname
0 11082 exece:return basename
。。?
0 11082 exece:return sed
0 11082 exece:return mozilla-bin
1 11082 exece:return csh
1 11082 exece:return mozilla
。。?
2。实际dtrace看的更细Q?
如用date昄pȝ旉Q很快就l束了,无法跟踪Q体验dtrace跟踪效果Q?
% date
2005q?5?4?星期?20?9?3U?CST
# dtrace -n 'syscall::exece: {trace(timestamp)}'
ddtrace: description 'syscall::exece: ' matched 2 probes
CPU ID FUNCTION:NAME
0 11081 exece:entry 102890531281542
0 11082 exece:return 102890532181875
卛_跟踪其在W?02890531281542U秒开始读取,W?02890532181875q回l果?
3。体验Dtrace 对系l调用更多的观察Q?
如看机器忙闲状态,常用vmstat:
# vmstat 1
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr s0 s3 s1 s1 in sy cs us sy id
0 0 0 5523680 1378352 14 48 84 1 0 0 1 0 1 0 0 341 2058 883 3 1 96
0 0 0 5368296 1218688 0 23 15 0 0 0 0 0 0 0 0 336 2605 722 10 1 89
得知产生2605多系l调用,但无和简单查扑֓个进E的问题呢,试用dtrace看:(x)
# dtrace -n 'syscall::read:entry {@NUM[execname] = count();}'
ddtrace: description 'syscall::read:entry ' matched 1 probe
^C
dtfile 5
sdtperfmeter 12
soffice.bin 23
dic 23
dtterm 53
mozilla-bin 394
Xsun 545
昄发现CDE和Mozilla是生大量系l调用的E序Q看I/O分布也可Q?
如还是Mozilla:
# dtrace -n 'syscall::write:entry {@NUM[execname] = quantize(arg2);}'
...
mozilla-bin
value ------------- Distribution ------------- count
0 | 0
1 |@@@@@@@@@@@@@@@@@@@@@ 470
2 | 0
4 | 7
8 | 0
16 | 0
32 | 0
64 | 0
128 | 10
256 |@@@@@@@@ 184
512 |@@@@@@ 146
1024 |@@@ 78
2048 | 8
4096 | 1
8192 | 0
...
可观察到大量Mozilla产生的I/O?56-512字节间?
4?惛_仔细看程序内部情况?
truss不错Q?
# truss /usr/sfw/bin/mozilla
execve("/usr/bin/ksh", 0xFFBFF564, 0xFFBFF574) argc = 3
resolvepath("/usr/bin/ksh", "/usr/bin/ksh", 1023) = 12
resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
stat("/usr/bin/ksh", 0xFFBFF340) = 0
open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT
stat("/lib/libc.so.1", 0xFFBFEE70) = 0
resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
open("/lib/libc.so.1", O_RDONLY) = 3
mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 。。?
试下dtrace:
# dtrace -n 'syscall::read:return /execname =="mozilla" /{ ustack();}'
dtrace: description 'syscall::read:return ' matched 1 probe
CPU ID FUNCTION:NAME
0 10984 read:return
libc.so.1`_read+0x8
ksh`io_readbuff+0x264
ksh`0x245e4
ksh`io_readc+0x2c
ksh`0x29c54
ksh`main+0xa30
ksh`_start+0x108
0 10984 read:return
libc.so.1`_read+0x8
ksh`io_readbuff+0x264
ksh`0x245e4
ksh`io_readc+0x2c
ksh`0x28938
ksh`0x28654
...
看到n多调用,开始和q回Q够开发h员分析的?nbsp;
ȝQDtrace功能强大Q精度高Q轻量,truss有时降低pȝ30QCPU利用率。但复杂Q需对系l内核和应用熟?zhn)Q否则看不懂跟踪到的数据Q估计以后CU该开Dtrace~程板块了?/div>
]]>
You have new mail.
# /usr/X11/bin/xorgconfig
2Q显C:(x)
This program will create a basic xorg.conf file, based on menu selections
you make. This program will ask for a pathname when it is ready to write
the file.
The xorg.conf file usually resides in /etc/X11. If no xorg.conf file
is present there, Xorg will probe the system to autoconfigure itself.
You can run Xorg -configure to generate a xorg.conf file based on
the results of autoconfiguration, or let this program produce a base
xorg.conf file for your configuration and fine-tune it.
Before continuing with this program, make sure you know what video card
you have, and preferably also the chipset it uses and the amount of video
memory on your video card, as well as the specifications of your monitor.
Press enter to continue, or ctrl-c to abort.
3Q我们ENTER
First specify a mouse protocol type. Choose one from the following list:
1. Auto
2. VUID
3. SysMouse
4. MouseSystems
5. PS/2
6. Microsoft
7. Busmouse
8. IMPS/2
9. ExplorerPS/2
10. GlidePointPS/2
11. MouseManPlusPS/2
12. NetMousePS/2
13. NetScrollPS/2
14. ThinkingMousePS/2
The recommended protocol is Auto. If you have a very old mouse
or don't want OS support or auto detection, and you have a two-button
or three-button serial mouse, it is most likely of type Microsoft.
Enter a protocol number:
4Q选择鼠标的种c,q里我们?QPS2
If your mouse has only two buttons, it is recommended that you enable
Emulate3Buttons.
Please answer the following question with either 'y' or 'n'.
Do you want to enable Emulate3Buttons?
5Q要不要用鼠标的W三个键Q废话当然用
Now give the full device name that the mouse is connected to, for example
/dev/tty00. Just pressing enter will use the default, /dev/kdmouse.
Mouse device:
6Q鼠标的讑֤名,用默认的?br />
Please select one of the following keyboard types that is the better
description of your keyboard. If nothing really matches,
choose 1 (Generic 101-key PC)
1 Sun Type 6 USB
2 Sun Type 6 USB (European layout)
3 Sun Type 6 USB (Japanese layout)
4 Sun Type 6 USB (Unix layout)
5 Generic 101-key PC
6 Generic 102-key (Intl) PC
7 Generic 104-key PC
8 Generic 105-key (Intl) PC
9 Sun Type 4
10 Sun Type 4 (Canadian layout)
11 Sun Type 4 (Japanese layout)
12 Sun Type 4 (European layout)
13 Sun Type 5
14 Sun Type 5 (European layout)
15 Sun Type 5 (Japanese layout)
16 Sun Type 5 (Unix layout)
Enter a number to choose the keyboard.
7Q选择键盘的类型,现在没烂键盘了吧。?
1 U.S. English
2 U.S. English w/ ISO9995-3
3 U.S. English w/ deadkeys
4 Albanian
5 Arabic
6 Armenian
7 Azerbaijani
8 Belarusian
9 Belgian
10 Bengali
11 Bosnian
12 Brazilian
13 Bulgarian
14 Burmese
15 Canadian
16 French Canadian
17 Croatian
18 Croatian (US)
Enter a number to choose the country.
Press enter for the next page
8Q语a用第一个,US
Please enter a variant name for 'us' layout. Or just press enter
for default variant
9Q回车用默认??br />
Please answer the following question with either 'y' or 'n'.
Do you want to select additional XKB options (group switcher,
group indicator, etc.)?
10Q接下来是功能健的设|。我们选Yq去看看
1 Right Alt key switches group while pressed
2 Left Alt key switches group while pressed
3 Left Win-key switches group while pressed
4 Right Win-key switches group while pressed
5 Both Win-keys switch group while pressed
6 Right Alt key changes group
7 Left Alt key changes group
8 Caps Lock key changes group
9 Shift+CapsLock changes group
10 Both Shift keys together change group
11 Both Alt keys together change group
12 Both Ctrl keys together change group
13 Control+Shift changes group
14 Alt+Control changes group
15 Alt+Shift changes group
16 Menu key changes group
17 Left Win-key changes group
18 Right Win-key changes group
19 Left Shift key changes group
20 Right Shift key changes group
21 Left Ctrl key changes group
22 Right Ctrl key changes group
Please select the option or just press enter if none
11Q根据自q喜好随意讄吧,不过应该没h?x)动?br />
Third level choosers
1 Press Right Control to choose 3rd level
2 Press Left Alt key to choose 3rd level
3 Press Right Alt key to choose 3rd level
4 Press any of Alt keys to choose 3rd level
5 Press Menu key to choose 3rd level
6 Press any of Win-keys to choose 3rd level
7 Press Left Win-key to choose 3rd level
8 Press Right Win-key to choose 3rd level
Please select the option or just press enter if none
12Q默认回?br />
Control Key Position
1 Make CapsLock an additional Control
2 Swap Control and Caps Lock
3 Control key at left of 'A'
4 Control key at bottom left
5 Right Control key works as Right Alt
Please select the option or just press enter if none
13Q随?br />
Use keyboard LED to show alternative group
1 Num_Lock LED shows alternative group
2 Caps_Lock LED shows alternative group
3 Scroll_Lock LED shows alternative group
Please select the option or just press enter if none
14Q三个LED灯的讄
CapsLock key behavior
1 uses internal capitalization. Shift cancels Caps.
2 uses internal capitalization. Shift doesn't cancel Caps.
3 acts as Shift with locking. Shift cancels Caps.
4 acts as Shift with locking. Shift doesn't cancel Caps.
Please select the option or just press enter if none
15Q大写字母锁定键指示灯的讄
Alt/Win key behavior
1 Add the standard behavior to Menu key.
2 Alt and Meta on the Alt keys (default).
3 Meta is mapped to the Win-keys.
4 Meta is mapped to the left Win-key.
5 Super is mapped to the Win-keys (default).
6 Hyper is mapped to the Win-keys.
7 Right Alt is Compose
8 Right Win-key is Compose
9 Menu is Compose
10 Kana Lock key is locking
11 Shift with numpad keys works as in MS Windows.
12 Special keys (Ctrl+Alt+<key>) handled in a server.
Please select the option or just press enter if none
16QALT+WIN键的讄?br />
Now we want to set the specifications of the monitor. The two critical
parameters are the vertical refresh rate, which is the rate at which the
the whole screen is refreshed, and most importantly the horizontal sync rate,
which is the rate at which scanlines are displayed.
The valid range for horizontal sync and vertical sync should be documented
in the manual of your monitor. If in doubt, check the monitor database
/usr/X11/share/doc/Monitors to see if your monitor is there.
Press enter to continue, or ctrl-c to abort.
17Q检查显卡的数据库,回R
You must indicate the horizontal sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range.
It is VERY IMPORTANT that you do not specify a monitor type with a horizontal
sync range that is beyond the capabilities of your monitor. If in doubt,
choose a conservative setting.
hsync in kHz; monitor type with characteristic modes
1 31.5; Standard VGA, 640x480 @ 60 Hz
2 31.5 - 35.1; Super VGA, 800x600 @ 56 Hz
3 31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
4 31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
5 31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz
6 31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz
7 31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz
8 31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz
9 31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz
10 31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz
11 Enter your own horizontal sync range
Enter your choice (1-11):
18Q我?Q文献也是这样选的
You must indicate the vertical sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range. For interlaced modes,
the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).
1 50-70
2 50-90
3 50-100
4 40-150
5 Enter your own vertical sync range
Enter your choice:
19Q?
You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names.
The strings are free-form, spaces are allowed.
Enter an identifier for your monitor definition:
20Q用默认的吧
Now we must configure video card specific settings. At this point you can
choose to make a selection out of a database of video card definitions.
Because there can be variation in Ramdacs and clock generators even
between cards of the same model, it is not sensible to blindly copy
the settings (e.g. a Device section). For this reason, after you make a
selection, you will still be asked about the components of the card, with
the settings from the chosen database entry presented as a strong hint.
The database entries include information about the chipset, what driver to
run, the Ramdac and ClockChip, and comments that will be included in the
Device section. However, a lot of definitions only hint about what driver
to run (based on the chipset the card uses) and are untested.
If you can't find your card in the database, there's nothing to worry about.
You should only choose a database entry that is exactly the same model as
your card; choosing one that looks similar is just a bad idea (e.g. a
GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of
hardware as can be).
Do you want to look at the card database?
21Q是否要看显卡的数据库?文献E这里键入Y和YES是不一L(fng)l果Q我看一栗。?br />
0 * Generic VESA compatible -
1 * Generic VGA compatible -
2 * Unsupported VGA compatible -
3 ** 3DLabs, TI (generic) [glint] -
4 ** 3Dfx (generic) [tdfx] -
5 ** ATI (generic) [ati] -
6 ** ATI Radeon (generic) [radeon] -
7 ** ATI Rage 128 based (generic) [r128] -
8 ** Alliance Pro Motion (generic) [apm] -
9 ** Ark Logic (generic) [ark] -
10 ** Chips and Technologies (generic) [chips] -
11 ** Cirrus Logic (generic) [cirrus] -
12 ** Cyrix MediaGX (generic) [cyrix] -
13 ** DEC TGA (generic) [tga] -
14 ** Intel i740 (generic) [i740] -
15 ** Intel i810 (generic) [i810] -
16 ** Linux framebuffer (generic) [fbdev] -
17 ** Matrox Graphics (generic) [mga] -
Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.
22Q因为我在虚拟机里这|有,回R下一,如果是实体安装,p选择相应的显?br />
18 ** NVIDIA (generic) [nv] -
19 ** NeoMagic (generic) [neomagic] -
20 ** Number Nine I128 (generic) [i128] -
21 ** Rendition (generic) [rendition] -
22 ** S3 (not ViRGE or Savage) (generic) [s3] -
23 ** S3 Savage (generic) [savage] -
24 ** S3 ViRGE (generic) [s3virge] -
25 ** SiS (generic) [sis] -
26 ** Silicon Motion (generic) [siliconmotion]-
27 ** Trident (generic) [trident] -
28 ** Tseng Labs (generic) [tseng] -
29 ** VMWare guest OS (generic) [vmware] -
30 2 the Max MAXColor S3 Trio64V+ -
31 2-the-Max MAXColor 6000 ET6000
32 3DLabs Oxygen GMX PERMEDIA 2
33 928Movie S3 928
34 AGX (generic) AGX-014/15/16
35 ALG-5434(E) CL-GD5434
Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.
23Q在虚拟机里Q?9?br />
Your selected card definition:
Identifier: ** VMWare guest OS (generic) [vmware]
Chipset: -
Driver: vmware
Press enter to continue, or ctrl-c to abort.
24Q确?br />
Now you must give information about your video card. This will be used for
the "Device" section of your video card in xorg.conf.
It is probably a good idea to use the same approximate amount as that detected
by the server you intend to use. If you encounter problems that are due to the
used server not supporting the amount memory you have, specify the maximum
amount supported by the server.
How much video memory do you have on your video card:
1 256K
2 512K
3 1024K
4 2048K
5 4096K
6 8192K
7 16384K
8 32768K
9 65536K
10 131072K
11 262144K
12 Other
25Q显存,文献上说?M?M都可以,我?M
You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names (possibly from a card definition).
Your card definition is ** VMWare guest OS (generic) [vmware].
The strings are free-form, spaces are allowed.
Enter an identifier for your video card definition:
26Q给你的昑֭写描q?br />
For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:
"1280x1024" "1024x768" "800x600" "640x480" for 8-bit
"1280x1024" "1024x768" "800x600" "640x480" for 16-bit
"1280x1024" "1024x768" "800x600" "640x480" for 24-bit
Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.
1 Change the modes for 8-bit (256 colors)
2 Change the modes for 16-bit (32K/64K colors)
3 Change the modes for 24-bit (24-bit color)
4 The modes are OK, continue.
Enter your choice:
27Q选择色深。文献是16位的Q我也跟风。。?br />
Select modes from the following list:
1 "640x400"
2 "640x480"
3 "800x600"
4 "1024x768"
5 "1280x1024"
6 "320x200"
7 "320x240"
8 "400x300"
9 "1152x864"
a "1600x1200"
b "1800x1400"
c "512x384"
d "1400x1050"
Please type the digits corresponding to the modes that you want to select.
For example, 432 selects "1024x768" "800x600" "640x480", with a
default mode of 1024x768.
Which modes?
28Q分辨率的设|,可以多选,我?432
You can have a virtual screen (desktop), which is screen area that is larger
than the physical screen and which is panned by moving the mouse to the edge
of the screen. If you don't want virtual desktop at a certain resolution,
you cannot have modes listed that are larger. Each color depth can have a
differently-sized virtual screen
Please answer the following question with either 'y' or 'n'.
Do you want a virtual screen that is larger than the physical screen?
29Q设|鼠标是否可以越q虚拟桌面,一般选NQ但文献说选Y很好玩。。。。所以选Y
For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:
"1280x1024" "1024x768" "800x600" "640x480" for 8-bit
"1280x1024" "1024x768" "800x600" "640x480" for 16-bit
"1280x1024" "1024x768" "800x600" "640x480" for 24-bit
Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.
1 Change the modes for 8-bit (256 colors)
2 Change the modes for 16-bit (32K/64K colors)
3 Change the modes for 24-bit (24-bit color)
4 The modes are OK, continue.
Enter your choice:
30Q又回到原来的地方了。?认模式?br />
Please specify which color depth you want to use by default:
1 1 bit (monochrome)
2 4 bits (16 colors)
3 8 bits (256 colors)
4 16 bits (65536 colors)
5 24 bits (16 million colors)
Enter a number to choose the default depth.
31Q默认的色深?6位的Q?
I am going to write the xorg.conf file now. Make sure you don't accidently
overwrite a previously configured one.
Shall I write it to /etc/X11/xorg.conf?
32Q是否要保存配置文gQ那q用_(d)Q?br />
File has been written. Take a look at it before starting an X server. Note that
the xorg.conf file must be in one of the directories searched by the server
(e.g. /etc/X11) in order to be used. Within the server press
ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl,
alt and backspace simultaneously immediately exits the server (use if
the monitor doesn't sync for a particular mode).
For further configuration, refer to the xorg.conf(5) manual page.
33Q提COK
接下来sync;init 6重启
好大的桌面啊~~~^o^
]]>
一、前a
Vsftp(Very Secure FTP)是一U在Unix/Linux中非常安全且快速稳定的FTP服务器,目前已经被许多大型站Ҏ(gu)采用Q如ftp.redhat.com,ftp.kde.org,ftp.gnome.org.{。Vsftpd的实现有三种方式
1、匿名用户Ş式:(x)在默认安装的情况下,pȝ只提供匿名用戯?
2、本地用户Ş式:(x)?etc/passwd中的用户名ؓ(f)认证方式
3、虚拟用户Ş式:(x)支持用户名和口令保存在数据库文件或数据库服务器中。相对于FTP的本地用户Ş式来_(d)虚拟用户只是FTP服务器的专有用户Q虚拟用户只能访问FTP服务器所提供的资源,q大大增强系l本w的安全性。相对于匿名用户而言Q虚拟用户需要用户名和密码才能获取FTP服务器中的文Ӟ增加了对用户和下载的可管理性。对于需要提供下载服务,但又不希望所有h都可以匿名下载;既需要对下蝲用户q行理Q又考虑C机安全和理方便的FTP站点来说Q虚拟用h一U极好的解决Ҏ(gu)?
二、获取最新版的VsftpE序
代码:
# cd /home/xuchen
# tar xzvf vsftpd-2.0.3.tar.gz //解压~程?
# cd vsftpd-2.0.3
三、三U方式的实现
1、匿名用户Ş式实?
# vi builddefs.h \~辑builddefs.h 文gQ文件内容如下:(x)
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
以上undef的都改ؓ(f)defineQ支持tcp_wrappersQ支持PAM认证方式Q支持SSL
# make //直接在vsftpd-2.0.3里用make~译
# ls -l vsftpd
-rwxr-xr-x 1 root root 86088 Jun 6 12:29 vsftpd //可执行程序已被编译成?
创徏必要的帐P目录Q?
# useradd nobody //可能你的pȝ已经存在此帐P那就不用建立
# mkdir /usr/share/empty //可能你的pȝ已经存在此目录,那就不用建立
# mkdir /var/ftp //可能你的pȝ已经存在此目录,那就不用建立
# useradd -d /var/ftp ftp //可能你的pȝ已经存在此帐P那就不用建立
# chown root:root /var/ftp
# chmod og-w /var/ftp
误住,如果你不惌用户在本地登陆,那么你需要把他的登陆SHELL讄?sbin/nologinQ比如以上的nobody和ftp我就讄?sbin/nologin
安装vsftp配置文gQ可执行E序Qman{?
# install -m 755 vsftpd /usr/local/sbin/vsftpd-ano
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd-ano.conf
q样安装完成了Q那么我们开始进行简单的配置
# vi /etc/vsftpd-ano.conf ,如下三行加入文?
listen=YES
listen_port=21
tcp_wrappers=YES
anon_root=/var/ftp //讄匿名用户本地目录Q和ftp用户目录必须相同
listen=YES的意思是使用standalone启动vsftpdQ而不是super daemon(xinetd)控制?(vsftpd推荐使用standalone方式)
# /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf & //以后台方式启动vsftpd
注意Q每行的值都不要有空|否则启动时会(x)出现错误QD个例子,假如我在listen=YES后多了个I格Q那我启动时出现如下错误:(x)
500 OOPS: bad bool value in config file for: listen
试搭徏好的匿名用户方式
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> quit
221 Goodbye.
#
OKQ已l完成了Qvery nice.
高配置
l心的朋友可能已l看出来我们只在默认配置文g增加了四行,实CFTPq接Q也证明了vsftpd的易用性)Q那么让我们传个文g吧,呀Q!传输p|了(见图1Q?
Z么呢Q因?vsftpd 是ؓ(f)了安全需要,/var/ftp目录不能把所有的权限打开Q所以我们这时要Z个目录pubQ当然也q是需要l修攚w|文件的?
# mkdir /var/ftp/pub
# chmod -R 777 /var/ftp/pub
Z试方便Q我们先建立一个名为kill-ano的脚本,是ؓ(f)了杀掉FTPE序?
#!/bin/bash
a=`/bin/ps -A | grep vsftpd-ano | awk '{print }'`
kill -9 $a
那么现在大家看看我的匿名服务器配|文件吧
anonymous_enable=YES //允许匿名讉KQ这是匿名服务器必须?
write_enable=YES //全局配置可写
no_anon_password=YES //匿名用户login时不询问口o(h)
anon_umask=077 //匿名用户上传的文件权限是-rw----
anon_upload_enable=YES //允许匿名用户上传文g
anon_mkdir_write_enable=YES //允许匿名用户建立目录
anon_other_write_enable=YES //允许匿名用户h建立目录Q上传之外的权限Q如重命名,删除
dirmessage_enable=YES //当用者{换目?则会(x)昄该目录下?message信息
xferlog_enable=YES //记录使用者所有上传下载信?
xferlog_file=/var/log/vsftpd.log //上传下载信息记录到/var/log/vsftpd.log?
xferlog_std_format=YES //日志使用标准xferlog格式
idle_session_timeout=600 //客户端超q?00S没有动作p动被服务器踢?
data_connection_timeout=120 //数据传输时超q?20S没有动作被服务器t出
chown_uploads=YES
chown_username=daemon //上传文g的属?
ftpd_banner=Welcome to d-1701.com FTP service. //FTPƢ迎信息
anon_max_rate=80000 //q是匿名用户的下载速度?0KBytes/s
check_shell=NO //不检SHELL
现在再测试,先kill掉再启动FTPE序
# ./kill-ano
# /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf &
上传一个文件测试一下,怎么POK了吧Q下载刚上传的那个文Ӟ恩?不行Q提C?
550 Failed to open file.
传输已失败!
传输队列已完?
1 个文件传输失?
没有关系Q你记得׃讄了anon_umask=077了吗Q所以你下蝲不了Q如果你到服务器上touch 一个文Ӟ644Q,试一下,是可以被下蝲下来的,好了Q匿名服务器p到这里了?br />
本地用户形式实现
# cd /home/xuchen/vsftpd-2.0.3 //q入vsftpd-2.0.3的源代码目录
# make clean //清除~译环境
# vi builddefs.h \l箋~辑builddefs.h 文gQ文件内容如下:(x)
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
以上define VSF_BUILD_PAM行的define改ؓ(f)undefQ支持tcp_wrappersQ不支持PAM认证方式Q支持SSLQ记住啊Q如果支持了PAM认证方式Q你本地用户是不能登陆的?
# make //直接在vsftpd-2.0.3里用make~译
# ls -l vsftpd
-rwxr-xr-x 1 root root 84712 Jun 6 18:56 vsftpd //可执行程序已被编译成?br />
创徏必要的帐P目录Q?
# useradd nobody //可能你的pȝ已经存在此帐P那就不用建立
# mkdir /usr/share/empty //可能你的pȝ已经存在此目录,那就不用建立
# mkdir /var/ftp //可能你的pȝ已经存在此目录,那就不用建立
# useradd -d /var/ftp ftp //可能你的pȝ已经存在此帐P那就不用建立
# chown root:root /var/ftp
# chmod og-w /var/ftp
误住,如果你不惌用户在本地登陆,那么你需要把他的登陆SHELL讄?sbin/nologinQ比如以上的nobody和ftp我就讄?sbin/nologin
安装vsftp配置文gQ可执行E序Qman{?
# install -m 755 vsftpd /usr/local/sbin/vsftpd-loc
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd-loc.conf
q样安装完成了Q那么我们开始进行简单的配置
# vi /etc/vsftpd-loc.conf ,如下三行加入文?
listen=YES
listen_port=21
tcp_wrappers=YES //支持tcp_wrappers,限制讉K(/etc/hosts.allow,/etc/hosts.deny)
listen=YES的意思是使用standalone启动vsftpdQ而不是super daemon(xinetd)控制?(vsftpd推荐使用standalone方式)Q注意事请参看匿名用户的配|?
anonymous_enable=NO
local_enable=YES //q两w|说不允许匿名用L(fng)陆,允许本地用户登陆
# /usr/local/sbin/vsftpd-loc /etc/vsftpd-loc.conf & //以后台方式启动vsftpd
试搭徏好的匿名用户方式Q先试root用户?Q)
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/root"
ftp> quit
221 Goodbye.
我们看到root用户可以登陆到ftpQ他的登陆目录就是自qȝ?br />
再测试一个系l用P那我们先建立一个用户名叫sss?
# useradd sss
# passwd sss
Changing password for user sss.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
建立好了Q让我们开始测试吧Q!
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): sss
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/sss"
ftp> quit
221 Goodbye.
我们看到sss用户可以登陆到ftpQ他的登陆目录也是自qȝ录。哈哈,又完成了Q?br />
高配置
l心的朋友可能已l看出来如果我们不支持PAM认证方式Q那么本地用户就可以登陆Q而默认编译的vsftpd支持PAM认证方式Q所以是不支持本地用L(fng)陆的。恩Q从q点_(d)q也是vsftp安全的一个表?---止本地用户登陆?
我们登陆后进行测试,传一个文件上去,得,p|了,那下载个文g下来吧,恩,q是成功的(见图2Q,而且我们发现我们可以q入到系l根目录Q见?Q,q样很危险?
那么攚w|文件吧Qؓ(f)了测试方便,我们先徏立一个名为kill-loc的脚本,也是Z杀掉FTPE序?
#!/bin/bash
a=`/bin/ps -A | grep vsftpd-loc | awk '{print }'`
kill -9 $a
现在提供我的本地用户验证服务器配|文件吧Q在匿名里写q的注释我就不在q里写了Q?
listen=YES
listen_port=21
tcp_wrappers=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022 //本地用户文g上传后的权限?rw-r-r
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
connect_from_port_20=YES
chroot_local_user=YES //限制用户在自qȝ?
#local_root=/ftp //你可以指定所有本地用L(fng)陆后的目?如果不设|此,用户都会(x)登陆于自qȝ录,p׃前面试的结果是一L(fng)
local_max_rate=500000 //本地用户的下载速度?00KBytes/s
idle_session_timeout=600
data_connection_timeout=120
nopriv_user= nobody //讑֮服务执行者ؓ(f)nobody,vsftpd推荐使用一个权限很低的用户Q最好是没有家目?/dev/null)Q没有登陆shellQ?sbin/nologin),pȝ?x)更安?
ftpd_banner=Welcome to d-1701.com FTP service.
check_shell=NO
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.denyuser
以上三条讑֮不允许登陆的用户,用户列表存放?etc/vsftpd.denyuser?一行一个帐号如果我把xuchenq个用户加到vsftpd.denyuser里,那么登陆时会(x)出现如下错误Q?
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 Welcome to d-1701.com FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): xuchen
530 Permission denied.
Login failed.
呵呵Q有意思吧Q自己测试吧Q本地用L(fng)陆方式就介绍到这里吧Q?br />
3、虚拟用户Ş式实玎ͼdb?qing)mysql形式Q?
# cd /home/xuchen/vsftpd-2.0.3 //q入vsftpd-2.0.3的源代码目录
# make clean //清除~译环境
# vi builddefs.h \l箋~辑builddefs.h 文gQ文件内容如下:(x)
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#undef VSF_BUILD_PAM
#define VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
以上define VSF_BUILD_PAM行的undef改ؓ(f)defineQ支持tcp_wrappersQ支持PAM认证方式Q支持SSLQ和匿名用户形式是一L(fng)?
# make //直接在vsftpd-2.0.3里用make~译
# ls -l vsftpd
-rwxr-xr-x 1 root root 86088 Jun 6 22:26 vsftpd //可执行程序已被编译成?br />
创徏必要的帐P目录Q?
# useradd nobody //可能你的pȝ已经存在此帐P那就不用建立
# mkdir /usr/share/empty //可能你的pȝ已经存在此目录,那就不用建立
# mkdir /var/ftp //可能你的pȝ已经存在此目录,那就不用建立
# useradd -d /var/ftp ftp //可能你的pȝ已经存在此帐P那就不用建立
# chown root:root /var/ftp
# chmod og-w /var/ftp
误住,如果你不惌用户在本地登陆,那么你需要把他的登陆SHELL讄?sbin/nologinQ比如以上的nobody和ftp我就讄?sbin/nologin
安装vsftp配置文gQ可执行E序Qman{?
# install -m 755 vsftpd /usr/local/sbin/vsftpd-pam
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd-pam.conf
q样安装完成了Q那么我们开始进行简单的配置
对于用DB库存储用户名?qing)密码的方式来说Q?
Q?Q查看系l是否有相应软g?
# rpm –qa | grep db4
db4-devel-4.2.52-7.1
db4-4.2.52-7.1
db4-utils-4.2.52-7.1
Q?Q徏立一个logins.txt的文Ӟ单行为用户名Q双行ؓ(f)密码Q例?
# vi /home/logins.txt
xuchen
12345
Q?Q徏立数据库文gq设|文件属?
# db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db
# chmod 600 /etc/vsftpd_login.db
Q?Q徏立认证文?
# vi /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
Q?Q徏立一个虚拟用?
useradd -d /home/vsftpd -s /sbin/nologin vsftpd
ls -ld /home/vsftpd
drwx------ 3 vsftpd vsftpd 1024 Jun 6 22:55 /home/vsftpd/
Q?Q编写配|文?注意事项请参看匿名用L(fng)配置Q这里不再赘q?
# vi /etc/vsftpd-pam.conf
listen=YES
listen_port=21
tcp_wrappers=YES //支持tcp_wrappers,限制讉K(/etc/hosts.allow,/etc/hosts.deny)
listen=YES的意思是使用standalone启动vsftpdQ而不是super daemon(xinetd)控制?(vsftpd推荐使用standalone方式)
anonymous_enable=NO
local_enable=YES //PAM方式此处必须为YESQ如果不是将出现如下错误Q?
500 OOPS: vsftpd: both local and anonymous access disabled!
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=vsftpd //q两行的意思是采用虚拟用户形式
virtual_use_local_privs=YES //虚拟用户和本地用h限相?br />
pasv_enable=YES //建立资料联机采用被动方式
pasv_min_port=30000 //建立资料联机所可以使用port 范围的上界,0表示L。默认gؓ(f)0?
pasv_max_port=30999 //建立资料联机所可以使用port 范围的下界,0表示L。默认gؓ(f)0?
Q?Q启动程?
# /usr/local/sbin/vsftpd-pam /etc/vsftpd-pam.conf &
Q?Q测试连通及(qing)功能
# vi /home/vsftpd/test //建立一个文Ӟ内容如下
1234567890
# chown vsftpd.vsftpd /home/vsftpd/test
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): xuchen
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> size test
213 11
ftp> quit
221 Goodbye.
OKQ用户名为xuchen,密码?2345可以q接到FTP服务器,看不到文件列表,但可以下载已知文件名的文Ӟ不能上传文gQ非常安全吧Q!
如果我们需要用L(fng)到文Ӟ怎么办?也好?在配|文件中加入如下语句Q?
anon_world_readable_only=NO //匿名d者不能下载可阅读的档案,默认gؓ(f)YES
如果需要让用户上传文g和下载文件分开Q徏议如下这么做
# vi /home/logins.txt
xuchen
12345
upload
45678
//首先建立虚拟用户uploadQ密码ؓ(f)45678
# db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db //更新数据文g
# mkdir /home/vsftpd/upload
# vi /etc/vsftpd-pam.conf 加入如下语句
user_config_dir=/etc/vsftpd_user_conf
# mkdir /etc/vsftpd_user_conf
# vi /etc/vsftpd_user_conf/upload 文g内容如下
local_root=/home/vsftpd/upload
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
# chmod 700 /home/vsftpd/upload
# chown vsftpd.vsftpd /home/vsftpd/upload/
q样Qxuchen用户可以下蝲/home/vsftpd里的文g?qing)upload里的文gQ而upload用户可以上传和下?home/vsftpd/upload文g夹的东西Q但不能?home/vsftpd里下载文Ӟ很简单得实现了分用户上传和下?br />
对于用Mysql库存储用户名?qing)密码的方式来说Q?
是把用户名和密码放在mysql库里Q实现v来也相当?
Q?Q徏立一个库q设|相应权?
# mysql –p
mysql>create database ftpd;
mysql>use ftpd;
mysql>create table user(name char(20) binary,passwd char(20) binary);
mysql>insert into user (name,passwd) values ('test1','12345');
mysql>insert into user (name,passwd) values ('test2','54321');
mysql>grant select on ftpd.user to ftpd@localhost identified by '123456';
mysql>flush privileges; h权限讄
mysql>quit
Q?Q下载libpam-mysqlq行安装~译
下蝲地址如下Q?
http://nchc.dl.sourceforge.net/s ... am_mysql-0.5.tar.gz
假设我们把它攑֜?home/xuchen目录?
# cd /home/xuchen
# tar xzvf pam_mysql-0.5.tar.gz
# cd pam_mysql
# make
# cp pam_mysql.so /lib/security
Q?Q徏立PAM认证信息
# vi /etc/pam.d/ftp ,内容如下
auth required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
account required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
注意Q?
crypt= n
crypt=0: 明文密码
crypt=1: 使用crpyt()函数(对应SQL数据里的encrypt()Qencrypt()随机产生salt)
crypt=2: 使用MYSQL中的password()函数加密
crypt=3Q表CZ用md5的散列方?br />
Q?Q徏立本地虚拟用?
# useradd -d /home/ftpd -s /sbin/nologin ftpd
Q?Q下面就差修改vsftpd.conf文g了,我把我的提供l大家参考吧Q)
# vi /etc/vsftpd-pam1.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
chroot_local_user=YES
Q?Q? /usr/local/sbin/vsftpd-pam /etc/vsftpd-pam1.conf & //以后台方式启?
Q?Q测试连?
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): test1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> quit
221 Goodbye.
看,成功了!Q这样就实现了mysql的认证方式,很简单吧Q?
guest_enable=YES
guest_username=ftpd
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
anon_world_readable_only=NO
virtual_use_local_privs=YES
#user_config_dir=/etc/vsftpd_user_conf
可以看出Q和前面的用db库来验证没有多大区别Q其实就是一个东西,一个用mysql来验证,一个用db库,我个人比较們于用db库来验证Q在q个环境下,相对于Mysql来说Q安全系数更高一炏V?br />
4、ؓ(f)FTP增加盘配额Q从而避免恶意用L(fng)垃圾数据塞满你的盘
我首先要说的是这个功能是pȝ自带的,而不是vsftp 的功能之一Q千万别搞了。好了,我们先假设我们的pȝ用户ftpd的主目录?home/ftpdQ它是徏立在/home分区?那么如果我们要对ftpd用户q行盘限额Q那我们需要修?etc/fstab中根分区的记录,?home分区的第4个字D|成defaults,usrquotaQ如?
LABEL=/home /home ext3 defaults,usrquota 1 2
# reboot //重新启动pȝ使设|生?
也可以用
# mount -o remount /dev/sda6 ///dev/sda6的挂接点是/home,q样可以不用启动pȝ?
q里我还要说明一下,如果我们对一个组q行配额,那我们需要增加参数grpquotaQ例?
LABEL=/home /home ext3 defaults,grpquota 1 2
也可?
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
你想怎么限制都可以,自己l合参数吧?
# quotacheck -avu
说明Qa-自动开启挂载文件系l的配额Qv-昄信息Qu-启用用户配额or g-启用l配?
# edquota ftpd //为用户ftpd讄盘配额
OR
# edquota -g grp //为组grp讄盘配额
pȝ?x)自动打开配额文g,如下:
Disk quotas for user ftpd (uid 502):
Filesystem blocks soft hard inodes soft hard
/dev/sda6 424 0 0 13 0 0
W一列是启用了配额的文gpȝ的名U。第二列昄了用户当前用的块数Q单位ؓ(f)KB。随后的两列用来讄用户在该文gpȝ上的软硬块限度。inodes 列显CZ用户当前使用的i节点数量。最后两列用来设|用户在该文件系l上的Yi节点限度.限是用hl群可以使用的磁盘空间的l对最大倹{达C该限度后Q磁盘空间就不能再被用户或组用了。Y限定义可被用的最大磁盘空间量。和限不同的是QY限可以在一D|期内被超q。这D|期被UCؓ(f)q渡期(grace periodQ,默认七天的超。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。如果以上g的Q何一个被讄?0Q那个限度就不会(x)被设|。我讄了硬块限度ؓ(f)1KBQ是Z试方便?
# quotaon -avu //打开盘配额监控q程Qu是用户g是组Q这里我没设|g参数
要校验用L(fng)配额是否被设|,我们可以使用以下命o(h)Q?
# quota ftpd
Disk quotas for user ftpd (uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda6 424* 0 1 13 0 0
# edquota –tQ?gQ来讄q渡期(grace periodQ?//当然只针对Y限制而言
和另一?edquota 命o(h)怼Q这个命令也?x)在文本~辑器中打开当前的文件系l配额:(x)
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sda6 7days 7days
按你的需要修改后存盘退?
用以下命令显C磁盘配额用状?
# repquota -a ?repquota /dev/sda6Q用户配额)
# repquota -g -a ?repquota -a /dev/sda6 (l的配额)
如果一切按照你的意思实施了Q那么我们就q行试了!如下?
我们传了一?gt;1k的文Ӟ没有成功Q这h们就成功的ؓ(f)用户ftpd增添了磁盘配额,要是哪一天你不想加磁盘配额了Q怎么办?参看如下命o(h)Q?
取消某个文gpȝ的配额限?
#quotaoff -vug /dev/sda6 //删除home分区的磁盘限?
#删除/etc/fstab中设|配额的部分
修改软配额的最大超时?
注意Q?
/Q?boot/,/proc,/mnt/cdrom{不要用配额,没用。而且盘配额不适合F(tun)AT和FAT32pȝ?
以后当新讄了某个用L(fng)配额Q可以用如下命令,马上生效?
# quotacheck -auvgm --是不试重新挂蝲文gpȝ
备注Q?
1、vsftpd配置参数详细整理
#接受匿名用户
anonymous_enable=YES
#匿名用户login时不询问口o(h)
no_anon_password=YES
#匿名用户ȝ?
anon_root=(none)
#接受本地用户
local_enable=YES
#本地用户ȝ?
local_root=(none)
#如果匿名用户需要密?那么使用banned_email_file里面的电(sh)子邮件地址的用户不能登?
deny_email_enable=YES
#仅在没有pam验证版本时有?是否查用h一个有效的shell来登?
check_shell=YES
#若启用此选项,userlist_deny选项才被启动
userlist_enable=YES
#若ؓ(f)YES,则userlist_file中的用户不能登?为NO则只有userlist_file的用户可以登?
userlist_deny=NO
#如果和chroot_local_user一起开?那么用户锁定的目录来?etc/passwd每个用户指定的目?q个不是很清?很哪位熟(zhn)的指点一?
passwd_chroot_enable=NO
#定义匿名d的用者名U。默认gؓ(f)ftp?
ftp_username=FTP
#################用户权限控制###############
#可以上传(全局控制).
write_enable=YES
#本地用户上传文g的umask
local_umask=022
#上传文g的权限配合umask使用
#file_open_mode=0666
#匿名用户可以上传
anon_upload_enable=NO
#匿名用户可以建目?
anon_mkdir_write_enable=NO
匿名用户其它的写权利(更改权限?)
anon_other_write_enable=NO
如果设ؓ(f)YESQ匿名登入者会(x)被允怸载可阅读的档案。默认gؓ(f)YES?
anon_world_readable_only=YES
#如果开?那么所有非匿名登陆的用户名都会(x)被切换成guest_username指定的用户名
#guest_enable=NO
所有匿名上传的文g的所属用户将?x)被更改成chown_username
chown_uploads=YES
匿名上传文g所属用户名
chown_username=lightwiter
#如果启动q项功能Q则所有列在chroot_list_file之中的用者不能更Ҏ(gu)目录
chroot_list_enable=YES
#允许使用"async ABOR"命o(h),一般不?Ҏ(gu)出问?
async_abor_enable=YES
控是否可用ASCII 模式上传。默认gؓ(f)NO?
ascii_upload_enable=YES
#控是否可用ASCII 模式下蝲。默认gؓ(f)NO?
ascii_download_enable=YES
#q个选项必须指定一个空的数据夹且Q何登入者都不能有写入的权限Q当vsftpd 不需要file system 的权限时Q就?x)将使用者限制在此数据夹中。默认gؓ(f)/usr/share/empty
secure_chroot_dir=/usr/share/empty
###################时讄##################
#I闲q接时
idle_session_timeout=600
#数据传输时
data_connection_timeout=120
#PAVSh时
ACCEPT_TIMEOUT=60
#PROT模式q接时
connect_timeout=60
################服务器功能选项###############
#开启日记功?
xferlog_enable=YES
#使用标准格式
xferlog_std_format=YES
#当xferlog_std_format关闭且本选项开启时,记录所有ftph和回?当调试比较有?
#log_ftp_protocol=NO
#允许使用pasv模式
pasv_enable=YES
#关闭安全?心呀.
#pasv_promiscuous+NO
#允许使用port模式
#port_enable=YES
#关闭安全?
#prot_promiscuous
#开启tcp_wrappers支持
tcp_wrappers=YES
#定义PAM 所使用的名Uͼ预设为vsftpd?
pam_service_name=vsftpd
#当服务器q行于最底层时用的用户?
nopriv_user=nobody
#使vsftpd在pasv命o(h)回复时蟩转到指定的IP地址.(服务器联接蟩?)
pasv_address=(none)
#################服务器性能选项##############
#是否能用ls -R命o(h)以防止浪费大量的服务器资?
#ls_recurse_enable=YES
#是否使用单进E模?
#one_process_model
#l定到l(f)isten_port指定的端?既然都绑定了也就是每旉开着?是那个什么standalone模式
listen=YES
#当用者登入后使用ls -al 之类的指令查询该档案的管理权Ӟ预设?x)出现拥有者的UIDQ而不是该档案拥有者的名称。若是希望出现拥有者的名称Q则此功能开启?
text_userdb_names=NO
#昄目录清单时是用本地时间还是GMT旉,可以通过mdtm命o(h)来达CL(fng)效果
use_localtime=NO
#试q_优化
#use_sendfile=YES
################信息c设|?###############
#login时显C欢q信?如果讄了banner_file则此讄无效
ftpd_banner=Ƣ迎来到湖南三辰Fake-Ta FTP |站.
#允许为目录配|显CZ?昄每个目录下面的message_file文g的内?
dirmessage_enable=YES
#昄?x)话状态信??
#setproctitle_enable=YES
############## 文g定义 ##################
#定义不能更改用户ȝ录的文g
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
#定义限制/允许用户d的文?
userlist_file=/etc/vsftpd/vsftpd.user_list
#定义d信息文g的位|?
banner_file=/etc/vsftpd/banner
#止使用的匿名用L(fng)陆时作ؓ(f)密码的电(sh)子邮件地址
banned_email_file=/etc/vsftpd.banned_emails
#日志文g位置
xferlog_file=/var/log/vsftpd.log
#目录信息文g
message_file=.message
############## 目录定义 #################
#定义用户配置文g的目?
user_config_dir=/etc/vsftpd/userconf
#定义本地用户登陆的根目录,注意定义根目录可以是相对路径也可以是l对路径.相对路径是针对用户家目录来说?
local_root=webdisk #此项讄每个用户登陆后其根目录ؓ(f)/home/username/webdisk
#匿名用户登陆后的根目?
anon_root=/var/ftp
#############用户q接选项#################
#可接受的最大client数目
max_clients=100
#每个ip的最大client数目
max_per_ip=5
#使用标准?0端口来连接ftp
connect_from_port_20=YES
#l定到某个IP,其它IP不能讉K
listen_address=192.168.0.2
#l定到某个端?
#listen_port=2121
#数据传输端口
#ftp_data_port=2020
#pasvq接模式时可以用port 范围的上界,0 表示L。默认gؓ(f)0?
pasv_max_port=0
#pasvq接模式时可以用port 范围的下界,0 表示L。默认gؓ(f)0?
pasv_min_port=0
##############数据传输选项#################
#匿名用户的传输比?b/s)
anon_max_rate=51200
#本地用户的传输比?b/s)
local_max_rate=5120000
########################################
别外,如果要对每个用户q行单独的控?只需要在user_config_dir中徏立username文g,内容为数据传输和用户权利里面讄个h的合适的选项,用户自定义文件同样适合用pam支持的虚拟用?
? FTP 数字代码的意?
110 重新启动标记应答?
120 服务在多久时间内ready?
125 数据链\埠开启,准备传送?
150 文g状态正常,开启数据连接端口?
200 命o(h)执行成功?
202 命o(h)执行p|?
211 pȝ状态或是系l求助响应?
212 目录的状态?
213 文g的状态?
214 求助的讯息?
215 名称pȝcd?
220 新的联机服务ready?
221 服务的控制连接埠关闭Q可以注销?
225 数据q结开启,但无传输动作?
226 关闭数据q接端口Q请求的文g操作成功?
227 q入passive mode?
230 使用者登入?
250 h的文件操作完成?
257 昄目前的\径名U?
331 用户名称正确Q需要密码?
332 d旉要̎号信息?
350 h的操作需要进一部的命o(h)?
421 无法提供服务Q关闭控制连l?
425 无法开启数据链路?
426 关闭联机Q终止传输?
450 h的操作未执行?
451 命o(h)l止Q有本地的错误?
452 未执行命令:(x)盘I间不?
500 格式错误Q无法识别命令?
501 参数语法错误?
502 命o(h)执行p|?
503 命o(h)序错误?
504 命o(h)所接的参数不正?
530 未登入?
532 储存文g需要̎L(fng)入?
550 未执行请求的操作?
551 h的命令终止,cd未知?
552 h的文件终止,储存位溢出?
553 未执行请求的的命令,名称不正?
2、VSFTPD官方资料译版(不完整版Q?--摘自中国Linux公社
译了部分VSFTPD的官方资料?
有些知道是什么意思,但难于翻译。有些涉?qing)专业的知识Q我自己也不懂,只好按字面翻译。有些我自己看不懂,只好量译?
如果看了其中一部分觉得p涂Q请参阅官方文挡?br />
安装?
===============
q个文g详细介绍了如何从VSFTPD?tar.gz分发包开始,建立和安装ƈq行VSFTPD?
1Q徏立VSFTPD
先进入解?tar.gz文g后生的目录内。如下:(x)
cd vsftpd-2.0.1
~辑"builddefs.h"以操作compile-time讑֮。(tcp_wrappers build,{)
输入make,回RQ如果它不工作请发邮仉知?nbsp; .
q将产生一个二q制文gQ你可以验证一下。如下:(x)
[chris@localhost vsftpd]$ ls -l vsftpd
-rwxrwxr-x 1 chris chris 61748 Sep 27 00:26 vsftpd
2Q满VSFTPD安装所需的一些条?
VSFTPD默认讄需要一?nobody"用户Q如果这个用户不存在Q那么添加它。如下:(x)
[root@localhost root]# useradd nobody
useradd: user nobody exists
VSFTPD默认讄需要一个空目录Q?usr/share/empty.增加q个目录Q如果它q不存在的话。如下:(x)
[root@localhost root]# mkdir /usr/share/empty/
mkdir: cannot create directory `/usr/share/empty': File exists
如果容许匿名用户Qanonymous)Q那么你需要一?ftp"用户和其home目录Q这个home目录不属?#8220;ftp”用户Q而且“ftp"用户也对其没有写权限Q在你的pȝ中存在?
以下命o(h)用来创徏一?ftp"用户Q如果它q不存在的话?
[root@localhost root]# mkdir /var/ftp/
[root@localhost root]# useradd -d /var/ftp ftp
Q即使你?ftp"用户已经存在Q完成以下这两步也是很有好处的:(x)Q?
[root@localhost root]# chown root.root /var/ftp
[root@localhost root]# chmod og-w /var/ftp
3Q安装VSFTPD的配|、执行和帮助文g?
输入"make install"后会(x)二q制文g和帮助文件拷贝到适当的目录?
你也可以手工拯q些文gQ?
cp vsftpd /usr/local/sbin/vsftpd
cp vsftpd.conf.5 /usr/local/man/man5
cp vsftpd.8 /usr/local/man/man8
"make install"不会(x)拯默认的配|文Ӟ所以徏议你手工拯Q?
cp vsftpd.conf /etc
daidong注:(x)Ҏ(gu)你系l版本的不同Q也可能?cp vsftpd.conf /etc/vsftpd
4)试 Q无inetd影响Q?
VSFTPD能运行在独立模式Qstandalone)或者通过inetd(xinetd)来启动?
你能通过inetd来运行vsftpd以更好地控制它。但我们在首ơ运行时不这么做Q以便检查系l是否现在配|正常?
~辑/etc/vsftpd.confQdaidong注:(x)也可能是/etc/vsftpd/vsftpd.conf)Qƈ在最下面加入以下q一行:(x)
listen=YES
q将告诉VSFTPD不要从inetd启动?
OKQ现在试着启动FTP?
以ROOTd?
定你没有运行其他FTP服务Q否则VSFTPD不能占用FTP所需?1端口Q?
q行那个二进制文Ӟ如下Q?
[root@localhost root]# /usr/local/sbin/vsftpd &
[1] 2104
如果一切正常,那么你将q上FTP服务器,如下Q?
[chris@localhost chris]$ ftp localhost
Connected to localhost (127.0.0.1).
220 (vsFTPd 1.1.1)
Name (localhost:chris): ftp
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,229,133)
150 Here comes the directory listing.
d--x--x--x 2 0 0 4096 Jan 14 2002 bin
d--x--x--x 2 0 0 4096 Apr 21 20:52 etc
drwxr-xr-x 2 0 0 4096 Apr 21 20:52 lib
drwxr-sr-x 2 0 50 4096 Jul 26 22:58 pub
226 Directory send OK.
ftp>
5Q从inetd或者类似方式启动(官方推荐使用standalone方式Q?
你也许想通过inetd或者类似方式启动VSFTPDQ因能给你更多的感受。例如xinetd有很多的设|?
Q注意:(x)VSFTPD的内在机制屏蔽了xinetd的大多数的有用的讄Q?
如果使用标准?inetd",你需要编?etc/inetd.conf,在其中加入以下一行:(x)
ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd
Q确定你删除或者注释掉一些已存在的FTP服务配置行。如果你没有安装tcp_wrappers,或者不想用它们,那么请去?usr/sbin/tcpd part).
inetd需要指定ƈ重新载入它的配置文gQ?
kill -SIGHUP `pidof inetd`
如果你想使用"xinetd",请参阅我们提供的范例 /EXAMPLE/INTERNET_SITE/README. 而其他范例文件将告诉你如何调配出更强大的xinetd功能?
6Qؓ(f)本地d配置PAM文gQ可选)
如果你在一台激zMPAM的设备上q行VSFTPDQ你需要提供一?/etc/pam.d/ftp 文g。否则非匿名用户无法登录服务器?
Q注Q如果你的PAM版本比较老,那么q个文g也许?/etc/pam.conf).
做ؓ(f)一个标准设|,你可以拷贝一个已提供的范例文Ӟ如下Q?
cp RedHat/vsftpd.pam /etc/pam.d/ftp
7Q自定义你的配置文g
完成以上的配|后Q徏议你安装一个配|文件。默认的配置文g位置?etc/vsftpd.conf. 在VSFTPD软g分发包内有一个范例配|文件?
你可以拷贝其?etc/vsftpd.conf以做q一步修攏V?
cp vsftpd.conf /etc
Qdaidong注:(x)也可能是 cp vsftpd.conf /etc/vsftpd ).
q个默认配置即不容许本地d也不容许匿名用户上传Q也怽希望更改q个配置?br />
其它
===================
试q_ Q已通过Q?
-行的,功能完善的^台都能测试通过。在以下q_的较新版本,VSFTPD工作得很好。在其大部分较早的版本下Q也q行正常?
- RedHat Linux
- RedHat Enterprise Linux
- Solaris / GNU tools (Solaris 8 or newer)
- SuSE Linux
- Debian Linux
- OpenBSD
- FreeBSD
- NetBSD
- HP-UX / GNU tools
- IRIX / GNU tools
- Mac OS X (note; older versions have setgroups() problem. 10.3.4 reported OK)
虚拟用户1
=============
q个例子C了如何ؓ(f)虚拟用户讄VSFTPD/PAM?
虚拟用户是一个在pȝ中ƈ不作Z个登录实体而存在的用户。用虚拟用h使用真实的用h安全Q因个̎号只能用于FTP服务器?
虚拟用户l常用来提供l不大可信Q的用戯问某些资源,而这些资源通常是其他普通用户不能访问的?
1Q创拟用h据库
我们用pam_userdb来认证虚拟用戗这需要提供一?#8220;db"格式Q一U通用数据库格式)的用户名/密码文g?
创徏一?db"格式的文Ӟ首先要创Z个标准文本文Ӟq把用户名,密码以竖直排列方式输入。如logins.txtQ?
tom
foo
fired
bar
q个例子?tom用户的密码是foo.fired用户的密码是bar.
以ROOTdQ创Z个数据库文gQ如下:(x)
db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
Q这要求berkeley dbE序已经安装Q?
(注:(x)一些系l也许安装了多个版本?db",所以某些情况下你可能?db3_load"才是正确的。对于一?Debianpȝ是q样?
关键在于要让pam_userdb怿它的d数据库是哪一个db版本所产生Q一般都是db3Q尽你的系l里可能安装的是db4).Q?
q将创徏/etc/vsftpd_login.db文g。显Ӟ你希望设定这个文件的权限Q?
chmod 600 /etc/vsftpd_login.db
2Q用你的新数据库创徏一个PAM文g
请参考范例vsftpd.pamQ它包含2行:(x)
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
q是告诉PAM用新的数据库去验证用戗把q个PAM文g拯到PAM目录Q一般是/etc/pam.d
cp vsftpd.pam /etc/pam.d/ftp
3)拟用戯|home目录
useradd -d /home/ftpsite virtual
ls -ld /home/ftpsite
(which should give):
drwx------ 3 virtual virtual 4096 Jul 30 00:39 /home/ftpsite
我们已经创徏了一个名?virtual"的用Phome目录?/home/ftpsite".
我们拯一些东西到q个下蝲目录Q?
cp /etc/hosts /home/ftpsite
chown virtual.virtual /home/ftpsite/hosts
4Q创Z的vsftpd.conf配置文g
请参考这个目录下的例子。让我们一行行地看一看这些配|:(x)
anonymous_enable=NO
local_enable=YES
安全赯Q屏蔽了匿名用户Q只启用了非匿名用户Q即虚拟用户使用的̎P
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
Z安全L(fng)认这几个配置Q这关闭写的权限?
chroot_local_user=YES
q将把虚拟用户锁定在我们在以上设|的/home/ftpsite目录内?
guest_enable=YES
guest_username=virtual
guest_enable非常重要-它激zM虚拟用户Q而guest_username说明所有的虚拟用户都对应我们在上面讄的真实用P(x)“virtual".
q同时确定了虚拟用户在文件系l中的位|,也就是说Q虚拟用L(fng)home目录?virtual"用户的home目录Q?home/ftpsite?
listen=YES
listen_port=10021
q让VSFTPD以独立模?standalone)q行Q而不是从inetd方式启动。也是_(d)你运行VSFTPD可执行文件就启动了FTP服务?
同时也让VSFTPD启用非标准端?0021来监听F(xin)TPhQF(tun)TP一般?1端口Q?
pasv_min_port=30000
pasv_max_port=30999
q设定了被动模式的FTPh端口。当你配|了一个防火墙的时候,q个配置很好用?br />
拯范例配置文g?etc
cp vsftpd.conf /etc/
(daidong注:(x)也可能是/etc/vsftpd)
5)启动VSFTPD
到VSFTPD二进制文件所在的目录Q输入:(x)
./vsftpd
如果一切正常,q个命o(h)生效。否则,你将?x)看C些错误信息的反馈?
6Q测?
启动另一个会(x)话。(或者ctrl-zQ再输入"bg",让VSFTPD在后台运行)?
q是一个FTP?x)话的例子?x)
ftp localhost 10021
Connected to localhost (127.0.0.1).
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
Name (localhost:chris): tom
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (127,0,0,1,117,135)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp> size hosts
213 147
ftp>
注释Q?
密码?foo"
出现”failed to open directory“的话Q别担心。这是因?home/ftpsite目录不容许被L览?
Q我们可以更改anon_world_readable_only=NO以消除告警,但ؓ(f)了安全,q是保留q个配置Q?
我们能通过size命o(h)看到我们已经讉K了被我们拯到这里的"hosts"文g?
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=10021
pasv_min_port=30000
pasv_max_port=30999
虚拟用户2
===============
q个例子演C如何扩?#8220;VIRTUAL_USERS”那个范例Q从而实现更复杂一点的配置?
让我们假定我们需?U不同的虚拟用户Q一U只能浏览ƈ下蝲资源Q另一U能上传文gq浏览站内资源?
要激z这个设|,我们用VSFTPD的强大的“单个用户配置”功能Q是V1.1.0后出现的新功能)?
在前一个虚拟用戯例中Q我们创Z2个用?tom和fred.
我们实现fred有写权限以上传新文gQ同时tom只能下蝲文g?
]]>
匿名服务器的q接Q独立的服务器)
?etc/vsftpd/vsftpd.conf配置文g中添加如下几:(x)
anonymous_enable=yes (允许匿名登陆)
dirmessage_enable=yes Q切换目录时Q显C目录下.message的内容)
local_umask=022 (FTP上本地的文g权限Q默认是077)
connect_form_port_20=yes Q启用FTP数据端口的数据连接)*
xferlog_enable=yes Q激zM传和下传的日志)
xferlog_std_format=yes (使用标准的日志格?
ftpd_banner=XXXXX Q欢q信息)
pam_service_name=vsftpd Q验证方式)*
listen=yes Q独立的VSFTPD服务器)*
功能Q只能连接FTP服务器,不能上传和下?br />
注:(x)其中所有和日志Ƣ迎信息相关q的都是可选项,打了星号的无Z么帐户都要添加,是属于FTP的基本选项
开启匿名FTP服务器上传权?br /> 在配|文件中d以下的信息即可:(x)
Anon_upload_enable=yes (开放上传权?
Anon_mkdir_write_enable=yes Q可创徏目录的同时可以在此目录中上传文gQ?br />
Write_enable=yes (开放本地用户写的权?
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)
开启匿名服务器下传的权?br />
在配|文件中d如下信息卛_Q?/p>
Anon_world_readable_only=no
注:(x)要注意文件夹的属性,匿名帐户是其它(otherQ用戯开启它的读写执行的权限
QRQ读-----下传 QWQ写----上传 QXQ执?---如果不开FTP的目录都q不?
普通用户FTP服务器的q接Q独立服务器Q?br /> 在配|文件中d如下信息卛_Q?/p>
Local_enble=yes Q本地帐戯够登陆)
Write_enable=no Q本地帐L(fng)陆后无权删除和修Ҏ(gu)Ӟ
功能Q可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:(x)在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传
用户登陆限制q其它的目录Q只能进它的ȝ?br /> 讄所有的本地用户都执行chroot
Chroot_local_user=yes Q本地所有帐户都只能在自家目录)
讄指定用户执行chroot
Chroot_list_enable=yes Q文件中的名单可以调用)
Chroot_list_file=/L指定的\?vsftpd.chroot_list
注意Qvsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号q接在文g中加帐号卛_
限制本地用户讉KFTP
Userlist_enable=yes (用userlistlai 来限制用戯?
Userlist_deny=no (名单中的Z允许讉K)
Userlist_file=/指定文g存放的\? Q文件放|的路径Q?br />
注:(x)开启userlist_enable=yes匿名帐号不能登陆
安全选项
Idle_session_timeout=600(U? Q用户会(x)话空闲后10分钟Q?br />
Data_connection_timeout=120Q秒Q?Q将数据q接I闲2分钟断)
Accept_timeout=60Q秒Q?Q将客户端空?分钟后断Q?br />
Connect_timeout=60Q秒Q?Q中?分钟后又重新q接Q?br />
Local_max_rate=50000QbiteQ?Q本地用户传输率50KQ?br />
Anon_max_rate=30000QbiteQ?Q匿名用户传输率30KQ?br />
Pasv_min_port=50000 Q将客户端的数据q接端口改在
Pasv_max_port=60000 50000?0000之间Q?br />
Max_clients=200 QF(tun)TP的最大连接数Q?br />
Max_per_ip=4 Q每IP的最大连接数Q?br />
Listen_port=5555 Q从5555端口q行数据q接Q?br />
查看谁登陆了FTP,q杀d的进E?br />
ps –xf |grep ftp
kill q程?/p>
vsFTP服务器的配置
VSFTPD的高手篇
版权声明Q可以Q意{载,转蝲时请务必以超链接形式标明文章原始出处和作者信息及(qing)本声?
[原文出处 http://www.5ilinux.com/vsftp02.html]
我可不是高手Q!Q^_^我只不过是个菜鸟Q尽我的能力写出了我q个菜鸟觉得的高手篇Q所以有什么错误请大家指正哦!Q!
环境Qlinux as 3.0 + vsftpd -1.2.0-4的系l架构,是在独立服务器下的哦Q讨厌XINETD^_^
配置本地l访问的FTP
首先创徏用户l?test和FTP的主目录
groupadd test
mkdir /tmp/test
然后创徏用户
useradd -G test –d /tmp/test –M usr1
注:(x)GQ用h在的l?dQ表C创建用L(fng)自己目录的位|给予指?
MQ不建立默认的自家目录,也就是说?home下没有自q目录
useradd –G test –d /tmp/test –M usr2
接着改变文g夹的属主和权?
chown usr1.test /tmp/test ----q表C把/tmp/test的属d为usr1
chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什么权限都没有
q个实验的目的就是usr1有上传、删除和下蝲的权?
而usr2只有下蝲的权限没有上传和删除的权?
当然啦大家别忘了我们的主配置文gvsftpd.conf
要确定local_enable=yes、write_enable=yes、chroot_local_usr=yesq三个选项是有的哦Q?
配置独立FTP的服务器的非端口标准模式q行数据q接
q个非常Ҏ(gu)Q在VSFTPD。CONF中添?
Listen_port=33333
可以了啦!
配置单独的虚拟FTPQ用虚拟FTP用户Qƈ使徏立的四个帐户中有不同的权?br />
Q两个有ȝ录的权限Q一个有览、上传、下载的权限Q一个有览、下载、删除和Ҏ(gu)件名的权限)
AQ配|网?br /> W一块网卡地址?0.2.3.4 掩码?55.255.0.0
ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up
BQ写?etc/sysconfig中(Z重v后IP地址不会(x)丢失Q?br />
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0:1
vi ifcfg-eth0:1在其中修改内容如?br />
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退?br />
CQ进入vsftpd.conf所在的文g?br />
cp vsftpd.conf vsftpd2.conf
修改vsftpd.confd以下信息
Listen_address=10.2.3.4
修改vsftpd2.confd以下信息
Listen_address=211.131.4.253
Ftpd_banner=this is a virtual ftp test
到此虚拟的FTP服务器徏立好?
DQ徏立logins.txt
vi /tmp/logins.txt
d入下信息Q?
longlei------------用户?br />
longlei------------密码
zhangweibo
zhangweibo
jinhui
jinhui
lxp
lxp
格式要按照我的来哦,一个用户名Q一个密码啦
EQ徏立访问者的口o(h)库文?然后修改其权?br />
db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db
FQ进?etc/pam.d/中创建ftp.vu
在此文g中添加如下信?
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
GQ在/var/ftp/创徏目录q改变其属性和它的属主
useradd -d /var/ftp/test qiang
chmod 700 /var/ftp/test
在目录中dtest_file试文g
HQ进入vsftpd2.conf修改其中的信?br />
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----------L(fng)虚拟用户
Guest_username=qiang------虚拟用hؓ(f)本地用户
Listen_port=5555
Max_client=10
Max_per_ip=1
Ftpd_banner=this is a virtual server and users
Pam_service_name=ftp.vu
注:(x)在主配置文g中给的权限越低,在后面分用户理的时候对拥护的权限划分的I间p大,因ؓ(f)主配|文件最高的限制服务先读主配|文Ӟ然后再读用户的配|文?
重v服务。到此虚拟USER徏好了
IQ在vsftpd.comf所在的目录中创建virtaul文g目录q在文g目录中创Z你用户名命名的配|文?br />
Longlei zhangweibo jinhui lxp
在longlei中添加:(x)
Anon_world_readable_only=no
在lxp中添?
Anon_world_readable_only=no
q样此两个用户就有了览目录的权限了
在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
此用户就有了上传、下载、删除文件目录、修Ҏ(gu)件名和浏览的权限
JQ修改vsftpd2.conf
加入user_config_dir=/vsftpd.conf所在的目录/virtual
重v服务器就搞定?
vsftpd.conf中的所有配|信?/p>
vsftpd.conf的参敎ͼ(x) Anonymous_enable=yes 允许匿名登陆
Dirmessage_enable=yes 切换目录Ӟ昄目录?message的内?nbsp;
Local_umask=022 FTP上本地的文g权限Q默认是077
Connect_form_port_20=yes 启用FTP数据端口的数据连?*
Xferlog_enable=yes ȀzM传和下传的日?nbsp;
Xferlog_std_format=yes 使用标准的日志格?nbsp;
Ftpd_banner=XXXXX Ƣ迎信息
Pam_service_name=vsftpd 验证方式 *
Listen=yes 独立的VSFTPD服务?*
Anon_upload_enable=yes 开放上传权?nbsp;
Anon_mkdir_write_enable=yes 可创建目录的同时可以在此目录中上传文?nbsp;
Write_enable=yes 开放本地用户写的权?nbsp;
Anon_other_write_enable=yes 匿名帐号可以有删除的权限
Anon_world_readable_only=no 攑ּ匿名用户览权限
Ascii_upload_enable=yes 启用上传的ASCII传输方式
Ascii_download_enable=yes 启用下蝲的ASCII传输方式
Banner_file=/var/vsftpd_banner_file 用户q接后欢q信息用的是此文g中的相关信息
Idle_session_timeout=600(U? 用户?x)话I闲?0分钟
Data_connection_timeout=120Q秒Q?数据连接空?分钟?nbsp;
Accept_timeout=60Q秒Q?客L(fng)I闲1分钟后断
Connect_timeout=60Q秒Q?中断1分钟后又重新q接
Local_max_rate=50000QbiteQ?本地用户传输?0K
Anon_max_rate=30000QbiteQ?匿名用户传输?0K
Pasv_min_port=50000 客L(fng)的数据连接端口改?nbsp;
Pasv_max_port=60000 50000?0000之间
Max_clients=200 FTP的最大连接数
Max_per_ip=4 每IP的最大连接数
Listen_port=5555 ?555端口q行数据q接
Local_enble=yes 本地帐户能够登陆
Write_enable=no 本地帐户登陆后无权删除和修改文g
下面q是一l?nbsp;
Chroot_local_user=yes 本地所有帐户都只能在自家目?nbsp;
Chroot_list_enable=yes 文g中的名单可以调用
Chroot_list_file=/L指定的\?vsftpd.chroot_list 前提是chroot_local_user=no
q又是一l?nbsp;
Userlist_enable=yes 在指定的文g中的用户不可以访?nbsp;
Userlist_deny=yes
Userlist_file=/指定的\?vsftpd.user_list
又开始单的了
Banner_fail=/路径/文g?q接p|时显C文件中的内?nbsp;
Ls_recurse_enable=no
Async_abor_enable=yes
one_process_model=yes
Listen_address=10.2.2.2 虚拟服务绑定到某端?nbsp;
Guest_enable=yes 虚拟用户可以登陆
Guest_username=所讄用户?虚拟用hؓ(f)本地用户
User_config_dir=/L指定的\?为用L(fng)略自己所建的文g?指定不同虚拟用户配置文g的\?nbsp;
又是一l?nbsp;
Chown_uploads=yes 改变上传文g的所有者ؓ(f)root
Chown_username=root
又是一l?nbsp;
Deny_email_enable=yes 是否允许止匿名用户使用某些邮g地址
Banned_email_file=//L指定的\?xx/
又是单的
Pasv_enable=yes 服务器端用被动模?nbsp;
User_config_dir=/L指定的\?/L文g目录 指定虚拟用户存放配置文g的\?nbsp;
vsFTP服务器的l护
现在q里q没有关于维护vsftp服务器的资料。欢q大家编?
vsFTP使用的一些补?br /> 补充一Q如何有选择的把用户限制在家目录中呢Q?br /> 我们要自己徏一个文Ӟ?etc目录?
#touch /etc/vsftpd.chroot_list
以beinan和nanbeiq两个用户限制在他们所在的家目录中Q而其它的FTP用户不做此限制?
在vsftpd.chroot_listq个文g中,把beinan和nanbeiMd行,注意Q每个用户占一行?
beinan
nanbei
然后?etc/vsftpd/vsftpd.conf文gQ找如下的两?
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
把前面的#号去掉,也就是这L(fng)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
如果没有q样的两行,可以自己添加上M是一L(fng)?
讄好后Q重新vsFTPD服务器?
补充一之补充:(x)如何把系l内所有的FTP用户都限制在家目录中呢?Q经juliaugong兄的提示Q我查找了vsFTPd的洋文说明,证明q个选项是一刀切的解决所有的用户都能限制在家目录?
我们可以通过更改vsftpd.conf文gQ加入如下的一?
chroot_local_user=YES
改完配制文gQ不要忘记重启vsFTPd服务?
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
关闭 vsftpdQ?[ 定 ]
?vsftpd 启动 vsftpdQ?[ 定 ]
[root@linuxsir001 root]#
补充二:(x)打开vsFTP服务器的日志功能
把下面xferlog_file前面?号对掉,也就是把vsftp的log功能打开Q这h们就能在/var/log目录下查看vsftpd.log。这是vsFTP的日志功能,q对于我们来说是极ؓ(f)重要的?
#xferlog_file=/var/log/vsftpd.log
补充三:(x)如何让绑定IP到vsFTPQ?br />
也就是说Q如何让用户只能通过某个IP来访问FTP。其实这个功能很有意思。如果绑定的是内|的IPQ外部是没有办法讉K的。如果绑定的是对外服务的IPQ内|也只能通过对外服务的IP来访问FTP
?etc/vsftpd/vsftpd.conf中加一行,以我的局域网ZQ请看第一帖中的操作环境,q样外网׃能访问我的FTP了,内网也可能通过192.168.0.2来访问FTP
listen_address=192.168.0.2
加完后,要重启vsFTP服务?
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
关闭 vsftpdQ?[ 定 ]
?vsftpd 启动 vsftpdQ?[ 定 ]
[root@linuxsir001 root]#
补充四:(x)如何让vsFTP服务器限刉接数Q以?qing)每个IP最大的链接敎ͼQ?br />
{:(x)应该改vsFTP服务器的配制文gvsftpd.confQ加入下面的两行Q?
max_clients=数字
max_per_ip=数字
举例Q我惌我的vsFTP最大支持链接数?00个,每个IPQ最多能支持5个链接,所以我应该在vsftpd.conf中加上如下的两行Q?
max_clients=100
max_per_ip=5
改好了配制文Ӟ不要忘记启动vsftp服务器?
补充五:(x)如何限制下蝲的速度Q?br />
anon_max_rate=数字 注:(x)q是匿名的下载速度 local_max_rate=数字 注:(x)q是vsFTP服务器上普通用L(fng)下蝲速度
注:(x)q个数字的单位是字节Q所以我们要计算一下。比如我惌匿名用户和vsFTP上的用户都以80KB下蝲Q所以这个数字应该是1024x80=81920 所以我们要在vsftpd.conf中加入下面的两行
anon_max_rate=81920
local_max_rate=81920
不要忘记重启vsftpd服务
补充六:(x)我的盘I间有限Q怎么办?
我的盘I间有限Q如何把帐号ftp默认的\?var/ftp更改到别处?或者是Q我的linux所有的目录都放?根分区,因ؓ(f)I间紧张Q我能否把ftpq个用户的默认\径放到别的分区?
可以Q应该如下操?
首先要把ftpq个用户删除
#userdel -r ftp
?x)有错误信息Q不q不用理Q这是正常的?
然后我们再把q个用户d上,比如我想为帐号ftp的家目录讄?mnt/LinG/ftpQ我们就可以如下操作
[root@linuxsir001 root]# mkdir /mnt/LinG
[root@linuxsir001 root]# adduser -d /mnt/LinG/ftp -g ftp -s /sbin/nologin ftp
仅仅是这样做q不行,因ؓ(f)q样q是不能让匿名用h到它的家目录Q所以我们必L?mnt/LinG/ftpq个目录的权限?
[root@linuxsir001 root]# chmod 755 /mnt/LinG/ftp/
[root@linuxsir001 root]# chown -R root.root /mnt/LinG/ftp/
补充七:(x)如何定制Ƣ迎信息
如何在我们登入有些FTP之后Q会(x)出现cMQ欢q?zhn)来到LinuxSir FTPQ在q里Q?zhn)会(x)得到最真诚的帮助,如果有什么问题和Q请来信Q多谢?
实现q个q不难,我们可以查看vsftpd.cof文g中,是否有这行?
dirmessage_enable=YES
如果没有加上,如果dirmessage_enable=YES前面?P把#号去掉?
然后我们制定一?message文gQ写上?zhn)惌写的东西Q比如是.message的内Ҏ(gu)如下的:(x)
Ƣ迎(zhn)来到LinuxSir FTPQ?br />
在这里,(zhn)会(x)得到最真诚的帮助;
如果有什么问题和Q请来信Q多谢?br />
我们可以用编辑器来写q个.messageQ我惌个过E就不用说了吧?
然后我们?messageq个文g复制到各个用L(fng)家目录中。比如我的FTP的一个用hbeinanQ这个用h在的家目录是/home/beinan
我们p?message攑֜/home/beinanq个目录下。如果系l用户ftpQ他的目录就?var/ftpq个目录Q这个是默认的,当匿名用L(fng)入时p问的?var/ftpq个目录。我们要让匿名用戯看到Ƣ迎信息。就要把.message攑֜/var/ftp目录中。其它的用户Q也无非是cM的操作?
补充八:(x)如何实现虚拟路径Q?br />
比如Q?/home/a 映射为ftp://localhost/a /home/b/c 则ؓ(f)ftp://localhost/c
其实q个不能说是vsFTPd的内容,其实我们早就接触q了Q可能我们没有注意,我们可以通过如下的方法来实现?
#mount --bind [原有的目录] [新目录]
比如我的ftp的默认目录是/var/ftpQ我x/mnt/LinG/WinSoft文g夹,映射?var/ftp目录中,我就如下操作
我们要先?var/ftp目录中徏一个目?
#mkdir /var/ftp/WinSoft
然后执行mount命o(h)
#mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft
q样O(jin)K了?
补充?ji)?x)如何上匿名访问、上传,q支持下载和执行Q?br />
在默认的情况下,vsftp是不支持匿名用户的访问的Q所以我们要自己打开相应的选项。现在我针对q个问题Q我们要打开如下的选项?
anonymous_enable=YES 注:(x)允许匿名讉K
anon_upload_enable=YES 注:(x)允许上传
anon_mkdir_write_enable=YES 注:(x)允许建立相应的目?br />
anon_umask=022 把上传到FTP的文件或者目录改变权?br />
当然打开q些选项q是不行的,我们q要让匿名写入文件的上一U目录有写入权,以我所做的FTPZQ我所做的FTP的匿名访问的目录?var/ftpQ在vsFTPd中,/var/ftpq个目录是不能让匿名用户有写入权限的Q这是ؓ(f)了安全考虑Q所以我们必自己在/var/ftp目录中徏一个目录,让这个目录有写入权?
比如Q我?var/ftp目录Z个upload目录Q然后把它的权限讄?77Q这样匿名用户就能写入了?
#mkdir /var/ftp/upload
#chmod 777 /var/ftp/upload
改了一pd的文Ӟ不要忘记重启vsFTPd服务?
我是用standalone模式的,当然用下面的Ҏ(gu)
[root@linuxsir001 root]# service vsftpd restart
关闭 vsftpdQ?[ 定 ]
?vsftpd 启动 vsftpdQ?[ 定 ]
[root@linuxsir001 root]#
如果(zhn)用的是xinetd模式来启动vsFTPdQ我们要重启xinetd服务?
[root@linuxsir001 root]# service xinetd restart
停止 xinetdQ?[ 定 ]
启动 xinetdQ?[ 定 ]
[root@linuxsir001 root]# ]
补充十:(x)通过pam认证方式Q添加虚拟用?/p>
通过pam认证Q用db_loadd用户Q是真正的虚拟用戗现在我们简单的介绍一下,通过以后的学?fn),我们再深入补充?x)
1。在/etc/pam.d/目录中创Z个文件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。创Zpȝ的用户名用密码的文glogins.txt
[root@linuxsir001 root]# touch logins.txt
在logins.txt文g中,输入如下的内宏V这个内Ҏ(gu)可以自己来定。比如我下面的。其实linuxsir007是FTP的虚拟用户名Q?23456是linuxsir007的密码;linuxsir008是虚拟用户名Q?34567是linuxsir008的密码,以此cLQ?zhn)惛_入几个就是几个;下面是我d的FTP的虚拟用户名和密码?
linuxsir007
123456
linuxsir008
234567
linuxsir009
567890
linuxsir010
678901
linuxsir011
789012
4。创Z个真实的用户名linuxsir006Q这个linuxsir006的用P所在的家目录由(zhn)来定。我在这里不多说了。我是按pȝ默认的来d的?
[root@linuxsir001 root]# useradd linuxsir006
5。把/etc/hosts复制?home/linuxsir006Qƈ改变它的属主
[root@linuxsir001 root]#cp /etc/hosts /home/linuxsir006/hosts
[root@linuxsir001 root]#chown linuxsir006.linuxsir006 /home/linuxsir006/hosts
6。通过db_load来创拟用L(fng)库文件。我们在前面建的logins.txt文gQ我是放在了/root用户目录下。所以咱们得把目录切换到/root目录来创拟用L(fng)库文件?
[root@linuxsir001 root]# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
7。更改vsftpd.conf文gQ加入如下的几行
pam_service_name=ftp
guest_enable=YES
guest_username=linuxsir006
anon_world_readable_only=NO
8。重启vsFTPd服务器;改了一pd的文Ӟ不要忘记重启vsFTPd服务?
我是用standalone模式的,当然用下面的Ҏ(gu)
[root@linuxsir001 root]# service vsftpd restart
关闭 vsftpdQ?[ 定 ]
?vsftpd 启动 vsftpdQ?[ 定 ]
[root@linuxsir001 root]#
如果(zhn)用的是xinetd模式来启动vsFTPdQ我们要重启xinetd服务?
[root@linuxsir001 root]# service xinetd restart
停止 xinetdQ?[ 定 ]
启动 xinetdQ?[ 定 ]
[root@linuxsir001 root]#
9。如果?zhn)惌用户dFTPӞd成功的相应的信息Q请把?zhn)制作?message复制到?zhn)的用L(fng)家目录中Q这斚w的请参考前面的补充?
10。测试:(x)
[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-Ƣ迎光(f)LinuxSir自由FTP
230-在这里,(zhn)将得到最真诚的帮助!
230-本站限度?0KBQ?br />
230-每个IP限四个线E?br />
230-请大安守F(tun)TP的有兌定?br />
230-多谢合作Q?br />
230-
230-LinuxSir理?br />
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>
补充十一Q如何把pȝ默认用standalone启动改ؓ(f)用xinetd启动Q?br />
如何把Redhat 9.0中系l默认安装的vsftpd-1.1.3-8.i386.rpmQ系l默认vsFTPd是用standalone启动方式 Q改为xinetd启动方式 Q如果是用源码包安装的,安装后就是xinetd模式Q如果是用RPM包安装的Q在Redhat 9.0中,应该用下面的Ҏ(gu)来解冟?
1.?etc/xinetd.d/目录中创Z个文件vsftpd
[root@linuxsir001 root]# touch /etc/xinetd.d/vsftpd
/etc/xinetd.d/vsftpd内容如下Q?
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/目录下,因ؓ(f)xinetd对vsFTPd配制文g应该?etc目录下,所以我们就必须把这个文件复制到/etc目录下,否则?x)出现系l中local用户无法dQ也是_(d)不复制这个文件会(x)出现ftp非匿名用h法访问,只能用匿名用戯问?
[root@linuxsir001 root]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf
3。更攚w制文?etc/vsftpd.confQ把如下的项注掉Q也是?
listen=YES
改ؓ(f)
#listen=YES
或者是把这行删除也行?
4。把/etc/init.d/vsftpdq个文g删除。其实最好的备䆾到别处,因ؓ(f)我们有时实验来实验去Q可能还?x){到standalone模式启动。我q接移动到别的目录Q比如是/root下面的backup目录?
[root@linuxsir001 root]#mkdir /root/backup
[root@linuxsir001 root]# mv /etc/init.d/vsftpd /root/backup
5。运行ntsysvQ把vsftpd的服务取?
[root@linuxsir001 root]#ntsysv
[ ] vsftpd
6。重启xinetd服务
[root@linuxsir001 root]# service xinetd restart
本文转自:http://www.5ilinux.com/vsftp01.html