??xml version="1.0" encoding="utf-8" standalone="yes"?>噜噜噜亚洲色成人网站∨,亚洲高清成人一区二区三区,亚洲成人激情在线http://www.tkk7.com/szhswl/category/27916.html宋针q的个hI间zh-cnWed, 12 Dec 2007 15:06:33 GMTWed, 12 Dec 2007 15:06:33 GMT60apache2自动启动脚本F(xin)OR RHEL AS4 U2http://www.tkk7.com/szhswl/articles/167344.html宋针q?/dc:creator>宋针q?/author>Wed, 12 Dec 2007 13:58:00 GMThttp://www.tkk7.com/szhswl/articles/167344.htmlhttp://www.tkk7.com/szhswl/comments/167344.htmlhttp://www.tkk7.com/szhswl/articles/167344.html#Feedback0http://www.tkk7.com/szhswl/comments/commentRss/167344.htmlhttp://www.tkk7.com/szhswl/services/trackbacks/167344.html  1 #!/bin/bash 
  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 [ -/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=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 ->&/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

]]>
扑֛ROOT密码http://www.tkk7.com/szhswl/articles/166545.html宋针q?/dc:creator>宋针q?/author>Mon, 10 Dec 2007 00:40:00 GMThttp://www.tkk7.com/szhswl/articles/166545.htmlhttp://www.tkk7.com/szhswl/comments/166545.htmlhttp://www.tkk7.com/szhswl/articles/166545.html#Feedback0http://www.tkk7.com/szhswl/comments/commentRss/166545.htmlhttp://www.tkk7.com/szhswl/services/trackbacks/166545.html   FreeBSD 4.7
  当显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安装和基本配|?/title><link>http://www.tkk7.com/szhswl/articles/166321.html</link><dc:creator>宋针q?/dc:creator><author>宋针q?/author><pubDate>Sat, 08 Dec 2007 11:16:00 GMT</pubDate><guid>http://www.tkk7.com/szhswl/articles/166321.html</guid><wfw:comment>http://www.tkk7.com/szhswl/comments/166321.html</wfw:comment><comments>http://www.tkk7.com/szhswl/articles/166321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/szhswl/comments/commentRss/166321.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/szhswl/services/trackbacks/166321.html</trackback:ping><description><![CDATA[下蝲:<br /> 从这个网址Qhttp://www.sun.com/software/solaris/get.jspQ?可以下蝲最新的Solaris 10 3/05 for x64/x86的光盘。上M看,有好多光盘啊Q我下蝲了下面五张:(x)<br /> Solaris 10 3/05 CD 1<br /> Solaris 10 3/05 CD 2<br /> Solaris 10 3/05 CD 3<br /> Solaris 10 3/05 CD 4<br /> Solaris 10 3/05 Language CD<br /> 下蝲完Solaris 10 的光? _粗地看了一下其中的内容。第一张盘主要是Solaris pȝ基本软gQ第二张有许多和gnome相关的包Q第三张主要是staroffice, W四张包含了许多open source的Y件如Apache/Ant/Python/TCL/mysql{等?br /> <br /> <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 描述<br /> 的方法做了分区?我把自己60G的硬盘分?个区Q?<br /> 名称 内容 cd 大小 文gpȝ 描述<br /> /dev/hda1 Win->C: Primary 10G NTFS Windows XP <br /> /dev/hda2 Ext Ext 25G --- 扩展分区<br /> /dev/hda3 Linux Primary 10G EXT3 Linux <br /> /dev/hda4 Solaris Primary 11.5G Solaris Solaris x86 partition<br /> /dev/hda5 数据分区 Logical 12G FAT32 所有操作系l共?br /> /dev/hda6 数据分区 Logical 12G FAT32 所有操作系l共?br /> /dev/hda7 linux swap Logical 1G swap Linux swap,<br /> <br /> 其中W四个主分区ID配成?x82 (Solaris 分区), 大小?2G, 然后把自׃载的文g都先解成.iso文gq放?dev/hda5分区?q个分区在Windows下面是D?<br /> <br /> <br /> 安装:<br /> W者比较吝啬,一看要刻那么多盘,不干了。决定试试只ȝ一张盘的方法?dW一张盘Q把BIOS设ؓ(f)光盘启动Q然后从光盘启动?非常利地看CSolaris 的启动界面:(x)<br /> SunOS Secondary Boot Version 4.02, 然后{待Initializing System... ??Solaris Interactive, l箋{待. Configuring devices 那一步比较慢?br /> <br /> l过几分钟的{待后就看到pȝ自己认识了我的Intel Pro/100 VE |卡 iprb0Q?接着又看到系l自p识了我的昑֍(Nvidia Gefore 4 420)、键盘和鼠标{, 非常高兴! <br /> 要知道,在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)<br /> <br /> 接着开始配|了?我选的是用体中文安装,接下来配|网l、地域、时间、Root口o(h){,非常单,q里我就不多说了。接下来我选择软g自动重新引导和自动弹出CD, <br /> W一张盘安装的介质我选择了CD, 后面的几张盘我都是选择了网l文件系l?接收License Agreement后选择了初始安装、自定义安装Q?选择了所有的中文的Y件包q且把默认语a环境设ؓ(f)中文的GB18030, 没有选择M附加产品Q然后选择整个组/~省包, 选择盘上的Solaris分区Q选择不保留数据,在分布文件系l时Q因为是个h机器, 我只配了/ 和swap 两个文gpȝ<br /> <br /> 我的文gpȝ如下<br /> / 10G<br /> swap 1.5G<br /> 接着开始安装了?br /> <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)<br /> 1. 把FAT32的光盘mount到Solaris下面Q?br /> 首先建立目的目录Q我打算?dev/hda5 mount?wind, /dev/hda6 mount?wine. 所以,q行# mkdir /wind #mkdir /wine. <br /> 接着/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<br /> #mount -F pcfs /dev/dsk/c0d0p2:d /wine<br /> 当然Q要C?etc/vfstab里面加入下面两行Q以便系l重新启动时能把FAT32的分动mount?br /> /dev/dsk/c0d0p2:c /dev/rdsk/c0d0p2:c /wind pcfs 2 yes -<br /> /dev/dsk/c0d0p2:d /dev/rdsk/c0d0p2:d /wine pcfs 3 yes -<br /> <br /> 参考文档:(x)<br /> System Administration Guide: Devices and File Systems (http://docs.sun.com/app/docs/doc/817-5093)<br /> ch. 18. Mounting and Unmounting File Systems, Page 306, x86: How to Mount a PCFS (DOS) File System From a Hard Disk<br /> <br /> 2. 用lofiadm/mount命o(h)做虚拟光?br /> 在Windows上有很多虚拟光驱E序Q如Daemon, Virtual CD{,可以?iso文g虚拟成光驱?在Solaris下,我们用lofiadm命o(h)。方法如? <br /> # 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了<br /> # mount -F hsfs -o ro /dev/lofi/1 /mnt ?dev/lofi/1 mount?mnt<br /> <br /> 然后#cd /mnt, 看到mount成功后,里面有了光盘上的内容Q再回到安装界面Q?在\径里面输?mntQ?然后p利安装了。接下来要装W三张盘的时候,同样到Terminal去,<br /> # umount /mnt 用来unmount, q个不用我多说了<br /> # lofiadm -d /dev/lofi/1 <br /> 接着对照W二张盘的命令来安装W三、第四张盘和语言包?br /> 装完后,pȝ?x)提C重新启动?重启后,有CDE和JDS3两种桌面可供选择Q我选择q入Java Desktop System 3的界面?br /> <br /> 大功告成Q?整个q程׃我将q?.5时的时间。其中觉得第四张盘耗的旉最ѝ另外觉得JDS 3的桌面很漂亮也很方便使用?br /> <br /> <br /> 基本配置Q?br /> 1. 1400x1050分L率的讄<br /> 我的W记本分辨率?400x1050的,而Solaris 10h后默认用的?280x1024的,看v来有Ҏ(gu)p。查了一些文档,知道需要新Z个文?etc/X11/xorg.conf。下面是我的/etc/X11/xorg.conf的内宏V?br /> [/etc/X11/xorg.conf]<br /> <br /> Section "ServerLayout"<br /> Identifier "X.org Configured"<br /> Screen 0 "Screen0" 0 0<br /> InputDevice "Mouse0" "CorePointer"<br /> InputDevice "Keyboard0" "CoreKeyboard"<br /> EndSection<br /> <br /> Section "ServerFlags"<br /> Option "HandleSpecialKeys" "Always"<br /> EndSection<br /> <br /> Section "Files"<br /> RgbPath "/usr/X11R6/lib/X11/rgb"<br /> ModulePath "/usr/X11R6/lib/modules"<br /> FontPath "/usr/X11R6/lib/X11/fonts/TrueType/"<br /> FontPath "/usr/X11R6/lib/X11/fonts/Type1/"<br /> FontPath "/usr/X11R6/lib/X11/fonts/Type1/sun/"<br /> FontPath "/usr/X11R6/lib/X11/fonts/F3bitmaps/"<br /> FontPath "/usr/X11R6/lib/X11/fonts/misc/"<br /> FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"<br /> FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"<br /> EndSection<br /> <br /> Section "Module"<br /> Load "dbe"<br /> Load "extmod"<br /> Load "record"<br /> Load "xtrap"<br /> Load "bitstream"<br /> Load "speedo"<br /> Load "type1"<br /> EndSection<br /> <br /> Section "InputDevice"<br /> Identifier "Keyboard0"<br /> Driver "keyboard"<br /> EndSection<br /> <br /> Section "InputDevice"<br /> Identifier "Mouse0"<br /> Driver "mouse"<br /> Option "Protocol" "auto"<br /> Option "Device" "/dev/mouse"<br /> EndSection<br /> <br /> Section "InputDevice"<br /> Identifier "Mouse1"<br /> Driver "mouse"<br /> Option "Protocol" "IMPS/2"<br /> Option "Device" "/dev/kdmouse"<br /> Option "SendCoreEvents"<br /> EndSection<br /> <br /> Section "Monitor"<br /> Identifier "Monitor0"<br /> VendorName "Monitor Vendor"<br /> ModelName "Monitor Model"<br /> HorizSync 28.0-70.0<br /> VertRefresh 55.0-100.0<br /> DisplaySize 288 216<br /> EndSection<br /> <br /> Section "Device"<br /> ### Available Driver options are:-<br /> ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",<br /> ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"<br /> ### [arg]: arg optional<br /> #Option "SWcursor" # [<bool>]<br /> #Option "HWcursor" # [<bool>]<br /> #Option "NoAccel" # [<bool>]<br /> #Option "ShadowFB" # [<bool>]<br /> #Option "UseFBDev" # [<bool>]<br /> #Option "Rotate" # [<str>]<br /> #Option "VideoKey" # <i><br /> Option "FlatPanel" # [<bool>]<br /> #Option "FPDither" # [<bool>]<br /> #Option "CrtcNumber" # <i><br /> Option "MergedFB" "true" # [<bool>]<br /> Option "CRT2HSync" "31-60" # [<str>]<br /> Option "CRT2VRefresh" "50-75" # [<str>]<br /> Option "CRT2Position" "Clone" # [<str>]<br /> Option "MeataModes" "1400x1050-1024x768 1280x1024-1024x768 1024x768-1024x768 800x600-800x600 640x480-640x480"<br /> Identifier "Card0"<br /> Driver "nv"<br /> VendorName "nVidia Corporation"<br /> BoardName "NV17 [GeForce4 420 Go]"<br /> BusID "PCI:1:0:0"<br /> EndSection<br /> <br /> Section "Screen"<br /> Identifier "Screen0"<br /> Device "Card0"<br /> Monitor "Monitor0"<br /> SubSection "Display"<br /> Viewport 0 0<br /> Depth 24<br /> Modes "1400x1050" "1280x1024" "1024x768" "800x600" "640x480"<br /> EndSubSection<br /> EndSection<br /> <br /> <br /> [End of /etc/X11/xorg.conf]<br /> <br /> 注意Q我加入?br /> Section "ServerFlags"<br /> Option "HandleSpecialKeys" "Always"<br /> EndSection<br /> q样在Xorg的XServer 到问题Ӟ我就可以?Alt + Ctrl + BkSp" 重新启动xserver了,非常方便?br /> 另外我还Ҏ(gu)我的实际情况到启?>首选项->桌面首先?>昄下面更改了很多东西,q里我就不一一描述了。其中比较重要的一个是Z把字体改大,我选择了字?>l节->分L率,把每英寸Ҏ(gu)?6改ؓ(f)120Q解决了1400x1050分L率下字很的问题?br /> <br /> 2. DHCP Client配置<br /> 我公叔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 /> <br /> 3. 默认权限的配|?br /> pȝ默认是采用安全的Ҏ(gu)Q但我的机器上面没有什么非帔R要的数据Q而且l常需要用root用户q行ssh,telnet,ftp{,而这些系l默认都不允许?br /> 没办法,手工改啦?br /> ssh:<br /> /etc/ssh/sshd_config, 把PermitRootLogin改ؓ(f)yes。另外我曄出现不能正常启动ssh service的情c(din)原因是没有?etc/ssh下面自动生成<br /> ssh_host_rsa_key<br /> ssh_host_rsa_key.pub <br /> ssh_host_dsa_key<br /> ssh_host_dsa_key.pub<br /> {key文gQ?最后我手工生成了这些文Ӟ解决了这个问题:(x)<br /> Q?ssh-keygen -b 1024 -t rsa1 -f /etc/ssh/ssh_host_key -N ""<br /> Q?ssh-keygen -b 1024 -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""<br /> Q?ssh-keygen -b 1024 -t dsa -f /etc/ssh/ssh_host_dsa_key -N ""<br /> <br /> telnet:<br /> 单,修改文g/etc/default/loginQ把行CONSOLE=/dev/console注释掉,可以用root用户telnet上来?br /> ftp:<br /> 只要修改/etc/ftpd/ftpusersQ?把root用户注释掉就可以用root用户q行ftp了?br /> <br /> 4. 默认shell的配|?<br /> 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 /> <br /> 5. 打印机的配置?<br /> 在Solaris 10的JDS桌面下安装打印机比较单,只要通过启动->首选项->pȝ首选项->d/删除打印机就行了。在囑Ş界面里选择打印?>新的附加打印机或者新的网l打印机Q通过囑Ş界面可以很单配好打印机?br /> <br /> <span style="font-size: 8pt">本文转自:http://gceclub.sun.com.cn/NASApp/sme/jive/thread.jsp</span> <img src ="http://www.tkk7.com/szhswl/aggbug/166321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/szhswl/" target="_blank">宋针q?/a> 2007-12-08 19:16 <a href="http://www.tkk7.com/szhswl/articles/166321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Solaris10中新的Dtrace工具http://www.tkk7.com/szhswl/articles/165874.html宋针q?/dc:creator>宋针q?/author>Thu, 06 Dec 2007 11:55:00 GMThttp://www.tkk7.com/szhswl/articles/165874.htmlhttp://www.tkk7.com/szhswl/comments/165874.htmlhttp://www.tkk7.com/szhswl/articles/165874.html#Feedback0http://www.tkk7.com/szhswl/comments/commentRss/165874.htmlhttp://www.tkk7.com/szhswl/services/trackbacks/165874.htmlDTrace卛_态跟tDynamic TracingQ是Solaris 10的一个新功能Q透过此一新功能,用户能够动态检操作系l内核和用户q程Q以更精地掌握pȝ的资源用状况,提高pȝ性能Q减支持成本,q进行有效的调节?997q_(d)供职于Sun而现已是Solaris内核开发部高工程师的Bryan Cantrill 与他的工作组在紧张地研究一个性能问题Q它出现在刚刚提?qing)的Sun E10000服务器。该服务器在q行基准试Ӟ速度H然在一D|间内奇怪地降低。工作组l过六天夜以l日的工作后Q终于发C问题的根本原因。某?#8220;愚蠢之极”的配|错误将服务器配|成了\由器?br />
“我很受震惊,”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>

]]>
SOLARIS10一些设|?/title><link>http://www.tkk7.com/szhswl/articles/165870.html</link><dc:creator>宋针q?/dc:creator><author>宋针q?/author><pubDate>Thu, 06 Dec 2007 11:49:00 GMT</pubDate><guid>http://www.tkk7.com/szhswl/articles/165870.html</guid><wfw:comment>http://www.tkk7.com/szhswl/comments/165870.html</wfw:comment><comments>http://www.tkk7.com/szhswl/articles/165870.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/szhswl/comments/commentRss/165870.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/szhswl/services/trackbacks/165870.html</trackback:ping><description><![CDATA[1Q进入控制台<br /> Sun Microsystems Inc.   SunOS 5.10      Generic January 2005<br /> You have new mail.<br /> # /usr/X11/bin/xorgconfig<br /> <br /> 2Q显C:(x)<br /> This program will create a basic xorg.conf file, based on menu selections<br /> you make.  This program will ask for a pathname when it is ready to write<br /> the file.<br /> <br /> The xorg.conf file usually resides in /etc/X11.  If no xorg.conf file<br /> is present there, Xorg will probe the system to autoconfigure itself.<br /> You can run Xorg -configure to generate a xorg.conf file based on<br /> the results of autoconfiguration, or let this program produce a base<br /> xorg.conf file for your configuration and fine-tune it.<br /> <br /> Before continuing with this program, make sure you know what video card<br /> you have, and preferably also the chipset it uses and the amount of video<br /> memory on your video card, as well as the specifications of your monitor.<br /> <br /> Press enter to continue, or ctrl-c to abort.<br /> <br /> 3Q我们ENTER<br /> First specify a mouse protocol type. Choose one from the following list:<br /> <br />  1.  Auto<br />  2.  VUID<br />  3.  SysMouse<br />  4.  MouseSystems<br />  5.  PS/2<br />  6.  Microsoft<br />  7.  Busmouse<br />  8.  IMPS/2<br />  9.  ExplorerPS/2<br /> 10.  GlidePointPS/2<br /> 11.  MouseManPlusPS/2<br /> 12.  NetMousePS/2<br /> 13.  NetScrollPS/2<br /> 14.  ThinkingMousePS/2<br /> <br /> The recommended protocol is Auto. If you have a very old mouse<br /> or don't want OS support or auto detection, and you have a two-button<br /> or three-button serial mouse, it is most likely of type Microsoft.<br /> <br /> Enter a protocol number: <br /> <br /> 4Q选择鼠标的种c,q里我们?QPS2<br /> <br /> If your mouse has only two buttons, it is recommended that you enable<br /> Emulate3Buttons.<br /> <br /> Please answer the following question with either 'y' or 'n'.<br /> Do you want to enable Emulate3Buttons? <br /> <br /> 5Q要不要用鼠标的W三个键Q废话当然用<br /> <br /> Now give the full device name that the mouse is connected to, for example<br /> /dev/tty00. Just pressing enter will use the default, /dev/kdmouse.<br /> <br /> Mouse device: <br /> <br /> 6Q鼠标的讑֤名,用默认的?br /> <br /> Please select one of the following keyboard types that is the better<br /> description of your keyboard. If nothing really matches,<br /> choose 1 (Generic 101-key PC)<br /> <br />   1  Sun Type 6 USB                                    <br />   2  Sun Type 6 USB (European layout)                  <br />   3  Sun Type 6 USB (Japanese layout)                  <br />   4  Sun Type 6 USB (Unix layout)                      <br />   5  Generic 101-key PC                                <br />   6  Generic 102-key (Intl) PC                         <br />   7  Generic 104-key PC                                <br />   8  Generic 105-key (Intl) PC                         <br />   9  Sun Type 4                                        <br />  10  Sun Type 4 (Canadian layout)                      <br />  11  Sun Type 4 (Japanese layout)                      <br />  12  Sun Type 4 (European layout)                      <br />  13  Sun Type 5                                        <br />  14  Sun Type 5 (European layout)                      <br />  15  Sun Type 5 (Japanese layout)                      <br />  16  Sun Type 5 (Unix layout)                          <br /> <br /> Enter a number to choose the keyboard.<br /> <br /> 7Q选择键盘的类型,现在没烂键盘了吧。?<br /> <br />   1  U.S. English                                      <br />   2  U.S. English w/ ISO9995-3                         <br />   3  U.S. English w/ deadkeys                          <br />   4  Albanian                                          <br />   5  Arabic                                            <br />   6  Armenian                                          <br />   7  Azerbaijani                                       <br />   8  Belarusian                                        <br />   9  Belgian                                           <br />  10  Bengali                                           <br />  11  Bosnian                                           <br />  12  Brazilian                                         <br />  13  Bulgarian                                         <br />  14  Burmese                                           <br />  15  Canadian                                          <br />  16  French Canadian                                   <br />  17  Croatian                                          <br />  18  Croatian (US)                                     <br /> <br /> Enter a number to choose the country.<br /> Press enter for the next page<br /> <br /> 8Q语a用第一个,US<br /> <br /> Please enter a variant name for 'us' layout. Or just press enter<br /> for default variant<br /> <br /> 9Q回车用默认??br /> <br /> Please answer the following question with either 'y' or 'n'.<br /> Do you want to select additional XKB options (group switcher,<br /> group indicator, etc.)? <br /> <br /> 10Q接下来是功能健的设|。我们选Yq去看看<br /> <br />   1  Right Alt key switches group while pressed        <br />   2  Left Alt key switches group while pressed         <br />   3  Left Win-key switches group while pressed         <br />   4  Right Win-key switches group while pressed        <br />   5  Both Win-keys switch group while pressed          <br />   6  Right Alt key changes group                       <br />   7  Left Alt key changes group                        <br />   8  Caps Lock key changes group                       <br />   9  Shift+CapsLock changes group                      <br />  10  Both Shift keys together change group             <br />  11  Both Alt keys together change group               <br />  12  Both Ctrl keys together change group              <br />  13  Control+Shift changes group                       <br />  14  Alt+Control changes group                         <br />  15  Alt+Shift changes group                           <br />  16  Menu key changes group                            <br />  17  Left Win-key changes group                        <br />  18  Right Win-key changes group                       <br />  19  Left Shift key changes group                      <br />  20  Right Shift key changes group                     <br />  21  Left Ctrl key changes group                       <br />  22  Right Ctrl key changes group                      <br /> <br /> Please select the option or just press enter if none<br /> <br /> 11Q根据自q喜好随意讄吧,不过应该没h?x)动?br /> <br />    Third level choosers<br /> <br />   1  Press Right Control to choose 3rd level           <br />   2  Press Left Alt key to choose 3rd level            <br />   3  Press Right Alt key to choose 3rd level           <br />   4  Press any of Alt keys to choose 3rd level         <br />   5  Press Menu key to choose 3rd level                <br />   6  Press any of Win-keys to choose 3rd level         <br />   7  Press Left Win-key to choose 3rd level            <br />   8  Press Right Win-key to choose 3rd level           <br /> <br /> Please select the option or just press enter if none<br /> <br /> 12Q默认回?br /> <br />    Control Key Position<br /> <br />   1  Make CapsLock an additional Control               <br />   2  Swap Control and Caps Lock                        <br />   3  Control key at left of 'A'                        <br />   4  Control key at bottom left                        <br />   5  Right Control key works as Right Alt              <br /> <br /> Please select the option or just press enter if none<br /> <br /> 13Q随?br /> <br />    Use keyboard LED to show alternative group<br /> <br />   1  Num_Lock LED shows alternative group              <br />   2  Caps_Lock LED shows alternative group             <br />   3  Scroll_Lock LED shows alternative group           <br /> <br /> Please select the option or just press enter if none<br /> <br /> 14Q三个LED灯的讄<br /> <br />    CapsLock key behavior<br /> <br />   1  uses internal capitalization. Shift cancels Caps. <br />   2  uses internal capitalization. Shift doesn't cancel Caps.<br />   3  acts as Shift with locking. Shift cancels Caps.   <br />   4  acts as Shift with locking. Shift doesn't cancel Caps.<br /> <br /> Please select the option or just press enter if none<br /> <br /> 15Q大写字母锁定键指示灯的讄<br /> <br />    Alt/Win key behavior<br /> <br />   1  Add the standard behavior to Menu key.            <br />   2  Alt and Meta on the Alt keys (default).           <br />   3  Meta is mapped to the Win-keys.                   <br />   4  Meta is mapped to the left Win-key.               <br />   5  Super is mapped to the Win-keys (default).        <br />   6  Hyper is mapped to the Win-keys.                  <br />   7  Right Alt is Compose                              <br />   8  Right Win-key is Compose                          <br />   9  Menu is Compose                                   <br />  10  Kana Lock key is locking                          <br />  11  Shift with numpad keys works as in MS Windows.    <br />  12  Special keys (Ctrl+Alt+<key>) handled in a server.<br /> <br /> Please select the option or just press enter if none<br /> <br /> 16QALT+WIN键的讄?br /> <br /> Now we want to set the specifications of the monitor. The two critical<br /> parameters are the vertical refresh rate, which is the rate at which the<br /> the whole screen is refreshed, and most importantly the horizontal sync rate,<br /> which is the rate at which scanlines are displayed.<br /> <br /> The valid range for horizontal sync and vertical sync should be documented<br /> in the manual of your monitor. If in doubt, check the monitor database<br /> /usr/X11/share/doc/Monitors to see if your monitor is there.<br /> <br /> Press enter to continue, or ctrl-c to abort.<br /> <br /> 17Q检查显卡的数据库,回R<br /> <br /> You must indicate the horizontal sync range of your monitor. You can either<br /> select one of the predefined ranges below that correspond to industry-<br /> standard monitor types, or give a specific range.<br /> <br /> It is VERY IMPORTANT that you do not specify a monitor type with a horizontal<br /> sync range that is beyond the capabilities of your monitor. If in doubt,<br /> choose a conservative setting.<br /> <br />     hsync in kHz; monitor type with characteristic modes<br />  1  31.5; Standard VGA, 640x480 @ 60 Hz<br />  2  31.5 - 35.1; Super VGA, 800x600 @ 56 Hz<br />  3  31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)<br />  4  31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz<br />  5  31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz<br />  6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz<br />  7  31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz<br />  8  31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz<br />  9  31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz<br /> 10  31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz<br /> 11  Enter your own horizontal sync range<br /> <br /> Enter your choice (1-11): <br /> <br /> 18Q我?Q文献也是这样选的<br /> <br /> You must indicate the vertical sync range of your monitor. You can either<br /> select one of the predefined ranges below that correspond to industry-<br /> standard monitor types, or give a specific range. For interlaced modes,<br /> the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).<br /> <br />  1  50-70<br />  2  50-90<br />  3  50-100<br />  4  40-150<br />  5  Enter your own vertical sync range<br /> <br /> Enter your choice: <br /> <br /> 19Q?<br /> <br /> You must now enter a few identification/description strings, namely an<br /> identifier, a vendor name, and a model name. Just pressing enter will fill<br /> in default names.<br /> <br /> The strings are free-form, spaces are allowed.<br /> Enter an identifier for your monitor definition: <br /> <br /> 20Q用默认的吧<br /> <br /> Now we must configure video card specific settings. At this point you can<br /> choose to make a selection out of a database of video card definitions.<br /> Because there can be variation in Ramdacs and clock generators even<br /> between cards of the same model, it is not sensible to blindly copy<br /> the settings (e.g. a Device section). For this reason, after you make a<br /> selection, you will still be asked about the components of the card, with<br /> the settings from the chosen database entry presented as a strong hint.<br /> <br /> The database entries include information about the chipset, what driver to<br /> run, the Ramdac and ClockChip, and comments that will be included in the<br /> Device section. However, a lot of definitions only hint about what driver<br /> to run (based on the chipset the card uses) and are untested.<br /> <br /> If you can't find your card in the database, there's nothing to worry about.<br /> You should only choose a database entry that is exactly the same model as<br /> your card; choosing one that looks similar is just a bad idea (e.g. a<br /> GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of<br /> hardware as can be).<br /> <br /> Do you want to look at the card database? <br /> <br /> 21Q是否要看显卡的数据库?文献E这里键入Y和YES是不一L(fng)l果Q我看一栗。?br /> <br />   0  * Generic VESA compatible                         -<br />   1  * Generic VGA compatible                          -<br />   2  * Unsupported VGA compatible                      -<br />   3  ** 3DLabs, TI (generic)               [glint]     -<br />   4  ** 3Dfx (generic)                     [tdfx]      -<br />   5  ** ATI (generic)                      [ati]       -<br />   6  ** ATI Radeon (generic)               [radeon]    -<br />   7  ** ATI Rage 128 based (generic)       [r128]      -<br />   8  ** Alliance Pro Motion (generic)      [apm]       -<br />   9  ** Ark Logic (generic)                [ark]       -<br />  10  ** Chips and Technologies (generic)   [chips]     -<br />  11  ** Cirrus Logic (generic)             [cirrus]    -<br />  12  ** Cyrix MediaGX (generic)            [cyrix]     -<br />  13  ** DEC TGA (generic)                  [tga]       -<br />  14  ** Intel i740 (generic)               [i740]      -<br />  15  ** Intel i810 (generic)               [i810]      -<br />  16  ** Linux framebuffer (generic)        [fbdev]     -<br />  17  ** Matrox Graphics (generic)          [mga]       -<br /> <br /> Enter a number to choose the corresponding card definition.<br /> Press enter for the next page, q to continue configuration.<br /> <br /> 22Q因为我在虚拟机里这|有,回R下一,如果是实体安装,p选择相应的显?br /> <br />  18  ** NVIDIA (generic)                   [nv]        -<br />  19  ** NeoMagic (generic)                 [neomagic]  -<br />  20  ** Number Nine I128 (generic)         [i128]      -<br />  21  ** Rendition (generic)                [rendition] -<br />  22  ** S3 (not ViRGE or Savage) (generic) [s3]        -<br />  23  ** S3 Savage (generic)                [savage]    -<br />  24  ** S3 ViRGE (generic)                 [s3virge]   -<br />  25  ** SiS (generic)                      [sis]       -<br />  26  ** Silicon Motion (generic)           [siliconmotion]-<br />  27  ** Trident (generic)                  [trident]   -<br />  28  ** Tseng Labs (generic)               [tseng]     -<br />  29  ** VMWare guest OS (generic)          [vmware]    -<br />  30  2 the Max MAXColor S3 Trio64V+                    -<br />  31  2-the-Max MAXColor 6000                           ET6000<br />  32  3DLabs Oxygen GMX                                 PERMEDIA 2<br />  33  928Movie                                          S3 928<br />  34  AGX (generic)                                     AGX-014/15/16<br />  35  ALG-5434(E)                                       CL-GD5434<br /> <br /> Enter a number to choose the corresponding card definition.<br /> Press enter for the next page, q to continue configuration.<br /> <br /> 23Q在虚拟机里Q?9?br /> <br /> Your selected card definition:<br /> <br /> Identifier: ** VMWare guest OS (generic)          [vmware]<br /> Chipset:    -<br /> Driver:     vmware<br /> <br /> Press enter to continue, or ctrl-c to abort.<br /> <br /> 24Q确?br /> <br /> Now you must give information about your video card. This will be used for<br /> the "Device" section of your video card in xorg.conf.<br /> <br /> It is probably a good idea to use the same approximate amount as that detected<br /> by the server you intend to use. If you encounter problems that are due to the<br /> used server not supporting the amount memory you have, specify the maximum<br /> amount supported by the server.<br /> <br /> How much video memory do you have on your video card:<br /> <br />  1  256K<br />  2  512K<br />  3  1024K<br />  4  2048K<br />  5  4096K<br />  6  8192K<br />  7  16384K<br />  8  32768K<br />  9  65536K<br /> 10  131072K<br /> 11  262144K<br /> 12  Other<br /> <br /> 25Q显存,文献上说?M?M都可以,我?M<br /> <br /> You must now enter a few identification/description strings, namely an<br /> identifier, a vendor name, and a model name. Just pressing enter will fill<br /> in default names (possibly from a card definition).<br /> <br /> Your card definition is ** VMWare guest OS (generic)          [vmware].<br /> <br /> The strings are free-form, spaces are allowed.<br /> Enter an identifier for your video card definition:<br /> <br /> 26Q给你的昑֭写描q?br /> <br /> For each depth, a list of modes (resolutions) is defined. The default<br /> resolution that the server will start-up with will be the first listed<br /> mode that can be supported by the monitor and card.<br /> Currently it is set to:<br /> <br /> "1280x1024" "1024x768" "800x600" "640x480" for 8-bit<br /> "1280x1024" "1024x768" "800x600" "640x480" for 16-bit<br /> "1280x1024" "1024x768" "800x600" "640x480" for 24-bit<br /> <br /> Modes that cannot be supported due to monitor or clock constraints will<br /> be automatically skipped by the server.<br /> <br />  1  Change the modes for 8-bit (256 colors)<br />  2  Change the modes for 16-bit (32K/64K colors)<br />  3  Change the modes for 24-bit (24-bit color)<br />  4  The modes are OK, continue.<br /> <br /> Enter your choice: <br /> <br /> 27Q选择色深。文献是16位的Q我也跟风。。?br /> <br /> Select modes from the following list:<br /> <br />  1  "640x400"<br />  2  "640x480"<br />  3  "800x600"<br />  4  "1024x768"<br />  5  "1280x1024"<br />  6  "320x200"<br />  7  "320x240"<br />  8  "400x300"<br />  9  "1152x864"<br />  a  "1600x1200"<br />  b  "1800x1400"<br />  c  "512x384"<br />  d  "1400x1050"<br /> <br /> Please type the digits corresponding to the modes that you want to select.<br /> For example, 432 selects "1024x768" "800x600" "640x480", with a<br /> default mode of 1024x768.<br /> <br /> Which modes? <br /> <br /> 28Q分辨率的设|,可以多选,我?432<br /> <br /> You can have a virtual screen (desktop), which is screen area that is larger<br /> than the physical screen and which is panned by moving the mouse to the edge<br /> of the screen. If you don't want virtual desktop at a certain resolution,<br /> you cannot have modes listed that are larger. Each color depth can have a<br /> differently-sized virtual screen<br /> <br /> Please answer the following question with either 'y' or 'n'.<br /> Do you want a virtual screen that is larger than the physical screen?<br /> <br /> 29Q设|鼠标是否可以越q虚拟桌面,一般选NQ但文献说选Y很好玩。。。。所以选Y <br /> <br /> For each depth, a list of modes (resolutions) is defined. The default<br /> resolution that the server will start-up with will be the first listed<br /> mode that can be supported by the monitor and card.<br /> Currently it is set to:<br /> <br /> "1280x1024" "1024x768" "800x600" "640x480" for 8-bit<br /> "1280x1024" "1024x768" "800x600" "640x480" for 16-bit<br /> "1280x1024" "1024x768" "800x600" "640x480" for 24-bit<br /> <br /> Modes that cannot be supported due to monitor or clock constraints will<br /> be automatically skipped by the server.<br /> <br />  1  Change the modes for 8-bit (256 colors)<br />  2  Change the modes for 16-bit (32K/64K colors)<br />  3  Change the modes for 24-bit (24-bit color)<br />  4  The modes are OK, continue.<br /> <br /> Enter your choice: <br /> <br /> 30Q又回到原来的地方了。?认模式?br /> <br /> Please specify which color depth you want to use by default:<br /> <br />   1  1 bit (monochrome)                                <br />   2  4 bits (16 colors)                                <br />   3  8 bits (256 colors)                               <br />   4  16 bits (65536 colors)                            <br />   5  24 bits (16 million colors)                       <br /> <br /> Enter a number to choose the default depth.<br /> <br /> 31Q默认的色深?6位的Q?<br /> <br /> I am going to write the xorg.conf file now. Make sure you don't accidently<br /> overwrite a previously configured one.<br /> <br /> Shall I write it to /etc/X11/xorg.conf? <br /> <br /> 32Q是否要保存配置文gQ那q用_(d)Q?br /> <br /> File has been written. Take a look at it before starting an X server. Note that<br /> the xorg.conf file must be in one of the directories searched by the server<br /> (e.g. /etc/X11) in order to be used. Within the server press<br /> ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl,<br /> alt and backspace simultaneously immediately exits the server (use if<br /> the monitor doesn't sync for a particular mode).<br /> <br /> For further configuration, refer to the xorg.conf(5) manual page.<br /> <br /> 33Q提COK<br /> 接下来sync;init 6重启<br /> <br /> 好大的桌面啊~~~^o^<br /> <br /> <img id="ViewPicture.ascx_GalleryImage" style="border-right: black 2px solid; border-top: black 2px solid; border-left: black 2px solid; width: 514px; border-bottom: black 2px solid; height: 385px" alt="" src="file:///E:/资料/HTML/solaris%2010鼠标键盘昑֍分L率刷新率{等的设|(本文在solaris10下postQ?20-%20风vqh的程序员生活%20-%20CSDNBlog.files/r_So26.jpg" /> <img id="ViewPicture.ascx_GalleryImage" style="border-right: black 2px solid; border-top: black 2px solid; border-left: black 2px solid; width: 578px; border-bottom: black 2px solid; height: 453px" alt="" src="file:///E:/资料/HTML/solaris%2010鼠标键盘昑֍分L率刷新率{等的设|(本文在solaris10下postQ?20-%20风vqh的程序员生活%20-%20CSDNBlog.files/r_So27.jpg" /> <p><br /> <br /> <br /> </p> <br /> <br /> <p id="TBPingURL" style="font-size: 8pt">本文转自: http://tb.blog.csdn.net/TrackBack.aspx?PostId=616106</p> <img src ="http://www.tkk7.com/szhswl/aggbug/165870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/szhswl/" target="_blank">宋针q?/a> 2007-12-06 19:49 <a href="http://www.tkk7.com/szhswl/articles/165870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LINUX的VSFTP配置http://www.tkk7.com/szhswl/articles/165850.html宋针q?/dc:creator>宋针q?/author>Thu, 06 Dec 2007 09:25:00 GMThttp://www.tkk7.com/szhswl/articles/165850.htmlhttp://www.tkk7.com/szhswl/comments/165850.htmlhttp://www.tkk7.com/szhswl/articles/165850.html#Feedback0http://www.tkk7.com/szhswl/comments/commentRss/165850.htmlhttp://www.tkk7.com/szhswl/services/trackbacks/165850.html
一、前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?



]]>
VSFTP配置手册http://www.tkk7.com/szhswl/articles/165840.html宋针q?/dc:creator>宋针q?/author>Thu, 06 Dec 2007 08:53:00 GMThttp://www.tkk7.com/szhswl/articles/165840.htmlhttp://www.tkk7.com/szhswl/comments/165840.htmlhttp://www.tkk7.com/szhswl/articles/165840.html#Feedback0http://www.tkk7.com/szhswl/comments/commentRss/165840.htmlhttp://www.tkk7.com/szhswl/services/trackbacks/165840.htmlRedhat Linux AS + VSFTPD-1.2.0-4

匿名服务器的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



]]>
LINUX9中vsftpd的配|手?/title><link>http://www.tkk7.com/szhswl/articles/165789.html</link><dc:creator>宋针q?/dc:creator><author>宋针q?/author><pubDate>Thu, 06 Dec 2007 05:58:00 GMT</pubDate><guid>http://www.tkk7.com/szhswl/articles/165789.html</guid><wfw:comment>http://www.tkk7.com/szhswl/comments/165789.html</wfw:comment><comments>http://www.tkk7.com/szhswl/articles/165789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/szhswl/comments/commentRss/165789.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/szhswl/services/trackbacks/165789.html</trackback:ping><description><![CDATA[本文档基于RedHat Linux 9和VSFTPD-1.1.3-8。如果有不同版本Q则有专门文字说明?<br /> <br /> 1、VSFTPDq?<br /> <br />   如果试问哪种FTP服务器最安全Q那么在UNIX和Linux中,首推的就是VSFTPQVery Secure FTP DaemonQ非常安全的FTP服务器)。顾名思义QVSFTPD设计的出发点是安全性。同旉着版本的不断升U,VSFTPD在性能和稳定性上也取得了极大的进展。象RedHat、SUSE、Debian、GNU、GNOME、KDE{一些大型站炚w采用VSFTPD作ؓ(f)它们的FTP服务器。大家可以到http://vsftpd.beasts.org/了解它的最新情c(din)?<br /> <br /> 2、VSFTPD的安?<br /> <br /> 2.1、RHL9+vsftpd-.1.1.3-8.i386.rpm包的安装 <br /> <br />   VSFTPD的安装很单。在RHL9中,在图形界面下依次执行“Main Menu”Q?#8220;System Settings”Q?#8220;Add/Remove Applications”Q选择FTP服务器-“更新”Q或者在字符界面中执行以下命令,可以完成安装?<br />   rpm -ivh vsftpd-1.1.3-8.i386.rpm <br /> <br /> 2.2、vsftpd-1.2.0.tar.gz的安?<br /> <br />   ⑴准备条?<br /> <br />   VSFTPD默认配置中需?#8220;nobody”用户。在pȝ中添加此用户Q如果用户已l存在,useradd命o(h)有相应提C?<br />   [root@hpe45 root]# useradd nobody <br />   useradd: user nobody exists <br /> <br />   VSFTPD默认配置中需?#8220;/usr/share/empty”目录。在pȝ中此目录Q如果目录已l存在,mkdir命o(h)有相应提C?<br />   [root@hpe45 root]# mkdir /usr/share/empty/ <br />   mkdir: cannot create directory '/usr/share/empty': File exists <br /> <br />   VSFTPD提供匿名FTP服务Ӟ需?#8220;ftp”用户和一个有效的匿名目录?<br />   [root@hpe45 root]# mkdir /var/ftp/ <br />   [root@hpe45 root]# useradd -d /var/ftp ftp <br />   接下来的操作对于ftp用户是否已经存在都是有用的?<br />   [root@hpe45 root]# chown root.root /var/ftp <br />   [root@hpe45 root]# chmod og-w /var/ftp <br /> <br />   늼译VSFTPD <br /> <br />   从官方站点下载到/root目录Q执行以下命令:(x) <br />   [root@hpe45 root]# tar zxvf vsftpd-1.2.0.tar.gz <br />   [root@hpe45 root]# cd vsftpd-1.2.0 <br />   [root@hpe45 vsftpd-1.2.0]# make <br /> <br />   ⑶安装编译好的VSFTPD <br /> <br />   执行“make install”编译好的二q制文g、手册等复制到相应目录。在RHL9上,可能需要手动执行以下复Ӟ(x) <br />   [root@hpe45 vsftpd-1.2.0]# cp vsftpd /usr/local/sbin/vsftpd <br />   [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf.5 /usr/local/share/man/man5 <br />   [root@hpe45 vsftpd-1.2.0]# cp vsftpd.8 /usr/local/share/man/man8 <br />   此外Q?#8220;make install”没有复制单的配置文gQ徏议执行以下命令:(x) <br />   [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf /etc <br /> <br />   ⑷ؓ(f)本地用户讄PAM <br /> <br />   如果允许本地用户dVSFTPDQ执行以下操作:(x) <br />   [root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp <br /> <br /> 3、VSFTPD的文件结?<br /> <br />   VSFTPD的文件结构是很简z的Q主要包括:(x) <br />   /usr/sbin/vsftpd ---- VSFTPD的主E序 <br />   /etc/rc.d/init.d/vsftpd ---- 启动脚本 <br />   /etc/vsftpd/vsftpd.conf ---- 主配|文?<br />   /etc/pam.d/vsftpd ---- PAM认证文g <br />   /etc/vsftpd.ftpusers ---- 止使用VSFTPD的用户列表文?<br />   /etc/vsftpd.user_list ---- 止或允怋用VSFTPD的用户列表文?<br />   /var/ftp ---- 匿名用户ȝ?<br />   /var/ftp/pub      ---- 匿名用户的下载目?<br />   此外Q还有一些说明文档和手册文g?<br /> <br />   此外VSFTPD的日志文件位?etc/logrotate.d/vsftpd.log?<br /> <br /> 4、VSFTPD的启动与停止 <br /> <br />   VSFTPD可以单独(Standalone)方式q行Q如同httpd、namedq类的服务器的运行方式,q是RHL9中默认的方式Q也可以采用xinetd方式q行Q这是RHL7.x?中的默认方式。具体的q行方式由参数l(f)isten军_。从RHL中VSFTPD的运行方式,也可以看出VSFTPD的逐步发展?<br /> <br />   当listen参数gؓ(f)YESӞRHL9中的默认|VSFTPD单独q行Q我们可以用脚?etc/rc.d/init.d/vsftpd来启动、关闭以?qing)重启VSFTPD。命令如下:(x) <br />   /etc/rc.d/init.d/vsftpd start|stop|restart <br /> <br />   如果说在RHL9上,(zhn)还希望使用Xinetd启动VSFTPD的运行方式,那么首先要将vsftpd.conf配置文g中的listen参数值改为NO。其ơ,生成一?etc/xinetd.d/vsftpd文gQ内容如下:(x) <br />   service vsftpd <br />   { <br />   disable = no <br />   socket_type = stream <br />   wait = no <br />   user = root <br />   server = /usr/sbin/vsftpd <br />   port = 21 <br />   log_on_success += PID HOST DURATION <br />   log_on_failure += HOST <br />   } <br />   通过修改disablegؓ(f)no或yesQƈ重新启动xinetdQ从而启动或停止VSFTPD?<br /> <br />   ׃VSFTPD的单独模式已l拥有够的能力Q所以后?中讨论到的应用,都是以单独模式来q行的,而非Xinetd方式?<br /> <br />   注:(x)q可以直接执行vsftpd来启动FTP服务Q关闭时使用“kill”命o(h)?<br />   [root@hpe45 root]# /usr/local/sbin/vsftpd & <br /> <br /> 5、VSFTPD的设|选项 <br /> <br />   VSFTPD的配|文?etc/vsftpd/vsftpd.conf是个文本文g。以“#”字符开始的行是注释行。每个选项讄Z行,格式?#8220;option=value”Q注?#8220;=”号两边不能留I白W。除了这个主配置文g外,q可以给特定用户讑֮个h配置文gQ具体介l见后?<br />   VSFTPD包中所带的vsftpd.conf文g配置比较单,而且非常偏执狂的Q文档自U?-)Q。我们可以根据实际情况对其进行一些设|,以得VSFTPD更加可用?<br /> <br /> 5.1、连接选项 <br /> <br />   本部分主要是一些与建立FTP链接相关的选项?<br /> <br /> 5.1.1、监听地址与控制端?<br /> <br />   listen_address=ip address <br />   此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了在L的哪个IP地址上监听F(xin)TPhQ即在哪个IP地址上提供FTP服务。对于只有一个IP地址的主机,不需要用此参数。对于多址LQ不讄此参敎ͼ则监听所有IP地址。默认gؓ(f)无?<br /> <br />   listen_port=port_value <br />   指定FTP服务器监听的端口?控制端口)Q默认gؓ(f)21。此选项在standalone模式下生效?<br /> <br /> 5.1.2、FTP模式与数据端?<br /> <br />   FTP 分ؓ(f)两类QPORT FTP和PASV FTPQPORT FTP是一般Ş式的FTP。这两种FTP在徏立控制连接时操作是一L(fng)Q都是由客户端首先和FTP服务器的控制端口(默认gؓ(f)21)建立控制链接Qƈ通过此链接进行传输操作指令。它们的区别在于使用数据传输端口(ftp-data)的方式。PORT FTP由FTP服务器指定数据传输所使用的端口,默认gؓ(f)20。PASV FTP由FTP客户端决定数据传输的端口。PASV FTPq种做法Q主要是考虑到存在防火墙的环境下Q由客户端与服务器进行沟?客户端向服务器发出数据传输请求中包含了数据传输端?Q决定两者之间的数据传输端口更ؓ(f)方便一些?<br /> <br />   port_enable=YES|NO <br />   如果你要在数据连接时取消PORT模式Ӟ设此选项为NO。默认gؓ(f)YES?<br /> <br />   connetc_from_port_20=YES|NO <br />   控制以PORT模式q行数据传输时是否?0端口(ftp-data)。YES使用QNO不用。默认gؓ(f)NOQ但RHL自带的vsftpd.conf文g中此参数设ؓ(f)YES?<br /> <br />   ftp_data_port=port number <br />   讑֮ftp数据传输端口(ftp-data)倹{默认gؓ(f)20。此参数用于PORT FTP模式?<br /> <br />   port_promiscuous=YES|NO <br />   默认gؓ(f)NO。ؓ(f)YESӞ取消PORT安全查。该查确保外出的数据只能q接到客L(fng)上。小心打开此选项?<br /> <br />   pasv_enable=YES|NO <br />   YESQ允许数据传输时使用PASV模式。NOQ不允许使用PASV模式。默认gؓ(f)YES?<br /> <br />   pasv_min_port=port number <br />   pasv_max_port=port number <br />   讑֮在PASV模式下,建立数据传输所可以使用port范围的下界和上界Q? 表示L。默认gؓ(f)0。把端口范围讑֜比较高的一D范围内Q比?0000-60000Q将有助于安全性的提高?<br /> <br />   pasv_promiscuous=YES|NO <br />   此选项ȀzLQ将关闭PASV模式的安全检查。该查确保数据连接和控制q接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道Ҏ(gu)构成的组l中。默认gؓ(f)NO?<br /> <br />   pasv_address= <br />   此选项Z个数字IP地址Q作为PASV命o(h)的响应。默认gؓ(f)noneQ即地址是从呼入的连接套接字(incoming connectd socket)中获取?<br /> <br /> 5.1.3 ASCII模式 <br /> <br />   默认情况下,VSFTPD是禁止用ASCII传输模式。即使FTP客户端用asc命o(h)Q指明要使用ASCII模式Q但是,VSFTPD表面上接受了asc命o(h)Q而在实际传输文gӞq是使用二进制方式。下面选项控制VSFTPD是否使用ASCII传输模式?<br /> <br />   ascii_upload_enable=YES|NO <br />   控制是否允许使用ascii模式上传文gQYES允许QNO不允许,默认为NO?<br /> <br />   ascii_download_enable=YES|NO <br />   控制是否允许使用ascii模式下蝲文gQYES允许QNO不允许,默认为NO?<br /> <br /> 5.2、性能与负载控?<br /> <br /> 5.2.1、超旉项 <br /> <br />   idle_session_timeout= <br />   I闲Q发呆)用户?x)话的超时时_(d)若是出q时间没有数据的传送或是指令的输入Q则?x)强q断Uѝ单位ؓ(f)U,默认gؓ(f)300?<br /> <br />   data_connection_timeout= <br />   I闲的数据连接的时旉。默认gؓ(f)300 U?<br /> <br />   accept_timeout=numerical value <br />   接受建立联机的超时设定,单位为秒。默认gؓ(f)60?<br /> <br />   connect_timeout=numerical value <br />   响应PORT方式的数据联机的时讑֮Q单位ؓ(f)U。默认gؓ(f)60。以上两个选项针对客户端的Q将使客L(fng)I闲1分钟后自动中断连接,q在中断1分钟后自动激z连接?<br /> <br /> 5.2.2 负蝲控制 <br /> <br />   max_clients=numerical value <br />   此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了FTP服务器最大的q发q接敎ͼ当超q此q接数时Q服务器拒绝客户端连接。默认gؓ(f)0Q表CZ限最大连接数?<br /> ?<br />   max_per_ip=numerical value <br />   此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义每个IP地址最大的q发q接数目。超q这个数目将?x)拒l连接。此选项的设|将影响到象|际快Rq类的多q程下蝲软g。默认gؓ(f)0Q表CZ限制?<br /> <br />   anon_max_rate=value <br />   讑֮匿名用户的最大数据传输速度valueQ以Bytes/s为单位。默认无?<br /> <br />   local_max_rate=value <br />   讑֮用户的最大数据传输速度valueQ以Bytes/s为单位。默认无。此选项Ҏ(gu)有的用户都生效。此外,也可以在用户个h配置文g中用此选项Q以指定特定用户可获得的最大数据传输速率?<br />   步骤如下Q?<br />   ①在vsftpd.conf中指定用户个人配|文件所在的目录Q如Q?<br />   user_config_dir=/etc/vsftpd/userconf <br />   ②生?etc/vsftpd/userconf目录?<br />   ③用户个人配|文件是在该目录下,与特定用户同名的文gQ如Q?<br />   /etc/vsftpd/userconf/xiaowang <br />   ④在用户的个人配|文件中讄local_max_rate参数Q如Q?<br />   local_max_rate=80000 <br />   以上步骤讑֮FTP用户xiaowang的最大数据传输速度?0KBytes/s?<br /> <br />   VSFTPD 对于速度控制的变化范围大概在80%?20%之间。比如我们限制最高速度?00KBytes/sQ?但实际的速度可能?0KBytes/s ?20KBytes/s 之间。当Ӟ若是U\带宽不Ӟ速率自然?x)低于此限制?<br /> <br /> 5.3 用户选项 <br /> <br />   VSFTPD的用户分Zc:(x)匿名用户、本地用Plocal userQ以?qing)虚拟用PguestQ?<br /> <br /> 5.3.1、匿名用?<br /> <br />   anonymous_enable=YES|NO <br />   控制是否允许匿名用户dQYES允许QNO不允许,默认gؓ(f)YES?<br /> <br />   ftp_username= <br />   匿名用户所使用的系l用户名。默认下Q此参数在配|文件中不出玎ͼgؓ(f)ftp?<br /> <br />   no_anon_password=YES|NO <br />   控制匿名用户d时是否需要密码,YES不需要,NO需要。默认gؓ(f)NO?<br />    <br />   deny_email_enable=YES|NO <br />   此参数默认gؓ(f)NO。当gؓ(f)YESӞ拒绝使用banned_email_file参数指定文g中所列出的e-mail地址q行d的匿名用戗即Q当匿名用户使用banned_email_file文g中所列出的e-mailq行dӞ被拒l。显Ӟq对于阻?yn)L些Dosd有效。当此参数生效时Q需q加banned_email_file参数 <br /> <br />   banned_email_file=/etc/vsftpd.banned_emails <br />   指定包含被拒l的e-mail地址的文Ӟ默认文g?etc/vsftpd.banned_emails?<br /> <br />   anon_root= <br />   讑֮匿名用户的根目录Q即匿名用户d后,被定位到此目录下。主配置文g中默认无此项Q默认gؓ(f)/var/ftp/?<br /> <br />   anon_world_readable_only=YES|NO <br />   控制是否只允许匿名用户下载可阅读文档。YESQ只允许匿名用户下蝲可阅ȝ文g。NOQ允许匿名用h览整个服务器的文件系l。默认gؓ(f)YES?<br /> <br />   anon_upload_enable=YES|NO <br />   控制是否允许匿名用户上传文gQYES允许QNO不允许,默认是不讑ր|即ؓ(f)NO。除了这个参数外Q匿名用戯能上传文Ӟq需要两个条Ӟ(x)一Qwrite_enable参数为YES;二,在文件系l上QFTP匿名用户Ҏ(gu)个目录有写权限?<br /> <br />   anon_mkdir_write_enable=YES|NO <br />   控制是否允许匿名用户创徏新目录,YES允许QNO不允许,默认是不讑ր|即ؓ(f)NO。当然在文gpȝ上,FTP匿名用户必需Ҏ(gu)目录的上层目录拥有写权限?<br /> <br />   anon_other_write_enable=YES|NO <br />   控制匿名用户是否拥有除了上传和新建目录之外的其他权限Q如删除、更名等。YES拥有QNO不拥有,默认gؓ(f)NO?<br /> <br />   chown_uploads=YES|NO <br />   是否修改匿名用户所上传文g的所有权。YESQ匿名用h上传的文件的所有权?yu)改为另外一个不同的用户所有,用户由chown_username参数指定。此选项默认gؓ(f)NO?<br /> <br />   chown_username=whoever <br />   指定拥有匿名用户上传文g所有权的用戗此参数与chown_uploads联用。不推荐使用root用户?<br /> <br /> 5.3.2、本地用?<br /> <br />   在用FTP服务的用户中Q除了匿名用户外Q还有一cdFTP服务器所属主Z拥有账号的用戗VSFTPD中称此类用户为本地用Plocal usersQ,{同于其他FTP服务器中的real用户?<br /> <br />   local_enable=YES|NO <br />   控制vsftpd所在的pȝ的用h否可以登录vsftpd。默认gؓ(f)YES?<br /> <br />   local_root= <br />   定义所有本地用L(fng)根目录。当本地用户dӞ被更换到此目录下。默认gؓ(f)无?<br /> <br />   user_config_dir= <br />   定义用户个h配置文g所在的目录。用L(fng)个h配置文g目录下的同名文g。个人配|文件的格式与vsftpd.conf格式相同。例如定义user_config_dir=/etc/vsftpd/userconfQƈ且主Z有用户xiaowang,lisiQ那我们可以在user_config_dir的目录新增名为xiaowang、lisi的两个文件。当用户lisi dӞVSFTPD则会(x)duser_config_dir下lisiq个文g中的讑֮|应用于用户lisi。默认gؓ(f)无?<br /> <br /> 5.3.3、虚拟用?<br /> <br />   guest_enable=YES|NO <br />   若是启动q项功能Q所有的非匿名登入者都视ؓ(f)guest。默认gؓ(f)关闭?<br /> <br />   guest_username= <br />   定义VSFTPD的guest用户在系l中的用户名。默认gؓ(f)ftp?<br /> <br /> 5.4、安全措?<br /> <br /> 5.4.1、用L(fng)录控?<br /> <br />   pam_service_name=vsftpd <br />   指出VSFTPDq行PAM认证时所使用的PAM配置文g名,默认值是vsftpdQ默认PAM配置文g?etc/pam.d/vsftpd?<br /> <br />   /etc/vsftpd.ftpusers <br />   VSFTPD止列在此文件中的用L(fng)录FTP服务器。这个机制是?etc/pam.d/vsftpd中默认设|的?<br /> <br />   userlist_enable=YES|NO <br />   此选项被激zdQVSFTPD读取userlist_file参数所指定的文件中的用户列表。当列表中的用户dFTP服务器时Q该用户在提C入密码之前就被禁止了。即该用户名输入后,VSFTPD查到该用户名在列表,VSFTPDq接禁止掉该用P不会(x)再进行询问密码等后箋步聚。默认gؓ(f)NO?<br /> <br />   userlist_file=/etc/vsftpd.user_list <br />   指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpd.user_list?<br /> <br />   userlist_deny=YES|NO <br />   军_止q是只允许由userlist_file指定文g中的用户dFTP服务器。此选项在userlist_enable 选项启动后才生效。YESQ默认|止文g中的用户dQ同时也不向q些用户发出输入口o(h)的提C。NOQ只允许在文件中的用L(fng)录FTP服务器?<br />    <br />   tcp_wrappers=YES|NO <br />   在VSFTPD中用TCP_Wrappersq程讉K控制机制Q默认gؓ(f)YES?<br /> <br /> 5.4.2、目录访问控?<br /> <br />   chroot_list_enable=YES|NO <br />   锁定某些用户在自家目录中。即当这些用L(fng)录后Q不可以转到pȝ的其他目录,只能在自家目??qing)其子目?下。具体的用户在chroot_list_file参数所指定的文件中列出。默认gؓ(f)NO?<br /> <br />   chroot_list_file=/etc/vsftpd/chroot_list <br />   指出被锁定在自家目录中的用户的列表文件。文件格式ؓ(f)一行一用户。通常该文件是/etc/vsftpd/chroot_list。此选项默认不设|?<br /> <br />   chroot_local_users=YES|NO <br />   本地用户锁定在自家目录中。当此项被激zLQchroot_list_enable和chroot_local_users参数的作用将发生变化Qchroot_list_file所指定文g中的用户不被锁定在自家目录。本参数被激zdQ可能带来安全上的冲H,特别是当用户拥有上传、shell讉K{权限时。因此,只有在确实了解的情况下,才可以打开此参数。默认gؓ(f)NO?<br /> <br />   passwd_chroot_enable <br />   当此选项ȀzLQ与chroot_local_user选项配合Qchroot()容器的位|可以在每个用户的基上指定。每个用L(fng)容器来源?etc/passwd中每个用L(fng)自家目录字段。默认gؓ(f)NO?<br /> <br /> 5.4.3、文件操作控?<br /> <br />   hide_ids=YES|NO <br />   是否隐藏文g的所有者和l信息。YESQ当用户使用"ls -al"之类的指令时Q在目录列表中所有文件的拥有者和l信息都昄为ftp。默认gؓ(f)NO?<br /> <br />   ls_recurse_enable=YES|NO <br />   YESQ允怋?ls -R" 指o(h)。这个选项有一个小的安全风险,因ؓ(f)在一个大型FTP站点的根目录下?ls -R"?x)消耗大量系l资源。默认gؓ(f)NO?<br /> <br />   write_enable=YES|NO <br />   控制是否允许使用M可以修改文gpȝ的FTP 的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及(qing)SITE。默认gؓ(f)NOQ不q自带的单配|文件中打开了该选项?<br /> <br />   secure_chroot_dir= <br />   q选项指向一个空目录Qƈ且ftp用户Ҏ(gu)目录无写权限。当vsftpd不需要访问文件系l时Q这个目录将被作Z个安全的容器Q用户将被限制在此目录中。默认目录ؓ(f)/usr/share/empty?<br /> <br /> 5.4.4、新增文件权限设?<br /> <br />   anon_umask= <br />   匿名用户新增文g的umask 数倹{默认gؓ(f)077?<br /> <br />   file_open_mode= <br />   上传档案的权限,与chmod 所使用的数值相同。如果希望上传的文g可以执行Q设此gؓ(f)0777。默认gؓ(f)0666?<br /> <br />   local_umask= <br />   本地用户新增档案时的umask 数倹{默认gؓ(f)077。不q,其他大多数的FTP服务器都是?22。如果?zhn)的用户希望的话,可以修改?22。在自带的配|文件中此项pZ022?<br /> <br /> 5.5、提CZ?<br /> <br />   ftpd_banner=login banner string <br />   此参数定义了login banner stringQ登录欢q语字符Ԍ。用户可以自行修攏V预讑րgؓ(f)无。当ftpd_banner讄后,取代系l原来的Ƣ迎词?<br /> <br />   banner_file=/directory/vsftpd_banner_file <br />   此项指定一个文本文Ӟ当用者登入时Q会(x)昄此该文g的内容,通常为欢q话语或是说明。默认gؓ(f)无。与ftpd_banner相比Qbanner_file是文本文件的形式Q而ftpd_banner是字串格式。banner_file选项取代ftpd_banner选项?<br /> <br />   dirmessage_enable=YES|MO <br />   控制是否启用目录提示信息功能。YES启用QNO不启用,默认gؓ(f)YES。此功能启用后,当用戯入某一个目录时Q会(x)查该目录下是否有message_file选项所指定的文档,若是有,则会(x)出现此文档的内容Q通常q个档案?x)放|欢q话语,或是对该目录的说明?<br /> <br />   message_file= <br />   此选项Q仅在dirmessage_enable选项ȀzL生效。默认gؓ(f).message?<br /> <br /> 5.6、日志设|?<br /> <br />   xferlog_enable=YES|NO <br />   控制是否启用一个日志文Ӟ用于详细记录上传和下载。该日志文g由xferlog_file选项指定。默认gؓ(f)NOQ但单配|文件中ȀzL选项?<br /> <br />   xferlog_file= <br />   q个选项讑֮记录传输日志的文件名。默认gؓ(f)/var/log/vsftpd.log?<br /> <br />   xferlog_std_format=YES|NO <br />   控制日志文g是否使用xferlog的标准格式,如同wu-ftpd一栗用xferlog格式Q可以重C用已l存在的传输l计生成器。然而,默认的日志格式更为可L。默认gؓ(f)NOQ但自带的配|文件中ȀzM此选项?<br /> <br />   log_ftp_protocol=YES|NO <br />   当此选项ȀzdQ所有的FTPh和响应都被记录到日志中。提供此选项Ӟxferlog_std_format不能被激zR这个选项有助于调试。默认gؓ(f)NO?<br /> <br /> 5.7、其他设|?<br /> <br />   setproctitle_enable=YES|NO <br />   YESQVSFTPD在pȝq程列表中显C每个会(x)?session)的状态。也是_(d)q程报告显C每个vsftpd?x)话在做什?挂v、下载等)Q如用ps -ef|grep ftp。出于安全的目的Q可以考虑此选项关闭。NOQ进E报告只昄一个vsftpdq程在运行。默认gؓ(f)NO?<br /> <br />   text_userdb_names=YES|No <br />   当用者登入后使用ls -al 之类指o(h)Ӟ目录列表的用户和l信息域Q默认是出现拥有者的UIDQ而不是该档案拥有者的名称。若是希望出现拥有者的名称Q则此功能开启。默认gؓ(f)NO?<br /> <br />   user_localtime=YES|NO <br />   默认为NO。YESQVSFTPD昄目录列表时用你本地时区的时间。默认是昄GMT旉。同P由ftp命o(h)“MDTM”q回的时间g受此选项影响?<br /> <br />   check_shell=YES|NO <br />   此选项仅对不用PAM方式的VSFTPD生效。当此选项关闭后,当本地用L(fng)录时QVSFTPD不会(x)?etc/shells文g以寻找一个有效的用户shell。默认ؓ(f)YES?<br /> <br />   nopriv_user= <br />   指定一个用P当VSFTPD不想要什么权限时Q用此用户w䆾。这用户最好是一个专用的用户Q而不是用户nobody。在大多数的机器上,nobody用户被用于大量重要的事情。默认gؓ(f)nobody?<br /> <br />   pam_service_name= <br />   指明VSFTPD使用用PAM验证服务时的PAM配置文g名。默认gؓ(f)ftp?<br /> <br /> 6、VSFTPD应用 <br /> <br />   本部分介lVSFTPD的具体应用方法?<br /> <br /> 6.1、允许匿名用户上传文?<br /> <br />   在vsftpd.conf文g中修Ҏ(gu)增加以下选项Q?<br />   write_enable=YES <br />   anon_world_readable_only=NO <br />   anon_upload_enable=YES <br />   anon_mkdir_write_enable=YES <br /> <br />   然后创徏供匿名用户上传文件的目录Qƈ讑֮权限Q?<br />   # mkdir /var/ftp/incoming <br />   # chmod o+w /var/ftp/incoming <br />   ׃匿名用户QftpQ上传文Ӟ需要对incoming目录q行操作Q而incoming为root所有,匿名用户QftpQ对于incoming来说是其他用P所以要加入其他用户QoQ的写权限?<br /> <br /> 6.2、限制用户在自家目录 <br /> <br />   在默认配|中Q本地用户可以切换到自家目录以外的目录进行浏览,q在权限范围内进行上传和下蝲Q这无疑是个不安全因素?<br />   我们可以讄chrootQ让本地用户d后只能访问自家目录,无法讉K其他目录。相关的选项有三个:(x)chroot_local_user、chroot_list_enable、chroot_list_file。限制用户在自家目录有两U做法:(x) <br />   1、限制所有的本地用户在自家目?<br />   chroot_local_user=YES <br />   q种做法Q可能会(x)带来一些安全性上的冲H。参见前面的chroot_local_user选项描述?<br />   2、限刉分本地用户在自家目录 <br />   chroot_local_user=NO <br />   chroot_list_enable=YES <br />   chroot_list_file=/etc/vsftpd.chroot_list <br />   ?etc/vsftpd.chroot_list文g中加入要限制的本地用户名。注意一个用户名一行?<br /> <br /> 6.3、配|高安全U别的匿名FTP服务?<br /> <br />   VSFTPD自带的简单配|文件已l自U是偏执狂了Q这里看看能否更加偏执一些,:)。有些选项默认已经采用安全性的讄Q这里就不再写出了?<br /> <br />   #只允许匿名访问,不允许本地用戯?<br />   anonymous_enable=YES <br />   local_enable=NO <br /> <br />   #使用ftpd_banner取代VSFTPD默认的欢q词Q免得泄漏相关信?<br />   ftpd_banner=Welcome to this FTP Server <br />   #只让匿名用户览可阅ȝ文gQ不可以览整个pȝ <br />   anon_world_readable_only=YES <br />   #隐藏文g的所有者和l信息,匿名用户看到的文件的所有者和l全变ؓ(f)ftp <br />   hide_ids=YES <br /> <br />   #取消写权?<br />   write_enable=NO <br />   anon_upload_enable=NO <br />   anon_mkdir_write_enable=NO <br />   anon_other_write_enable=NO <br /> <br />   #使用单独模式Qƈ指定监听的IP地址 <br />   listen_address=ip address <br />   #对连接进行控Ӟq有时旉Q那根据具体情况再说了?<br />   connect_from_port_20=YES <br />   pasv_min_port=50000 <br />   pasv_max_port=60000 <br />   #控制q发敎ͼ限定每个IP地址的ƈ发数Q这个嘛Q根据用戯已定了?<br />   max_clients=numerical value <br />   max_per_ip=numerical value <br />   #限定下蝲速度Q具体限多大Q就q戯己定了,80KB/sQ也很快了吧?<br />   anon_max_rate=80000 <br /> <br />   #启用详细的日志记录格?<br />   xferlog_enable=YES <br /> <br /> 6.4、基于IP地址的虚拟FTP服务?<br /> <br />   假定服务器有两个IP地址Q?92.168.0.1?92.168.0.2。VSFTPD是徏立在192.168.0.1上的Q现在我们在192.168.0.2上再提供一个虚拟FTP服务器。如何在一台服务器上用多个IP 地址Q请参考相x档?<br /> <br />   1、创拟FTP服务器的根目录?<br />   mkdir -p /var/ftp2/pub <br />   保/var/ftp2?var/ftp2/pub目录的拥有者和l均为rootQ掩码ؓ(f)755?<br /> <br />   2、增加虚拟FTP服务器的匿名用户帐号。原先的FTP服务器用系l用户ftp作ؓ(f)其匿名用户帐受我们要增加一个ftp2用于虚拟FTP服务器?<br />   useradd -d /var/ftp2 -M ftp2 <br /> <br />   3、创拟FTP服务器的配置文g。复制原来的vsftpd.conf作ؓ(f)虚拟FTP服务器的配置文gQƈ修改相关参数?<br />   cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd2.conf <br />   新添或修改以下参敎ͼ(x) <br />   listen=YES <br />   listen_address=192.168.0.2 <br />   ftp_username=ftp2 <br /> <br />   注:(x)׃VSFTPD默认是监听所有的IP地址Q当我们讑֮ZIP的虚拟FTP服务器时Qؓ(f)防止原来的FTP服务器与虚拟FTP服务器发生监听上的冲H,原FTP服务器需要指定监听的IP地址。在q里Q原来的配置文g中就要设|listen_address=192.168.0.1?<br /> <br />   4、启动虚拟FTP服务器?<br /> <br />   /etc/rc.d/init.d/vsftpd脚本在启动时Q扫?etc/vsftpd/目录下所有的*.conf文gQ按?.conf文g的先后,依次启用vsftpdq程Q每个vsftpdq程对应一?conf文g。即Q?#8220;ls /etc/vsftpd/”列表的次序与“ps -aux |grep vsftpd”中的序一栗当然了Q?#8220;ps -aux | grep vsftpd”中也昄出vsftpd所使用的配|文Ӟ从中也可以看哪个vsftpdq程对应哪个FTP服务器。如果没有列出配|文Ӟ那就是默认的vsftpd.confQ那么该q程也就是原来的FTP服务器进E?<br />   ׃W?步中虚拟FTP服务器的配置文g被命名ؓ(f)vsftpd2.conf文gQ所以我们可以用/etc/rc.d/init.d/vsftpd脚本同时启动或关闭原FTP服务器和新加的虚拟FTP服务器?<br />   以下命o(h)单独启动虚拟FTP服务器:(x) <br />   /usr/sbin/vsftpd /etc/vsftpd/vsftpd2.conf & <br />   单独关闭虚拟FTP服务器,?#8220;ps -aux | grep vsftpd”查出q程P再用kill指o(h)杀死虚拟FTP的进E?<br /> <br /> 6.5、虚拟用L(fng)配置 <br /> <br /> 6.5.1、VSFTPD的虚拟用户介l?<br /> <br />   VSFTPD的本地用hw是pȝ的用P除了可以dFTP服务器外Q还可以dpȝ使用其他pȝ资源Q而VSFTPD的虚拟用户则是FTP服务的专用用P虚拟用户只能讉KFTP服务器资源。对于只需要通过FTP对系l有d权限Q而不需要其他系l资源的用户或情冉|_(d)采用虚拟用户方式是很适合的?<br />   VSFTPD的虚拟用户采用单独的用户?口o(h)保存方式Q与pȝ账号Qpasswd/shadowQ分,q大大增Zpȝ的安全性。VSFTPD可以采用数据库文件来保存用户/口o(h)Q如hash;也可以将用户/口o(h)保存在数据库服务器中Q如MySQL{。VSFTPD验证虚拟用户Q则采用PAM方式。由于虚拟用L(fng)用户?口o(h)被单独保存,因此在验证时QVSFTPD需要用一个系l用L(fng)w䆾来读取数据库文g或数据库服务器以完成验证Q这是guest用户Q这正如同匿名用户也需要有一个系l用户ftp一栗当Ӟguest用户也可以被认ؓ(f)是用于映虚拟用戗?<br />   配置虚拟用户分ؓ(f)几部分:(x)guest用户的创建、用?口o(h)的保存、PAM认证配置、vsftpd.conf文g讄{。具体的配置Ҏ(gu)Q参考下面小节。注Q在后面的例子中Q假定存在虚拟用户xiaotong和xiaowang?<br /> <br /> 6.5.2 用户创徏和目录设|?<br /> <br />   在系l中dvsftpdguest用户Q作拟用户在pȝ中的代表?<br /> <br />   useradd vsftpdguest <br /> <br />   当虚拟用L(fng)录后Q所在的位置为vsftpdguest的自家目?home/vsftpdguest。如果要让虚拟用L(fng)录到/var/ftp{其他目录,修改vsftpdguest的自家目录即可?<br /> <br /> 6.5.3、配|文件的讄 <br /> <br /> 6.5.3.1、基本设|?<br /> <br />   在vsftpd.conf配置文g中,加入以下参数Q?<br />   guest_enable=YES <br />   guest_username=vsftpdguest <br /> <br /> 6.5.3.2、虚拟用L(fng)权限配置?<br /> <br />   VSFTPD-1.2.0d了virtual_use_local_privs参数Q当该参数激z(YESQ时Q虚拟用户用与本地用户相同的权限。当此参数关闭(NOQ时Q虚拟用户用与匿名用户相同的权限,q也是VSFTPD-1.2.0之前版本对虚拟用h限的处理Ҏ(gu)。这两者种做法相比Q后者更加严g些,特别是在有写讉K的情形下。默认情况下此参数是关闭的(NOQ?<br />   下面先介lvirtual_use_local_privs=NOӞ即VSFTPD-1.2.0之前版本对虚拟用h限的配置Ҏ(gu)Q?<br /> <br />   ①控制虚拟用h览目?<br />   如果让用户不能浏览目录,但仍可以Ҏ(gu)件操作,那么需要执行以下二个步骤:(x)一Q配|文件中Qanon_world_readable_only=YES。二Q虚拟用L(fng)录的权限改ؓ(f)只能由vsftpdguest操作Q?<br />   [root@hpe45 vsftpd]# chown vsftpdguest.vsftpdguest /home/vsftpdguest <br />   [root@hpe45 vsftpd]# chmod 700 /home/vsftpdguest <br />   ②允许虚拟用户上传文?<br />   write_enable=YES <br />   anon_upload_enable=YES <br />   ③允许虚拟用户修Ҏ(gu)件名和删除文?<br />   anon_other_write_enable=YES <br />   ׃以上选项的设|同样会(x)对匿名用L(fng)效。如果不惛_名用戯机拥有同L(fng)权限Q最好是止匿名用户d?<br /> <br />   在VSFTPD-1.2.0中当virtual_use_local_privs=YESӞ只需write_enable=YESQ虚拟用户就可以拥有写权限?<br /> <br /> 6.5.3.3、虚拟用L(fng)其他配置 <br /> <br />   ①限定虚拟用户在自家目录?<br /> <br />   chroot_local_user=NO <br />   chroot_list_enable=YES <br />   chroot_list_file=/etc/vsftpd.chroot_list <br />   ?etc/vsftpd.chroot_list文g中加入xiaotong和xiaowang?<br />   或者,chroot_local_user=YES <br /> <br />   ②虚拟用L(fng)个h配置?<br /> <br />   如果惌个别的虚拟用h有自q别的配置Q同样可以徏立虚拟用L(fng)个h配置文g。在主配|文件中加入Q?<br />   user_config_dir=/etc/vsftpd/vsftpd_user_conf <br />   生成/etc/vsftpd/vsftpd_user_conf目录Q在该目录下建立与特定虚拟用户同名的文gQ?<br />   [root@hpe45 vsftpd]# mkdir vsftpd_user_conf <br />   [root@hpe45 vsftpd]# cd vsftpd_user_conf <br />   [root@hpe45 vsftpd_user_conf]# touch xiaowang <br />   然后在xiaowang文g中就可以加入专对xiaowang生效的选项讄了?<br />   注:(x)如果在个人配|文件中加入chroot_local_user=YES是无效的?<br /> <br /> 6.5.3.4、虚拟用户个人目录设|?<br /> <br />   大家可以发现Q无论是哪个虚拟用户Q登录后所在的目录都是/home/vsftpdguestQ即都是guest_username用户的自家目录。下面,介绍如何为每个虚拟用户徏立自家目录?<br />   一U作法是在虚拟用L(fng)个h配置文g中用local_root选项指定虚拟用户的自家目录。以xiaowangZQ在W上步的基础上,首先/etc/vsftpd/vsftpd_user_conf/xiaowang文g中加入:(x) <br />   local_root=/home/xiaowang <br />   新徏xiaowang目录Qƈ权限设为vsftpdguestQ?<br />   [root@hpe45 home]# mkdir xiaowang <br />   [root@hpe45 home]# chown vsftpdguest.vsftpdguest ./xiaowang <br /> <br /> 6.5.4、MySQL保存虚拟用户 <br /> <br />   本节介绍如何虚拟用L(fng)用户名和口o(h)保存在MySQL的数据库中。这主要分二个部分,一是将用户和口令保存在数据库,二是讄相应的PAM认证。ؓ(f)了方便论qͼ做如下假定:(x)数据库vsftpdvuQ表usersQ字Dname和passwd用于保存虚拟用户的用户名和口令;Z安全Q只授权vsftpdguest读vsftpdvu数据库的users表?<br /> <br />   1、虚拟用L(fng)用户?口o(h)的保存。这部分在MySQL数据库中完成。首先,创徏数据库vsftpdvu以及(qing)表usersQƈ插入虚拟用户xiaotong、xiaowang。执行以下命令:(x) <br />   [root@hpe45 vsftpd]#mysql -p <br />   mysql>create database vsftpdvu; <br />   mysql>use vsftpdvu; <br />   mysql>create table users(name char(16) binary,passwd char(16) binary); <br />   mysql>insert into users (name,passwd) values ('xiaotong',password('qqmywife')); <br />   mysql>insert into users (name,passwd) values ('xiaowang',password('ttmywife')); <br />   mysql>quit <br /> <br />   然后Q授权vsftpdguest只能读vsftpdvu数据库的users表。执行以下命令:(x) <br />   [root@hpe45 vsftpd]#mysql -u root mysql -p <br />   mysql>grant select on vsftpdvu.users to <a href="mailto:vsftpdguest@localhost"><font color="#808080">vsftpdguest@localhost</font></a> identified by 'i52serial0'; <br />   mysql>quit <br /> <br />   如果要验证刚才的操作是否成功可以执行下面命o(h)Q?<br />   [root@hpe45 vsftpd]#mysql -u vsftpdguest -pi52serial0 vsftpdvu <br />   mysql>select * from users; <br />   如果成功Q将?x)列出xiaotong、xiaowang和加密后的密码?<br /> <br />   2、设|PAM认证。这里我们要用到一个利用mysqlq行pam验证的开源项目(http://sourceforge.net/projects/pam-mysql/Q。首先从|站下蝲它的E序包pam_myql-0.5.tar.gzQ复制到/root目录中。在~译安装之前Q要保mysql-devel的RPM包已l安装在你的机器上,如果没有请从RHL安装光盘中安装该包。然后,执行以下命o(h)Q?<br />   [root@hpe45 root]#tar xvzf pam_mysql-0.5.tar.gz <br />   [root@hpe45 root]#cd pam_mysql <br />   [root@hpe45 pam_mysql]#make <br />   [root@hpe45 pam_mysql]#make install <br />   make installq一步可能会(x)出现错误Q那只好手动该目录下生成的pam_mysql.o复制?lib/security目录下?<br />   接下来,我们要设|vsftpd的PAM验证文g。打开/etc/pam.d/vsftpd文gQ加入以下内容:(x) <br />   auth required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2 <br />   account required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2 <br />   上面涉及(qing)到的参数Q只要对应前面数据库的设|就可以明白它们的含义。这里需要说明的是crypt参数Qcrypt=0Q口令以明文方式Q不加密Q保存在数据库中Qcrypt=1Q口令用UNIXpȝ的DES加密方式加密后保存在数据库中Qcrypt=2Q口令经qMySQL的password()函数加密后保存? <img src ="http://www.tkk7.com/szhswl/aggbug/165789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/szhswl/" target="_blank">宋针q?/a> 2007-12-06 13:58 <a href="http://www.tkk7.com/szhswl/articles/165789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://zjztauto.com" target="_blank">޹AVӰԺ</a>| <a href="http://2121065.com" target="_blank">Կ60Ƶ</a>| <a href="http://o091i.com" target="_blank">߹ۿҹһ</a>| <a href="http://xvwenyue.com" target="_blank">ɫƨƨwwwӰԺѹۿƵ</a>| <a href="http://25v8.com" target="_blank">**һëƬ</a>| <a href="http://yisaoma.com" target="_blank">޹պƵۿ</a>| <a href="http://qq2071.com" target="_blank">߹ۿav</a>| <a href="http://www-095666.com" target="_blank">һ岻 </a>| <a href="http://m8va.com" target="_blank">Ʒר</a>| <a href="http://tmg-beelen.com" target="_blank">ɫ㽶</a>| <a href="http://tzkanglong.com" target="_blank">99ŮŮѾƷƵ߹ۿ</a>| <a href="http://cnkaiertong.com" target="_blank">һĻ߹ۿ</a>| <a href="http://asdfghjklzxcv.com" target="_blank">91Ƶ</a>| <a href="http://wwwkk2347.com" target="_blank">ۺ϶ŷ</a>| <a href="http://cangtuyuan.com" target="_blank">Ƭ߹ۿѴȫ</a>| <a href="http://xvwenyue.com" target="_blank"></a>| <a href="http://jgxsdst.com" target="_blank">ѻ߹ۿ</a>| <a href="http://by22877.com" target="_blank">޸һѿ</a>| <a href="http://0102008.com" target="_blank">վwww߹ۿ</a>| <a href="http://b2bautoparts.com" target="_blank">ѺܻڵƵëƬ</a>| <a href="http://guhey.com" target="_blank">þþþרav</a>| <a href="http://baocaoluoli.com" target="_blank">þ޸ۿ</a>| <a href="http://mosason.com" target="_blank">þþþƷѹĻ</a>| <a href="http://vcnxa.com" target="_blank">޾Ʒѹۿ</a>| <a href="http://yjjinfeng.com" target="_blank">ѹۿɫվ</a>| <a href="http://ttvv55.com" target="_blank">2020þƷ</a>| <a href="http://dxjz120.com" target="_blank">ԲľƷƵѿ</a>| <a href="http://jcss99.com" target="_blank">ѹëƬ</a>| <a href="http://chch12.com" target="_blank">¾Ʒ޳a߹ۿ</a>| <a href="http://xsdggzs.com" target="_blank">һƬѿ</a>| <a href="http://wwwbu610.com" target="_blank">ձƵ߹ۿ</a>| <a href="http://118762.com" target="_blank">߹ۿѳ</a>| <a href="http://chinaedubrand.com" target="_blank">ŮƵһ</a>| <a href="http://456jjj.com" target="_blank">ҹ޲</a>| <a href="http://zj1069.com" target="_blank">һëƬ**Ѳ</a>| <a href="http://001mc.com" target="_blank">Ļ</a>| <a href="http://hwjyrck.com" target="_blank">ĻAV߾Ʒѹۿ</a>| <a href="http://820111com.com" target="_blank">һػɫëƬѿ</a>| <a href="http://mcsser.com" target="_blank">þþþAvƬv</a>| <a href="http://mottool.com" target="_blank">ҹɫһѲƵ</a>| <a href="http://0595laser.com" target="_blank">AVӰԺۿ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>