??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久99精品成人片牛牛影视,亚洲国产精品久久久久婷婷软件,国产精品九九久久免费视频http://www.shnenglu.com/mydriverc/archive/2010/03/14/109709.html旅?/dc:creator>旅?/author>Sun, 14 Mar 2010 15:56:00 GMThttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109709.htmlhttp://www.shnenglu.com/mydriverc/comments/109709.htmlhttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109709.html#Feedback0http://www.shnenglu.com/mydriverc/comments/commentRss/109709.htmlhttp://www.shnenglu.com/mydriverc/services/trackbacks/109709.html3.2.1 VSFTP 概述 
FTPQfile transfer protocolQ这是档案传输的通讯协议Q也是一般最常用来传送档案的方式。读者在使用RedHat9 的时候,可能会感受到ftp server 有一些改变:W一Q就是ftp server 只剩下vsftpQ原有的wuftp {都没放?nbsp;W二Q就是vsftp 从XINETD 中独立出来,q将讑֮档从/etc/vsftpd.conf 之中Ud/etc/vsftpd/vsftpd.conf?nbsp;
Z么做q样的改变?可以惌的是vsftp 已有独立q作的能力,不需要XINETD 来做更进一步的控Qƈ且类似sendmail、httpd、ssh、samba {,设定文件的攑օ/etc 下独立的目录?nbsp;
FTP 分ؓ两类Q一UؓPORT FTPQ也是一般的FTP 另一cLPASVFTPQ分q如下:
PORT FTP 
q是一般Ş式的FTPQ首先会建立控制频道Q默认值是port 21Q也是跟port 21 建立联机Qƈ透过此联Z达指令。第二,由FTP server 端会建立数据传输频道Q默认gؓ20Q也是跟port 20 建立联机Qƈ透过port 20 作数据的传输?nbsp;
PASV FTP 
跟PORT FTP cMQ首先会建立控制频道Q默认值是port 21Q也是跟port 21 建立联机Qƈ透过此联Z达指令。第二,会由client 端做出数据传输的hQ包括数据传输port 的数字?nbsp;
q两者的差异ZQPORT FTP 当中的数据传输port 是由FTP server 指定Q而PASV FTP 的数据传输port 是由FTP client 军_。通常我们使用PASV FTPQ是在有防火墙的环境之下Q透过client 与server 的沟通,军_数据传输的port?br>
3.2.2 范例 

3.2.1. 直接启动VSFTP 服务 
q个范例是套用RedHat 的预设范?直接启动vsftp?nbsp;
[root@relay vsftpd]# /sbin/service vsftpd start 
Starting vsftpd for vsftpd: OK ] 

3.2.2. 更换port 提供服务Q将预设的port 21 更换?121
Z安全Q或是以port 来区隔不同的ftp 服务Q我们可能会ftp port 改ؓ21 之外的portQ那么,可参考以下步骤?nbsp;
Step1. 修改/etc/vsftpd/vsftpd.conf 
新增底下一?nbsp;
listen_port=2121 
Step2. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 

3.2.3. 特定使用者peter、john 不得变更目录 
使用者的预设目录?home/usernameQ若是我们不希望使用者在ftp 时能?nbsp;
切换C一层目?homeQ则可参考以下步骤?nbsp;
Step1. 修改/etc/vsftpd/vsftpd.conf 
底下三?nbsp;
#chroot_list_enable=YES 
# (default follows) 
#chroot_list_file=/etc/vsftpd.chroot_list 
改ؓ 
chroot_list_enable=YES 
# (default follows) 
chroot_list_file=/etc/vsftpd/chroot_list 
Step2. 新增一个档? /etc/vsftpd/chroot_list 
内容增加两行Q?nbsp;
peter 
john 
Step3. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
若是peter Ʋ切换到根目录以外的目录Q则会出C下警告: 
ftp> cd /home 
550 Failed to change directory. 

3.2.4. 取消anonymous d 
若是读者的L不希望用者匿名登入,则可参考以下步骤?br>Step1. 修改/etc/vsftpd/vsftpd.conf 
?nbsp;
anonymous_enable=YES 
改ؓ 
anonymous_enable=NO 
Step2. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 

3.2.5. 安排Ƣ迎话语
若是我们希望使用者在dӞ能够看到Ƣ迎话语Q可能包括对该主机的说明Q或是目录的介绍Q可参考以下步骤?br>首先定?etc/vsftpd/vsftpd.conf 当中是否有底下这一?nbsp;
dirmessage_enable=YES 
RedHat9 的默认值是有上面这行的?nbsp;
接着Q在各目录之中,新增名ؓ.message 的档案,再这边假设有一个用者test1Q且此用者的根目录下有个目录名ؓabcQ那首先我们?home/test1 
之下新增.messageQ内容如下: 
Hello~ Welcome to the home directory 
This is for test only... 
接着Q在/home/test1/abc 的目录下新增.messageQ内容如下: 
Welcome to abc's directory 
This is subdir... 
那么Q当使用者test1 dӞ会看C下讯息: 
230- Hello~ Welcome to the home directory 
230- 
230- This is for test only... 
230- 
若是切换到abc 的目录,则会出现以下讯息Q?nbsp;
250- Welcome to abc's directory 
250- 
250- This is subdir ... 

3.2.6. 对于每一个联机,以独立的process 来运?br>一般启动vsftp Ӟ我们只会看到一个名为vsftpd 的process 在运作,但若是读者希望每一个联机,都能以独立的process 来呈玎ͼ则可执行以下步骤?br>Step1. 修改/etc/vsftpd/vsftpd.conf 
新增底下一?nbsp;
setproctitle_enable=YES 
Step2. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
使用ps -ef 的指令,可以看告不同使用者联机的情ŞQ如下图所C: 
[root@home vsftpd]# ps -ef|grep ftp 
root 2090 1 0 16:41 pts/0 00:00:00 vsftpd: LISTENER 
nobody 2120 2090 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244: 
connected 
test1 2122 2120 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244/test1: 
IDLE 
nobody 2124 2090 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244: 
connected 
test2 2126 2124 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244/test2: 
IDLE 
root 2129 1343 0 17:20 pts/0 00:00:00 grep ftp 
[root@home vsftpd]#

3.2.7. 限制传输档案的速度Q?br>本机的用者最高速度?00KBytes/sQ匿名登入者所能用的最高速度?0KBytes/s
Step1. 修改/etc/vsftpd/vsftpd.conf 
新增底下两行 
anon_max_rate=50000 
local_max_rate=200000 
Step2. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
在这辚w度的单位ؓBytes/sQ其中anon_max_rate 所限制的是匿名d?nbsp;
使用者,而local_max_rate 所限制的是本机的用者。VSFTPD 对于速度的限 
Ӟ范围大概?0%?20%之间Q也是我们限制最高速度?00KBytes/sQ?nbsp;
但实际的速度可能?0KBytes/s ?20KBytes/s 之间Q当Ӟ若是频宽不 
Ӟ数g低于此限制?br>
3.2.8. 针对不同的用者限制不同的速度Q?br>假设test1 所能用的最高速度?50KBytes/sQtest2 所能用的最高速度?00KBytes/s?nbsp;
Step1. 修改/etc/vsftpd/vsftpd.conf 
新增底下一?nbsp;
user_config_dir=/etc/vsftpd/userconf 
Step2. 新增一个目录:/etc/vsftpd/userconf 
mkdir /etc/vsftpd/userconf 
Step3. ?etc/vsftpd/userconf 之下新增一个名为test1 的档?nbsp;
内容增加一行: 
local_max_rate=250000 
Step4. ?etc/vsftpd/userconf 之下新增一个名为test2 的档?nbsp;
内容增加一行: 
local_max_rate=500000 
Step5. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ]

3.2.9-1. 建置一个防火墙下的ftp serverQ用PORT FTP modeQ?br>预设的ftp port:21 以及ftp data port:20 
启动VSFTPD 之后执行以下两行指oQ只允许port 21 以及port 20 开放,其它关闭?nbsp;
iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT 
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

3.2.9-2. 建置一个防火墙下的ftp serverQ用PORT FTP modeQ?br>ftp port:2121 以及ftp data port:2020 
Step1. 执行以下两行指oQ只允许port 2121 以及port 2020 开放,其它关闭?nbsp;
iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT 
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset 
Step2. 修改/etc/vsftpd/vsftpd.conf 
新增底下两行 
listen_port=2121 
ftp_data_port=2020 
Step3. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
在这边要注意Q?? 两个例子中,ftp clientQ如cuteftpQ的联机方式不能够选择passive modeQ否则无法徏立数据的联机。也是读者可以连上ftp 
serverQ但是执行ls、get {等的指令时Q便无法q作?br>
3.2.10. 建置一个防火墙下的ftp serverQ用PASS FTP modeQ?br>ftp port:2121 以及ftp data port ?981 ?986?nbsp;
Step1. 执行以下两行指oQ只允许port 2121 以及port 9981-9990 开放,其它关闭?nbsp;
iptables -A INPUT -p tcp -m multiport --dport 
2121,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990 -j ACCEPT 
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset 
Step2. 修改/etc/vsftpd/vsftpd.conf 
新增底下四行 
listen_port=2121 
pasv_enable=YES 
pasv_min_port=9981 
pasv_max_port=9986 
Step3. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
在这边要注意Q在10 q个例子中,ftp clientQ如cuteftpQ的联机方式必须选择passive modeQ否则无法徏立数据的联机。也是读者可以连上ftp serverQ但是执行ls,get {等的指令时Q便无法q作?br>
3.2.11. vsftpd 与TCP_wrapper l合
若是读者希望直接在/etc/hosts.allow 之中定义允许或是拒绝的来源地址Q可执行以下步骤。这是简易的防火墙设定?nbsp;
Step1. 定/etc/vsftpd/vsftpd.conf 之中tcp_wrappers 的设定ؓYESQ如下图所 
C: 
tcp_wrappers=YES 
q是RedHat9 的默认|基本上不需修改?nbsp;
Step2. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
Step3. 讑֮/etc/hosts.allowQ譬如提?11.22.33.4 以及10.1.1.1 ?0.1.1.254 q?nbsp;
U,则可做下图之讑֮Q?nbsp;
vsftpd : 111.22.33.4 10.1.1. : allow 
ALL : ALL : DENY

3.2.12. vsftpd q入XINETD 
若是读者希望将vsftpd q入XINETD 之中Q也是7.x 版的预设讑֮Q那 
么读者可以执行以下步骤?nbsp;
Step1. 修改/etc/vsftpd/vsftpd.conf 
?nbsp;
listen=YES 
改ؓ 
listen=NO 
Step2. 新增一个档案: /etc/xinetd.d/vsftpd 
内容如下Q?nbsp;
service vsftpd 

disable = no 
socket_type = stream 
wait = no 
user = root 
server = /usr/sbin/vsftpd 
port = 21 
log_on_success += PID HOST DURATION 
log_on_failure += HOST 

Step3. 重新启动xinetd 
[root@home vsftpd]# /sbin/service xinetd restart 
Stopping xinetd: OK ] 
Starting xinetd: OK ] 

3.2.3 讑֮档说?br>在范例中Q有些省略的讑֮可以在这Ҏ(gu)刎ͼ譬如联机的L、同一个位址的联机数、显C档案拥有者的名称{等Q希望读者细dQ可以做出最适合自己的设定?br>格式
vsftpd.conf 的内定w常单U,每一行即Z设定。若是空白行或是开头ؓ#的一行,会被忽略。内容的格式只有一U,如下所C?nbsp;
option=value 
要注意的是,{号两边不能加空白,不然是不正确的设定?nbsp;
Q=Qascii 讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
ascii_download_enable 
控是否可用ASCII 模式下蝲。默认gؓNO?nbsp;
ascii_upload_enable 
控是否可用ASCII 模式上传。默认gؓNO?nbsp;
Q=Q个别用者设定=Q=Q=Q=Q=Q=Q=Q=Q=Q= 
chroot_list_enable 
如果启动q项功能Q则所有的本机使用者登入均可进到根目录之外的数据夹Q除了列 
?etc/vsftpd.chroot_list 之中的用者之外。默认gؓNO?nbsp;
userlist_enable 
用法QYES/NO 
若是启动此功能,则会d/etc/vsftpd.user_list 当中的用者名U。此功能可以在询问密码前就出现p|讯息Q而不需要检验密码的E序。默认gؓ关闭?nbsp;
userlist_deny 
用法QYES/NO 
q个选项只有在userlist_enable 启动时才会被验。如果将q个选项设ؓYESQ则?etc/vsftpd.user_list 中的使用者将无法d 若设为NO Q?nbsp;则只有在 
/etc/vsftpd.user_list 中的使用者才能登入。而且此项功能可以在询问密码前出现错误讯息,而不需要检验密码的E序?nbsp;
user_config_dir 
定义个别使用者设定文件所在的目录Q例如定义user_config_dir=/etc/vsftpd/userconfQ且L上有使用者test1,test2Q那我们可以在user_config_dir 的目录新增文件名为test1 以及test2。若是test1 dQ则会读取user_config_dir 下的test1 q个档案内的讑֮。默认gؓ无?nbsp;
Q=Q欢q语讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
dirmessage_enable 
如果启动q个选项Q用者第一ơ进入一个目录时Q会查该目录下是否有.messageq个档案Q若是有Q则会出现此档案的内容,通常q个档案会放|欢q话语,或是对该目录的说明。默认gؓ开启?nbsp;
banner_file 
当用者登入时Q会昄此设定所在的档案内容Q通常为欢q话语或是说明。默认gؓ无?nbsp;
ftpd_banner 
q边可定义欢q话语的字符Ԍ相较于banner_file 是档案的形式Q而ftpd_banner 是字串的格式。预设ؓ无?nbsp;
Q=Q特D安全设定=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
chroot_local_user 
如果讑֮为YESQ那么所有的本机的用者都可以切换到根目录以外的数据夹。预讑րgؓNO?nbsp;
hide_ids 
如果启动q项功能Q所有档案的拥有者与组都ؓftpQ也是使用者登入用ls -al之类的指令,所看到的档案拥有者跟组均ؓftp。默认gؓ关闭?nbsp;
ls_recurse_enable 
若是启动此功能,则允许登入者用ls -R q个指o。默认gؓNO?nbsp;
write_enable 
用法QYES/NO 
q个选项可以控制FTP 的指令是否允许更改file systemQ譬如STOR、DELE?nbsp;
RNFR、RNTO、MKD、RMD、APPE 以及SITE。预设是关闭?nbsp;
setproctitle_enable 
用法QYES/NO 
启动q项功能Qvsftpd 会将所有联机的状况已不同的process 呈现出来Q换句话_使用ps -ef q类的指令就可以看到联机的状态。默认gؓ关闭?nbsp;
tcp_wrappers 
用法QYES/NO 
如果启动Q则会将vsftpd 与tcp wrapper l合Q也是可以?etc/hosts.allow ?etc/hosts.deny 中定义可联机或是拒绝的来源地址?nbsp;
pam_service_name 
q边定义PAM 所使用的名Uͼ预设为vsftpd?nbsp;
secure_chroot_dir 
q个选项必须指定一个空的数据夹且Q何登入者都不能有写入的权限Q当vsftpd 不需要file system 的权限时Q就会将使用者限制在此数据夹中。默认gؓ/usr/share/empty 

Q=Q纪录文件设定=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q= 
xferlog_enable 
用法QYES/NO 
如果启动Q上传与下蝲的信息将被完整纪录在底下xferlog_file 所定义的档案中。预设ؓ开启?nbsp;
xferlog_file 
q个选项可设定纪录文件所在的位置Q默认gؓ/var/log/vsftpd.log?nbsp;
xferlog_std_format 
如果启动Q则U录文g会写ؓxferlog 的标准格式,如同wu-ftpd 一般。默认gؓ关闭?nbsp;

Q=Q逾时讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q= 
accept_timeout 
接受建立联机的逾时讑֮Q单位ؓU。默认gؓ60?nbsp;
connect_timeout 
响应PORT 方式的数据联机的逾时讑֮Q单位ؓU。默认gؓ60?nbsp;
data_connection_timeout 
建立数据联机的逾时讑֮。默认gؓ300 U?nbsp;
idle_session_timeout 
发呆的逾时讑֮Q若是超旉没有数据的传送或是指令的输入Q则会强q断U,单位为秒。默认gؓ300?nbsp;
Q=Q速率限制Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q= 
anon_max_rate 
匿名d所能用的最大传输速度Q单位ؓ每秒多少bytesQ? 表示不限速度。默认gؓ0?nbsp;
local_max_rate 
本机使用者所能用的最大传输速度Q单位ؓ每秒多少bytesQ? 表示不限速度。预讑րgؓ0?nbsp;
Q=Q新增档案权限设定=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
anon_umask 
匿名d者新增档案时的umask 数倹{默认gؓ077?nbsp;
file_open_mode 
上传档案的权限,与chmod 所使用的数值相同。默认gؓ0666?nbsp;
local_umask 
本机d者新增档案时的umask 数倹{默认gؓ077?nbsp;
Q=Qport 讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q= 
connect_from_port_20 
用法QYES/NO 
若设为YESQ则ftp-data 的数据传送用port 20。默认gؓYES?nbsp;
ftp_data_port 
讑֮ftp 数据联机所使用的port。默认gؓ20?nbsp;
listen_port 
FTP server 所使用的port。默认gؓ21?nbsp;
pasv_max_port 
建立资料联机所可以使用port 范围的上界,0 表示L。默认gؓ0?nbsp;
pasv_min_port 
建立资料联机所可以使用port 范围的下界,0 表示L。默认gؓ0?nbsp;
Q=Q其它=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
anon_root 
使用匿名dӞ所d的目录。默认gؓ无?nbsp;
local_enable 
用法QYES/NO 
启动此功能则允许本机使用者登入。默认gؓYES?nbsp;
local_root 
本机使用者登入时Q将被更换到定义的目录下。默认gؓ无?nbsp;
text_userdb_names 
用法QYES/NO 
当用者登入后使用ls -al 之类的指令查询该档案的管理权Ӟ预设会出现拥有者的UIDQ而不是该档案拥有者的名称。若是希望出现拥有者的名称Q则此功能开启。默认gؓNO?nbsp;
pasv_enable 
若是设ؓNOQ则不允怋用PASV 的模式徏立数据的联机。默认gؓ开启?nbsp;
Q=Q更换档案所有权Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
chown_uploads 
用法QYES/NO 
若是启动Q所有匿名上传数据的拥有者将被更换ؓchown_username 当中所讑֮的用者。这L选项对于安全及管理,是很有用的。默认gؓNO?nbsp;
chown_username 
q里可以定义当匿名登入者上传档案时Q该档案的拥有者将被置换的使用者名U。预讑րgؓroot?nbsp;
Q=Qguest 讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
guest_enable 
用法QYES/NO 
若是启动q项功能Q所有的非匿名登入者都视ؓguest。默认gؓ关闭?nbsp;
guest_username 
q里定义guest 的用者名U。默认gؓftp?nbsp;
Q=Qanonymous 讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q= 
anonymous_enable 
用法QYES/NO 
控使否允许匿名dQYES 为允许匿名登入,NO Z允许。默认gؓYES?nbsp;
no_anon_password 
若是启动q项功能Q则使用匿名dӞ不会询问密码。默认gؓNO?nbsp;
anon_mkdir_write_enable 
用法QYES/NO 
如果设ؓYESQ匿名登入者会被允许新增目录,当然Q匿名用者必要有对上层目录的写入权。默认gؓNO?nbsp;
anon_other_write_enable 
用法QYES/NO 
如果设ؓYESQ匿名登入者会被允许更多于上传与徏立目录之外的权限Q譬如删除或是更名。默认gؓNO?nbsp;
anon_upload_enable 
用法QYES/NO 
如果设ؓYESQ匿名登入者会被允怸传目录的权限Q当Ӟ匿名使用者必要有对上层目录的写入权。默认gؓNO?nbsp;
anon_world_readable_only 
用法QYES/NO 
如果设ؓYESQ匿名登入者会被允怸载可阅读的档案。默认gؓYES?nbsp;
ftp_username 
定义匿名d的用者名U。默认gؓftp?nbsp;
deny_email_enable 
若是启动q项功能Q则必须提供一个档?etc/vsftpd.banner_emailsQ内容ؓemail 
address。若是用匿名登入,则会要求输入email addressQ若输入的email address 在此档案内,则不允许联机。默认gؓNO?nbsp;
Q=QStandalone 选项Q=Q=Q=Q=Q=Q=Q=Q=Q= 
listen 
用法QYES/NO 
若是启动Q则vsftpd 会以独立运作的方式执行Q若是vsftpd 独立执行Q如RedHat9的默认|则必d?nbsp;若是vsftpd 包含在xinetd 之中Q则必须关闭此功能,如RedHat8。在RedHat9 的默认gؓYES?nbsp;
listen_address 
若是vsftpd 使用standalone 的模式,可用这个参数定义用哪个IP address 提供q项服务Q若是主Z只有定义一个IP addressQ则此选项不需使用Q若是有多个IP addressQ可定义在哪个IP address 上提供ftp 服务。若是不讑֮Q则所有的IP address均会提供此服务。默认gؓ无?nbsp;
max_clients 
若是vsftpd 使用standalone 的模式,可用这个参数定义最大的总联机数。超q这个数目将会拒l联机,0 表示不限。默认gؓ0?nbsp;
max_per_ip 
若是vsftpd 使用standalone 的模式,可用这个参数定义每个ip address 所可以联机的数目。超q这个数目将会拒l联机,0 表示不限。默认gؓ0?nbsp;
Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;

3.2.4 FTP 数字代码的意?nbsp;
110 重新启动标记应答?nbsp;
120 服务在多久时间内ready?nbsp;
125 数据链\埠开启,准备传送?nbsp;
150 文g状态正常,开启数据连接端口?nbsp;
200 命o执行成功?nbsp;
202 命o执行p|?nbsp;
211 pȝ状态或是系l求助响应?nbsp;
212 目录的状态?nbsp;
213 文g的状态?nbsp;
214 求助的讯息?nbsp;
215 名称pȝcd?nbsp;
220 新的联机服务ready?nbsp;
221 服务的控制连接埠关闭Q可以注销?nbsp;
225 数据q结开启,但无传输动作?nbsp;
226 关闭数据q接端口Q请求的文g操作成功?nbsp;
227 q入passive mode?nbsp;
230 使用者登入?nbsp;
250 h的文件操作完成?nbsp;
257 昄目前的\径名U?nbsp;
331 用户名称正确Q需要密码?nbsp;
332 d旉要̎号信息?nbsp;
350 h的操作需要进一部的命o?nbsp;
421 无法提供服务Q关闭控制连l?nbsp;
425 无法开启数据链路?nbsp;
426 关闭联机Q终止传输?nbsp;
450 h的操作未执行?nbsp;
451 命ol止Q有本地的错误?nbsp;
452 未执行命令:盘I间不?nbsp;
500 格式错误Q无法识别命令?nbsp;
501 参数语法错误?nbsp;
502 命o执行p|?nbsp;
503 命o序错误?nbsp;
504 命o所接的参数不正?nbsp;
530 未登入?nbsp;
532 储存文g需要̎L入?nbsp;
550 未执行请求的操作?nbsp;
551 h的命令终止,cd未知?nbsp;
552 h的文件终止,储存位溢出?nbsp;
553 未执行请求的的命令,名称不正?img src ="http://www.shnenglu.com/mydriverc/aggbug/109709.html" width = "1" height = "1" />

]]>
快速徏立简单vsftp http://www.shnenglu.com/mydriverc/archive/2010/03/14/109694.html旅?/dc:creator>旅?/author>Sun, 14 Mar 2010 12:37:00 GMThttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109694.htmlhttp://www.shnenglu.com/mydriverc/comments/109694.htmlhttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109694.html#Feedback0http://www.shnenglu.com/mydriverc/comments/commentRss/109694.htmlhttp://www.shnenglu.com/mydriverc/services/trackbacks/109694.html今天一公司合作家伙说要传文件给我们q,׃文本文g非要求俺l他开个ftp,都没则了Q只能给开个,从来没开q,在网l上搜烦了下linux下开ftp可以用自带的vsftp也可以用软gZ个,而且听说vsftp也挺不错Q就按网l教E一步步来了Q这里主要是ȝ下自q做法Q毕竟不是每个h在要急用时候还ȝ一些文章的详解?br>1.先用q几个命令看看是不是vsftpd安装正常
#service vsftpd start 启动
#service vsftpd stop 停止
#service vsftpd restart 重启
2.以上没有问题的话~辑vsftpd的配|文?br>[root@localhost /]#
vi /etc/vsftpd/vsftpd.conf   //q个文g的具体内容解释可以看下面“参考文?#8221;W一个链?br>3.anonymous_enable=YES Ҏ(gu)NO #止匿名讉K
4.?vsftpd.conf 中找?chroot_list_file=/etc/vsftpd.chroot_list把注释去掉然后徏?br>
/etc/vsftpd.chroot_list文gQ在文g中输入linuxpȝ中的一个或多个用户?一行一??br>
注:q个用户名是linuxpȝ中root用户d的?br>[root@localhost /]# useradd -s /sbin/nologin             //q样限制用户不能使用sshd

5.更改ftp端口仍然在vsftpd.conf文g中:
tcp_wrappers=YES
listen_port=2121   //自定义端口号Q记得不要与已有端口冲突
local_root=/server/apache/htdocs  //讑֮用户explorerq接ftp时候显C的目录
保存退出编辑?br>
6.
#service vsftpd restart 重启.然后一个利用系l已有用户名d的ftp开通了Q?br>注:#service vsftpd start 命o只是在linux开启后手动开启vsftpd的命令,如果linux重启Q还要用该命o重新启动?br>要想开机启动vsftp服务Q执行chkconfig --level 35 vsftpd on  (|络查询的未实践q?

后记Q?br>如果有时间研I就多看看徏立虚拟用户那部分Q虚拟用L比系l用户也怼更安全些Q也E微复杂些?br>
引用建立虚拟用户Q?br>=====================================================

[root@server root]# useradd vuser #新徏一个虚拟登陆指定的?
[root@server root]# vi users.txt  #虚拟可本一行用户名下一行密?br>[root@server root]# db_load -T -t hash -f users.txt /etc/vsftpd.login.db #把users.txt的内容加拟用L帐号和密?br>[root@server root]# chmod 600 /etc/vsftpd.login.db #Z安全修改里面的内?br>[root@server root]# vi /etc/pam.d/ftp  #修改里面的内?使之与下面的相同
[root@server root]# more /etc/pam.d/ftp
#%PAM-1.0
#auth       required    /lib/security/pam_listfile.so item=user sense=allow file
=/etc/ftpusers onerr=succeed
#auth       required    /lib/security/pam_pwdb.so shadow nullok
#auth       required    /lib/security/pam_shells.so
#account    required    /lib/security/pam_pwdb.so
#session    required    /lib/security/pam_pwdb.so
auth        required    pam_userdb.so db=/etc/vsftpd.login
account     required    pam_userdb.so db=/etc/vsftpd.login
再次修改/etc/vsftpd.conf,使其内容与anonymous有关的全部禁?q有刚才的chroot也被列ؓ用,如果想用的话保证虚拟可常的前提下再另行试,q在最后加入二句话:

guest_enable=YES

guest_username=vuser  接下来就是重启vsftpd

[root@server root]# killall -HUP vsftpd  #!
[root@server root]# ftp localhost  #试
Connected to server.redhat.org.cn.
220 Welcome to linfeng's ftp server.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): tom   #虚拟?br>331 Please specify the password.
Password:   #虚拟号tom的密?br>230 Login successful.  #成功
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,136,56)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).   #怎么会禁止了?想一下上面的,,呵呵,q就是因为vuser用户的权限啊,只需"chmod o+r /home/vuser"那可览,但不可上?因ؓ没有"w"?br>

=====================================

|络参考文章:
http://www.bianceng.cn/OS/Linux/200706/3020.htm
http://www.shineblog.com/user2/24790/archives/2005/175940.shtml
q两都比较详细?/p>

]]>
wu -ftp 安装和配|?/title><link>http://www.shnenglu.com/mydriverc/archive/2010/03/14/109686.html</link><dc:creator>旅?/dc:creator><author>旅?/author><pubDate>Sun, 14 Mar 2010 08:58:00 GMT</pubDate><guid>http://www.shnenglu.com/mydriverc/archive/2010/03/14/109686.html</guid><wfw:comment>http://www.shnenglu.com/mydriverc/comments/109686.html</wfw:comment><comments>http://www.shnenglu.com/mydriverc/archive/2010/03/14/109686.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.shnenglu.com/mydriverc/comments/commentRss/109686.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mydriverc/services/trackbacks/109686.html</trackback:ping><description><![CDATA[如何配置WU-FTP服务?<br>本文: 作? (2001-06-27 08:10:01) <br>    在众多的|络应用中,FTPQFile Transfer porotocolQ有着非常重要的地位。在Internet中一 <br>    个十分重要的资源是软g资源。而各U各L软g资源大多数都是放在FTP服务器中的。可以说Q?<br>    FTP与WEB服务几乎占据了整个Internet应用?0%以上?<br>    FTP服务可以Ҏ(gu)服务对象的不同分Zc:一cLpȝFTP服务器,它只允许pȝ上的合法用户使用Q?<br>    另一cL匿名FTP服务器,Anonymous FTP ServerQ它使用M人都可以d到FTP服务器上去获取文件?<br>一、选择和安装FTP服务器Y?<br>    如果你在安装LINUXpȝ的时候,在选择启动q程的时候选择?#8220;ftpd”q一的话,安装完LINUXpȝ后, <br>    它已l将一个默认的FTP服务器安装到pȝ中去了。我们已l可以利用它来实现系lFTP服务器的功能了?<br>    我们只需在此基础上根据我们的需要进行一些个性化讑֮可以了?<br>    在绝大多数的LINUX发行版本中都选用的是WashingtonUniversity FTPQ它是一个著名的FTP服务器YӞ <br>    一般简UCؓwu-ftp。它功能强大Q能够很好地q行于众多的UNIX操作pȝQ例如:IBM AIX、FreeBSD?<br>    HP-UX、NeXTstep、Dynix、SunOS、Solaris{。所以Internet上的FTP服务器,一大半以上采用了它?<br>    wu-ftp拥有许多强大的功能,很适于吞吐量较大的FTP服务器的理要求Q?<br>    1Q?可以在用户下载文件的同时Ҏ(gu)件做自动?<br>        压羃或解压羃操作Q?<br>    2Q?可以对不同网l上的机器做不同的存取限Ӟ <br>    3Q?可以记录文g上蝲和下载时_ <br>    4Q?可以昄传输时的相关信息Q方便用户及时了 <br>        解目前的传输动态; <br>    5Q?可以讄最大连接数Q提高了效率Q有效地? <br>        制了负蝲?<br>二、wu-ftp的组?<br>    安装了wu-ftp后,你将?bin目录下看C下五个可执行文gQ? <br>ftpd       FTP服务器程?<br>ftpshut    用于关闭FTP服务器程?<br>ftpcount   昄目前在线人数  <br>ftpwho    查看目前FTP服务器的q接情况 <br>ckconfig   查FTP服务器的讄是否正确 <br>    除了q些可执行文件以外,它还?etc?var目录下生成了七个配置文gQ?<br>/etc/ftpusers <br>/etc/ftpaccess <br>/var/run/ftp.pids <br>/etc/ftpconversions <br>/var/log/xferlog <br>/etc/ftpgroups <br>/etc/ftphosts <br>    pȝ安装了wu-ftp后,会徏立一个特D的用户ftpQƈ?home目录下徏立了一个ftpd目录Q当用户以匿?<br>    d上来Ӟ会自动定位于这个目录下。在q个目录下一般会建立几个子目录?<br>/home/ftpd/bin    存放一些供FTP用户使用的可 <br>                  执行文g <br>/home/ftpd/etc    存放一些供FTP用户使用的配|?<br>                  文g <br>/home/ftpd/pub    存放供下载的信息 <br>/home/ftpd/incoming    存放供上载信息的I间 <br>三、wu-ftp的配|?<br>1. 查看、修?etc/inetd.conf文g <br>    /etc/inetd.conf文g是LINUXpȝ的超U服务器inetd的配|文件。它负责监听多个TCP/IP端口。当它收?<br>    hQ就Ҏ(gu)配置文gz一个相应的服务器。通过使用服务器,其他服务可以只在需要时才派生, <br>    从而大大节省了pȝ资源。而wu-ftp是利用极服务器inetd来监听请求的。当服务器inetd收到了客 <br>    L的FTPhӞ根据配|文件打开一个FTP服务q程。所以我们如果要使用wu-ftpQ就必须认在超U?<br>    服务器inetd的配|文件inetd.conf中有q样一句: <br>ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd <br>以便当超U服务器收到FTPh的时候,能够z一个wu-ftp的FTP服务q程。(注:要确认是否有q样一行时Q? <br>可以使用文g内容查找命o来确认: <br>cat /etc/inetd.conf | grep ftp  <br>如果没有Q则用手工加入或手工修改? <br>2. wu-ftpd的命令选项 <br>    wu-ftpd是wu-ftp的服务进E。它可以不带参数执行Q也可以带参数执行。下面简单介l一下wu-ftpd的执 <br>    行参数? <br>-d  当FTP服务器出错时Q将错误入系l的syslog中; <br>-l  每ơFTP客户端进行连接的入系l的syslog中; <br>-t  讄FTP客户端连接几分钟无操作就切断q接Q?<br>-a  使wu-ftp使用/etc/ftpaccess的设定; <br>-A  使wu-ftp不?etc/ftpaccess的设定; <br>-L  FTP客户端连U后所执行的程序记录在pȝ?<br>    syslog中; <br>-I  FTP客户端上载文件的日志记录?usr/adm.xferlog文g中; <br>-o  FTP客户端下载文件的日志记录 <br>    ?usr/adm/xferlog文g中?<br>    通过对以上参数的理解Q我们徏议,上面系l安装时的那条默认配|改为: <br>ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd –a –I  <br>3.提供自动压羃、解压羃的功?<br>    如果惌FTP服务器有自动压羃、解压羃的功能,必须先将一些压~、解压羃的命令文件如tar、gzip?<br>    gunzip、compress、uncompress{命令文件拷贝到/home/ftpd/bin目录下?<br>4. 关于/etc/ftpaccess的设|? <br>    q个配置文g是FTP服务器上最重要的配|文Ӟ它直接关pd你的FTP服务器能否正常工作,q有许多?<br>    限上的设|。下面是一个典型的配置实例?<br>loginfails 3 <br>class  local    real        * <br>class  remote  anonymous guest  * <br>limit  remote  100  Any  /etc/ftpd/toomany.msg <br>message  /etc/ftpd/welcome.msg  login <br>compress  yes  local remote <br>tar  yes  local remote <br>private  yes <br>passwd-check  rfc822  warn <br>log commands  real <br>log transfer  anonymous guest  inbound outbound <br>log transfer  real  inbound <br>shutdown  /etc/ftpd/shut.msg <br>delete  no  anonymous,guest <br>overwrite  no  anonymous,guest <br>rename  no  anonymous <br>chmod  no  anonymous,guest <br>umask  no  anonymous <br>upload  /home/ftpd  *  no <br>upload  /home/ftpd  /bin  no <br>upload  /home/ftpd  /etc  no <br>upload  /home/ftpd  /pub  yes  real  0644 dirs <br>upload  /home/ftpd  /incoming  yes  real guest anonymous 0644 dirs <br>alias  in  /incoming <br>email  <br><a href="mailto:guest@xxx.net">guest@xxx.net</a><br><br>email  <br><a href="mailto:guest@yyy.net">guest@yyy.net</a><br><br>deny  *.com.tw  /etc/ftpd/deny.msg <br>    下面我们逐句q行讲解Qƈl出每条讄的含义,以便大家触类旁通,以便Ҏ(gu)自己FTP服务器的具体 <br>    情况q行合理的设|?<br>1Q? 格式Qloginfails  [ơ数] <br>   功能Q设定当用户d到FTP服务器时Q允许用戯错密码的ơ数?<br>   实例Qloginfails 3Q密码输入错误三ơ就切断q接?<br>2Q?格式Qclass  [cd]  [real/guest/anonymous]  [IP地址] <br>   功能Q这个指令的功能讑֮FTP服务器上用户的类别。ƈ可对客户端的IP地址q行限制Q允许某部分?<br>   IP地址或全部的IP地址讉K。而在FTP服务器上的用户基本上可以分ؓ以下三类Q?<br>         real  在该FTP服务器有合法帐号的用P <br>         guest  有记录的匿名用户Q?<br>         anonymous  权限最低的匿名用户 <br>   实例Qclass  local  real  *Q定义一个名为local的类Q它包含了在M地方d(*代表所有IP地址Q?<br>   的real用户? <br>      class  remote  anonymous guest  *:定义一个名为remote的类Q它包含了在M地方d的anonymous <br>      用户和guest用户?<br>3Q?格式Qlimit  [cd]  [人数]  [旉]  [文g名] <br>   功能Q这个指令的功能|指定的旉内指定的cd允许q接的指定hC限。当辑ֈ人数上限的时候, <br>   昄指定文g的内宏V?<br>       实例Qlimit  remote  100  Any  /etc/ftpd/toomany.msgQ在M旉内,remotecȝ讉K用户?<br>       ?00人时Q将不再允许无法产生新的q接Q当W?01位客戯q接Ӟq接失败,q象用户出示?<br>       ?etc/ftpd/toomany.msg的内宏V?<br>4Q?格式Qmessage  [文g名称]  [指o]  <br>   功能Q当用户执行所指定的指令时Q系l将指定的文件内Ҏ(gu)C出来? <br>实例Qmessage  /etc/ftpd/welcome.msg  loginQ当用户执行login命oӞ也就是登录到FTP服务器上的时候, <br>pȝ显C文?etc/ftpd/welcome.msg的内宏V?<br>5Q?格式Qcompress  [yes/no]  [cd]  <br>   功能Q设|哪一个类别的用户可以使用compressQ压~)功能?<br>  实例Qcompress  yes  local remoteQ允许local和remote两个cd的用户都能?nbsp;     compress(压羃)功能?<br>6Q? 格式Qtar  [yes/no]  [cd]  <br>   功能Q设|哪一个类别的用户可以使用tarQ归档)功能?<br>       实例Qtar  yes  local remoteQ允许local和remote两类的用户都能用tar功能?<br>7Q? 格式Qprivate  [yes/no]  <br>   功能Q设定是否支持群l对文g的取用?<br>   实例Qprivate  yesQ支持群l对文g的取用?<br>8Q? 格式Qpasswd-check  [none/trivial/rfc822]  [enforce/warn] <br>   功能Q设定对匿名用户anonymous的密码用方式?<br>  none   表示不做密码验证QQ何密码都可以dQ?<br>trival   表示只要输入的密码中含有字符“@”可以登录; <br>rfc822  表示密码一定要W合RFC822中所规定的E-Mail格式才能dQ? <br>enfore  表示输入的密码不W合以上指定的格式就不让dQ?<br>warn   表示密码不符合规定时只出现警告信息,仍然能够d? <br>  实例Qpasswd-check  rfc822  warnQ希望能够得到符合规定的E-Mail作ؓ密码Q但如果不是Q也允许d?<br>9Q? 格式Qlog command [real/guest/anonymous]  <br>    功能Q设|哪些用L录后的操作记录在文g/usr/adm/xferlog中?<br>    实例Qlog command realQ当real用户d后,他的操作记录下来。由于其它用h限较低,所以操作不 <br>    会引起太大的安全隐?zhn)Q所以一般只需Creal? <br>L操作可以了?<br>10Q?格式Qlog transfers  [real/guest/anonymous]  [inbound/outbound] <br>   功能Q设|哪些用L上蝲QinboundQ和下蝲QoutboundQ操作做日志?<br>   实例Qlog transfer  anonymous guest  inbound outboundQ对于匿名用戯更加的关注它们的文g操作Q?<br>   所以无Z载、下载都q行记录?<br>  log transfer  real  inboundQ对于合法用户则只记录他的上载记录?<br>11Q?格式Qshutdown  [文g名] <br>   功能QFTP服务器关闭的旉可以讄在后面所指定的文件中Q当讄的时间一刎ͼ便无法登录FTP服务器了Q?<br>   要恢复的话只有将q个文g删掉。而这个文件必 ȝ指o/bin/ftpshut来生成?<br>       实例Qshutdown  /etc/ftpd/shut.msg <br>12Q? 格式Qdelete  [yes/no]  [real/anonymous/guest] <br>   功能Q设|是否允许指定用户用delete命o删除文g。默认是允许?<br>   实例Qdelete  no  anonymous,guestQؓ了更好地理FTP服务器,一般情况下Q我们不允许匿名用户执行 <br>   delete命o? <br>13Q?格式Qoverwrite  [yes/no]  [real/anonymous/guest] <br>   功能Q设|是否允许指定用戯盖同名文件。默认是允许?<br>   实例Qoverwrite  no  anonymous,guestQؓ了更好地理FTP服务器,一般情况下Q我们不允许匿名用户?<br>   盖同名文件? <br>14Q?格式Qrename  [yes/no]  [real/anonymous/guest] <br>   功能Q设|是否允许指定用户用rename命o来ؓ文g改名。默认是允许?<br>   实例Qdelete  no  anonymousQؓ了更好地理FTP服务器,一般情况下Q我们不允许匿名用户执行rename?<br>   令改变文件名。而对有记录的匿名用户则适当的放宽,允许他们使用改名命o?<br>15Q? 格式Qchmod  [yes/no]  [real/anonymous/guest] <br>   功能Q设|是否允许指定用户用chmod命o更改文g权限。默认是允许?<br>   实例Qdelete  no  anonymousQguestQؓ了更好地理FTP服务器,一般情况下Q我们不允许匿名用户执行 <br>   chmod命o更改文g权限?<br>16Q?格式Qumask  [yes/no]  [real/anonymous/guest] <br>   功能Q设|是否允许指定用户用umask命o。默认是允许?<br>   实例Qdelete  no  anonymousQؓ了更好地理FTP服务器,一般情况下Q我们不允许匿名用户执行umask命o?<br>17Q? 格式Qupload  [根目录]  [上蝲目录]  [yes/no]  [用户]  [权限]  [dirs/nodirs] <br>   功能Q对可以上蝲的目录进行更加详l的讄?<br>   实例Qupload  /home/ftpd  *  noQ表C在子目?home/ftpd下不允许上蝲Q?<br>   upload  /home/ftpd  /bin  noQ表C在子目?home/ftpd/bin下不允许上蝲Q?<br>   upload  /home/ftpd  /etc  noQ表C在子目?home/ftpd/etc下不允许上蝲Q?<br>   upload  /home/ftpd  /pub  yes  real  0644 dirsQ允许用服务器上的合法用户在子目?home/ftpd/pub目录 <br>   下能上蝲权限?644(也就?rw-r--r--)的文Ӟ而且在这个目录下可以新徏子目录? <br>  upload  /home/ftpd  /incoming  yes  real guest anonymous 0644 dirsQ允许所有的用户在子目录 <br>  /home/ftpd/incoming下能上蝲权限?644的文Ӟ而且在这个目录下可以新徏子目录? <br>18Q?格式Qalias  [目录别名]  [目录名] <br>   功能Q给指定目录讄一个别名,在切换目录时可以用较短的目录别名?<br>   实例Qalias  incQ?/incomingQؓ子目录incoming讄一个别名incQ?<br>19Q? 格式Qemail  [guest的E-Mail地址] <br>   功能Q只要将某些E-Mail地址讄在这个地方,那么q些用户d到FTP服务器时Q他的n份将为guestQ一般权 <br>   限比real低一些,比anonymous高?<br>   实例Qemail <br><a href="mailto:guest@xxx.net">guest@xxx.net</a><br>   email <br><a href="mailto:guest@yyy.net">guest@yyy.net</a><br>Q这里仅是一个示例,实际上可     以包含多个符合规? <br>   的E-Mail地址?<br>20Q?格式Qdeny  [IP地址/域名]  [说明文g] <br>   功能Q这个设|可以限制哪一些IP地址或域名的用户无法dFTP服务器?<br>   实例Qdeny  *.com.tw  /etc/ftpd/deny.msgQ设|凡是域名是?#8220;.com.tw”l束的域名,都禁止其讉K?<br>   而将/etc/ftpd/deny.msg的内Ҏ(gu)C给用户看?<br>5. 讄/etc/ftpuser,止某些用户d <br>    有时我们需要禁止一些用户用FTP服务。其实这个设|是十分单的Q只需要将要禁止的用户帐号写入文g <br>    /etc/ftpuser中。由于从pȝ的安全考虑Q一般我们是不希望权限过大的用户和一些与命o名相同的用户q入 <br>    FTP服务器。所以在~省的配|中Q一般以下用户已l被列入?#8220;黑名?#8221;?<br>  root   <br>  uucp <br>  news <br>  bin <br>  adm <br>  nobody <br>  lp <br>  sync <br>  shutdown <br>  halt <br>  mail   <br>6. 讄/etc/ftphosts,止某些来自指定机器上的d如果你需要拒l来自某些主机的dQ一U方法就是在 <br>/etc/ftpaccess中设|deny命oQ另一U更加简单的Ҏ(gu)是?etc/ftphosts中写入你要禁止的L的IP地址或域名?<br>7. 使新的配|生?<br>到此为止Q我们已l能够根据自q需要对FTP服务器配|进行必要的修改和调整。而让我们重新配置后,必M? <br>生效。一般的Q对/etc/ftpaccess的配|是直接作用于设|后的下一ơFTP服务q程。而其它的则要对inetdq程重新 <br>启动? <br>5.4 wu-ftp相关的其他一些命令的使用 <br>5.4.1 q接数统计命令ftpcount <br>我们可以使用ftpcount命o十分清楚地统计出当前q接到FTP服务器上的用h目,q且同时列出上限。命令输?<br>如下所C: <br>Service class local         0           Users(20maximum) <br>Service class remote       5           Users(100maximum) <br>5.4.2 在线用户查看命oftpwho <br>我们可以使用ftpwho命o十分清楚地列出当前连接的用户的详l情c?<br>5.4.2 FTP关闭文g生成命oftpshut <br>我们可以使用ftpshut命o生成一个在/etc/ftpaccess中设|的shut.msg文gQ用于关定。ftpshut命o的格式ؓQ? <br>Ftpshut      time   <br>-l   q个参数讑֮在关闭FTP服务器功能前多少分钟时停止用Lq接Q?<br>-d   q个参数讑֮在关闭FTP服务器功能前多少分钟时切断用戯接; <br>time 指定关闭FTP服务器的旉。例?Q?0分则写ؓ0620Q?nbsp; <br>(<br><a target="_blank">http://www.fanqiang.com</a><br>)     q入【UNIX论坛?nbsp; <br><img src ="http://www.shnenglu.com/mydriverc/aggbug/109686.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mydriverc/" target="_blank">旅?/a> 2010-03-14 16:58 <a href="http://www.shnenglu.com/mydriverc/archive/2010/03/14/109686.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VSFTPD官方资料译版(不完整版Q?--http://www.shnenglu.com/mydriverc/archive/2010/03/14/109685.html旅?/dc:creator>旅?/author>Sun, 14 Mar 2010 08:55:00 GMThttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109685.htmlhttp://www.shnenglu.com/mydriverc/comments/109685.htmlhttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109685.html#Feedback0http://www.shnenglu.com/mydriverc/comments/commentRss/109685.htmlhttp://www.shnenglu.com/mydriverc/services/trackbacks/109685.html译了部分VSFTPD的官方资料?br>有些知道是什么意思,但难于翻译。有些涉及专业的知识Q我自己也不懂,只好按字面翻译。有些我自己看不懂,只好量译?br>如果看了其中一部分觉得p涂Q请参阅官方文挡?br>安装?
===============
q个文g详细介绍了如何从VSFTPD?tar.gz分发包开始,建立和安装ƈq行VSFTPD?

1Q徏立VSFTPD
先进入解?tar.gz文g后生的目录内。如下:
cd vsftpd-2.0.1

~辑"builddefs.h"以操作compile-time讑֮。(tcp_wrappers build,{)
输入make,回RQ如果它不工作请发邮仉知?.
q将产生一个二q制文gQ你可以验证一下。如下:
[chris@localhost vsftpd]$ ls -l vsftpd
-rwxrwxr-x 1 chris chris 61748 Sep 27 00:26 vsftpd

2Q满VSFTPD安装所需的一些条?
VSFTPD默认讄需要一?nobody"用户Q如果这个用户不存在Q那么添加它。如下:
[root@localhost root]# useradd nobody
useradd: user nobody exists

VSFTPD默认讄需要一个空目录Q?usr/share/empty.增加q个目录Q如果它q不存在的话。如下:
[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ȝ中存在?br>以下命o用来创徏一?ftp"用户Q如果它q不存在的话?
[root@localhost root]# mkdir /var/ftp/
[root@localhost root]# useradd -d /var/ftp ftp

Q即使你?ftp"用户已经存在Q完成以下这两步也是很有好处的:Q?
[root@localhost root]# chown root.root /var/ftp
[root@localhost root]# chmod og-w /var/ftp

3Q安装VSFTPD的配|、执行和帮助文g?br>输入"make install"后会二q制文g和帮助文件拷贝到适当的目录?br>你也可以手工拯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"不会拯默认的配|文Ӟ所以徏议你手工拯Q?
cp vsftpd.conf /etc
daidong注:Ҏ(gu)你系l版本的不同Q也可能?cp vsftpd.conf /etc/vsftpd

4)试 Q无inetd影响Q?
VSFTPD能运行在独立模式Qstandalone)或者通过inetd(xinetd)来启动?br>你能通过inetd来运行vsftpd以更好地控制它。但我们在首ơ运行时不这么做Q以便检查系l是否现在配|正常?br>~辑/etc/vsftpd.confQdaidong注:也可能是/etc/vsftpd/vsftpd.conf)Qƈ在最下面加入以下q一行:
listen=YES

q将告诉VSFTPD不要从inetd启动?
OKQ现在试着启动FTP?br>以ROOTd?br>定你没有运行其他FTP服务Q否则VSFTPD不能占用FTP所需?1端口Q?br>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?br>你也许想通过inetd或者类似方式启动VSFTPDQ因能给你更多的感受。例如xinetd有很多的设|?br>Q注意:VSFTPD的内在机制屏蔽了xinetd的大多数的有用的讄Q?br>如果使用标准?inetd",你需要编?etc/inetd.conf,在其中加入以下一行:
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ؓ本地d配置PAM文gQ可选)
如果你在一台激zMPAM的设备上q行VSFTPDQ你需要提供一?/etc/pam.d/ftp 文g。否则非匿名用户无法登录服务器?br>Q注Q如果你的PAM版本比较老,那么q个文g也许?/etc/pam.conf).

做ؓ一个标准设|,你可以拷贝一个已提供的范例文Ӟ如下Q?
cp RedHat/vsftpd.pam /etc/pam.d/ftp

7Q自定义你的配置文g
完成以上的配|后Q徏议你安装一个配|文件。默认的配置文g位置?etc/vsftpd.conf. 在VSFTPD软g分发包内有一个范例配|文件?br>你可以拷贝其?etc/vsftpd.conf以做q一步修攏V?
cp vsftpd.conf /etc
Qdaidong注:也可能是 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了如何ؓ虚拟用户讄VSFTPD/PAM?br>虚拟用户是一个在pȝ中ƈ不作Z个登录实体而存在的用户。用虚拟用h使用真实的用h安全Q因个̎号只能用于FTP服务器?br>虚拟用户l常用来提供l不大可信Q的用戯问某些资源,而这些资源通常是其他普通用户不能访问的?

1Q创拟用h据库
我们用pam_userdb来认证虚拟用戗这需要提供一?#8220;db"格式Q一U通用数据库格式)的用户名/密码文g?br>创徏一?db"格式的文Ӟ首先要创Z个标准文本文Ӟq把用户名,密码以竖直排列方式输入。如logins.txtQ?
tom
foo
fired
bar
q个例子?tom用户的密码是foo.fired用户的密码是bar.
以ROOTdQ创Z个数据库文gQ如下:
db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
Q这要求berkeley dbE序已经安装Q?
(注:一些系l也许安装了多个版本?db",所以某些情况下你可能?db3_load"才是正确的。对于一? Debianpȝ是q样?br>关键在于要让pam_userdb怿它的d数据库是哪一个db版本所产生Q一般都是db3Q尽你的系l里可能安装的是db4).Q?br>q将创徏/etc/vsftpd_login.db文g。显Ӟ你希望设定这个文件的权限Q?
chmod 600 /etc/vsftpd_login.db

要了解更多关于维护你的登录数据库的信息,请在"berkeley DB"察看相关文档Q?
http://www.sleepycat.com/docs/utility/index.html

2Q用你的新数据库创徏一个PAM文g
请参考范例vsftpd.pamQ它包含2行:
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
请参考这个目录下的例子。让我们一行行地看一看这些配|:
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认这几个配置Q这关闭写的权限?

chroot_local_user=YES

q将把虚拟用户锁定在我们在以上设|的/home/ftpsite目录内?

guest_enable=YES
guest_username=virtual

guest_enable非常重要-它激zM虚拟用户Q而guest_username说明所有的虚拟用户都对应我们在上面讄的真实用P“virtual".
q同时确定了虚拟用户在文件系l中的位|,也就是说Q虚拟用Lhome目录?virtual"用户的home目录Q?home/ftpsite?

listen=YES
listen_port=10021

q让VSFTPD以独立模?standalone)q行Q而不是从inetd方式启动。也是_你运行VSFTPD可执行文件就启动了FTP服务?br>同时也让VSFTPD启用非标准端?0021来监听F(xin)TPhQFTP一般?1端口Q?

pasv_min_port=30000
pasv_max_port=30999

q设定了被动模式的FTPh端口。当你配|了一个防火墙的时候,q个配置很好用?br>拯范例配置文g?etc
cp vsftpd.conf /etc/
(daidong注:也可能是/etc/vsftpd)

5)启动VSFTPD
到VSFTPD二进制文件所在的目录Q输入:
./vsftpd

如果一切正常,q个命o生效。否则,你将会看C些错误信息的反馈?

6Q测?br>启动另一个会话。(或者ctrl-zQ再输入"bg",让VSFTPD在后台运行)?br>q是一个FTP会话的例子:

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?br>密码?foo"
出现”failed to open directory“的话Q别担心。这是因?home/ftpsite目录不容许被L览?br>Q我们可以更改anon_world_readable_only=NO以消除告警,但ؓ了安全,q是保留q个配置Q?br>我们能通过size命o看到我们已经讉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从而实现更复杂一点的配置?br>让我们假定我们需?U不同的虚拟用户Q一U只能浏览ƈ下蝲资源Q另一U能上传文gq浏览站内资源?br>要激z这个设|,我们用VSFTPD的强大的“单个用户配置”功能Q是V1.1.0后出现的新功能)?br>在前一个虚拟用戯例中Q我们创Z2个用?tom和fred.
我们实现fred有写权限以上传新文gQ同时tom只能下蝲文g?

1Q激zd个用户配|功能?br>要激z这个功能,需要增加以下配|行到配|文Ӟ

user_config_dir=/etc/vsftpd_user_conf

q且创徏目录Q?

mkdir /etc/vsftpd_user_conf

2Q授予tomd所有文件和目录的权?br>在上一个例子的最后,我们注意到虚拟用户只能浏览所有的完全可读属性的目录和文件。我们/home/ftpsite完全可读Q而且被上传的文g?br>赋予了完全可ȝ权限Qdaidong注:意思是说这栯拟用户就能读取所有的文g了)。但实现q个目的的另一个方法是授权tom能下载那些非完全可读的文件?br>对于tom,他的配置文g中需要修改一个设|:
anon_world_readable_only:

设ؓ"anon_world_readable_only=NO" > /etc/vsftpd_user_conf/tom
(daidong注:既把默认配置修改了anon_world_readable_only后,复制?etc/vsftpd_user_conf下,名字为tom)

验证一下结?以tomdQ?#8220;ls”返回一个目录列表。如果以fredd不会如此?br>注意Q重启VSFTPD以启用配|文?etc/vsftpd.conf(高用户也可以发送SIGHUPlVSFTPD的监听进E?.

3)授予fregd所有文?目录q创建新文g/目录的权?但让他不能对已存在的文g/目录q行操作.

echo "anon_world_readable_only=NO" > /etc/vsftpd_user_conf/fred
echo "write_enable=YES" >> /etc/vsftpd_user_conf/fred
echo "anon_upload_enable=YES" >> /etc/vsftpd_user_conf/fred

验证一?以tomd,不能上?而fred可?
试图删除一个文?-?你们俩都不行!


]]>
LINUX下FTP的搭?wuftphttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109675.html旅?/dc:creator>旅?/author>Sun, 14 Mar 2010 06:27:00 GMThttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109675.htmlhttp://www.shnenglu.com/mydriverc/comments/109675.htmlhttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109675.html#Feedback0http://www.shnenglu.com/mydriverc/comments/commentRss/109675.htmlhttp://www.shnenglu.com/mydriverc/services/trackbacks/109675.htmlFTP服务器的安装及管?wuftp

说明Q?/strong>
Linux下一般最常用的工具wu-ftpd.

wu-ftpd的安装非常容易,大多数版本的Linux中都包含了wu-ftpd的rpm软g包,你可以在安装Linux时指定装入。如果你惌行编译源代码Q也可以到ftp://ftp.wu-ftpd.org下蝲最新版本的源代码包?

安装好以后,可以用ckconfig命o来检查是否已l正安装。在/etc/passwd中可以指定ftp用户的登入目录?

wu-ftpd主要有以?个配|文Ӟ

ftpaccess(主要配置文gQ控制存取权?

ftpconvertions(配置文g压羃/解压~{?

ftpgroups(讑֮ftp自己定义的群l?

ftphosts(讑֮个别的用h?

ftpservers(讑֮不同IP/Domain Name以对应到不同的虚拟主?

ftpusers(讑֮哪些帐号不能用ftpq线)


一. ftp服务?br>1. inetd配置文g或xinetd.conf配置文g
/etc/inetd.conf文g内容如下:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

/etc/xinetd.conf文g内容如下:
service ftp
{
socket_type = stream
protocol = tcp
wait = no
user = root
#only_from = 202.118.66.0
#only_from += 192.168.1.2
#only_from += localhost
server = /usr/sbin/in.ftpd
server_args = -l -a
}


相关文g:/etc/services
ftp-data 20/tcp
ftp 21/tcp

2. ftp用户(Anonymous FTP服务器需要用?
文g:/etc/passwd?etc/shadow

/etc/passwd:
ftp:x:500:50:Anonymous FTP User:/home/ftp:/bin/false

/etc/shadow:
ftp:*:10689:0:99999:7:::

$finger ftp
Login: ftp Name: FTP User
Directory: /home/ftp Shell: /bin/false
Never logged in.
No mail.
No Plan.

3. DNS配置
ftp IN CNAME officail.domain.name.

4. 理员邮件别?br> 文g: /etc/mail/aliases (Solairs)
/etc/aliases (Linux)
(egrep aliases /etc/mail/sendmail.cf )

ftp-admin: real-user-name@domain.name

相关命o: newaliases, 建立邮g别名


? 文gpȝl构
1. Anonymous FTP 目录l构
如下子目?
bin(ls,gzip,tar{anonymous ftp用户所要用的二进制可执行文g)
etc(passwd,group)
lib(动态连接库,ld-2.0.7.so, ld-linux.so.2, ldd ../bin/ls {?
pub(可下载文?

2. passwd及group文g
不要使用pȝ的passwd及group文g,最好只放所需的用户及l信?br> passwd文g:
ftpadm:x:0:0:Anonymous FTP:/home/ftp:/bin/false
ftp:x:60000:60000:Anonymous FTP:/home/ftp:/bin/false
group文g:
ftpadmin:x:0:
ftp:x:60000:

3. 文g及目录属?br> ȝ?home/ftp 属主root, 属?55
bin 属主root lwheel或other, 属?11
etc 同上
lib 属主root, 属?55
pub 属主为root或ftp理?属?55

认不要用ftp作Q何文件或目录的属?

[hbwork@helius /etc]$ cd /home/ftp/
[hbwork@helius ftp]$ ls -l
total 4
d--x--x--x 2 root root 1024 Apr 8 17:57 bin
d--x--x--x 2 root root 1024 Jun 4 15:12 etc
drwxr-xr-x 2 root root 1024 Apr 8 17:57 lib
dr-xr-sr-x 2 root ftp 1024 Apr 8 11:18 pub

$ls -l bin
[root@helius ftp]# ls -l bin/
total 250
---x--x--x 1 root root 15236 Apr 28 1998 compress
---x--x--x 1 root root 46356 Sep 11 1998 cpio
---x--x--x 1 root root 45436 Sep 11 1998 gzip
---x--x--x 1 root root 29980 Sep 11 1998 ls
---x--x--x 1 root root 110668 Sep 11 1998 tar
lrwxrwxrwx 1 root root 4 May 19 16:48 zcat -> gzip

$ls -l etc
total 19
-r--r--r-- 1 root root 57 Jun 4 15:12 group
-r--r--r-- 1 root root 16372 Sep 11 1998 ld.so.cache
-r--r--r-- 1 root root 83 Jun 4 15:12 passwd

(在Solaris上徏立anonymouse FTPҎ(gu)一?请参考Wu-ftpd-faq)


4. 可选目?br> incoming Owner: root Mode:1733 (chmod 1733 incoming)

? 试及调?br> egrep ftp /etc/inetd.conf
ps ax |egrep inetd
kill -HUP $PID

$ftp localhost (or ftp 0)
执行ls cd get {指令看一下结果如?br>

? wu-ftpd FTP服务器进E?br>
增强功能:
. 允许Ҏ(gu)用户的ip地址或主?用户名设|不同的c?br> . Ҏ(gu)讄的类,理员可以控制其讉K权限,如防止anonymous用户
删除文g或覆盖已有的文g
. 可以实现自动执行uncompress,compress,tar,gzip{功?br> . 可以记蝲所有的upload/download,及ftp client所发送的每个命o.
. 允许qxxftp服务?br>
相关配置文g:
ftpaccess
ftpconversions
ftphosts
ftpuser

相关命o:
strings /usr/sbin/in.ftpd |egrep ftpaccess

1. ~译 wu-ftpd

最新版? wu-ftpd-2.5.0
ftp://ftp.dlut.edu.cn/pub/unix/ftp/servers/

$tar -zxvf wu-ftpd-2.5.0.tar.gz
$cd wu-ftpd-2.5.0
在编译安装之前参考文件INSTALL,README,upload.configuration.HOWTO
如想定制自己的wu-ftpd,可编辑文件src/pathnames.h
$build help
查看~译帮助

$./build lnx
$su
#./build install

2. 命o行选项
-d Sends debugging information to syslog
-a Enable the use of the ftpaccess file(This is the default)
-A Disable the use of the ftpaccess file
-L Cause ftpd to log all USER commands.
-i Causes ftpd to log all incoming(upload) file in the xferlog
file( See pathnames.h )
-o Causes ftpd to log all outgoing(download) files in the xferlog file

3. 文gftpconversions
doc/examples/, 用于指定get时的实时压羃或展开(on-the-fly).

此文件不般情况下不用作修?br>
4. ftpaccess
(1)定义c?br> 三种用户cd: real anonymous
guest(需要提供相应的口o)
格式:
class classname type[,type,...] address [ address ...]

CZ:
class local real *.dlut.edu.cn 202.118.66 localhost
class anonymous anonymous *


(2)拒绝讉K
deny *.net.cn /etc/ftpmsgs/msg.denied

(3)限制讉K
limit class number times messages

limit anonymous 200 SaSu
limit anonymous 100 Any /etc/ftpmsgs/msg.toomany


loginfails 2
tar no anonymous
compress no anonymous

chmod yes|no type [type ...]
delete yes|no type [type ...]
overwrite yes|no type [type ...]
rename yes|no type [type ...]
umask yes|no type [type ...]

passwd-check none|trivial|rfc822 enforce|warn

(5)banner
昄在用户login之前的信?br> banner /etc/ftpmsg/banner.msg

其中banner.msg文g中可以引用如下变?
%C Current working directory
%E Email address of the administrator( email ftpadm@dlut.edu.cn)
%F 可当目录下可用空?br> %L hostname
%M 最大允许连接数
%N 同一cM当前q接?br> %R The client host'name or ip address
%T Current local time
%U The name the user specified at login

CZ文g:
Welcome to this test FTP Archive, running on %L.

Please contact %E with any technical problems you may have
accessing this archive.

You are currently user %N out of a maximum %M users. It's
%T in PRC.

(6)message命o
message pathname login
message pathname cwd=dir
message .conents cwd=*
每改变目录均昄,cwd=dir只在W一ơ更Ҏ(gu)昄

(7)readme命o
readme pathname [login|cwd=dir] [class] [class]

readme README* cwd=*

(8)shutdown命o (2.5.0上不正常)
shutdown pathname

(9)log命o

log commands type [ type ...]

log transfer type [type ...] direction[,direction]

(10)alias
alias source: /pub/local/sw/source

(11)cdpath
cdpath /pub /pub1

上蝲控制
upload hierarchy directory yes|no owner group mode [dirs|nodirs]

下面的wu-ftpd-2.5.0 /etc/ftpaccess文g中的upload配置(大家可以试一下大工FTP
服务器的upload,但别传没用的q大的文?

# FTP-home-dir archiv-dir allow? owner group mode dirs?
# (as in /etc/passwd)

upload /home/ftp * no
upload /home/ftp /pub3/incoming/windows yes ftpadmin ftp 0664 dirs
upload /home/ftp /pub3/incoming/windows/* yes ftpadmin ftp 0664 dirs
upload /home/ftp /pub3/incoming/unix yes ftpadmin ftp 0666 dirs
upload /home/ftp /pub3/incoming/unix/* yes ftpadmin ftp 0666 dirs
upload /home/ftp /pub3/incoming/other yes ftpadmin ftp 0666 dirs
upload /home/ftp /pub3/incoming/other/* yes ftpadmin ftp 0666 dirs
upload /home/ftp /pub3/incoming/WDI yes ftpadmin ftp 0666 dirs
upload /home/ftp /pub3/incoming/WDI/* yes ftpadmin ftp 0666 dirs


5. ftphosts文g
allow ftp *.dlut.edu.cn
allow anonymous *.dlut.edu.cn
deny ftp *.dlmu.edu.cn
deny ftp *.dlmu.edu.cn 202.118.80.*


6.实用E序

ftpcount
ftpwho
ftushut

l护:
建立q接时最好用相对\径?br> Ҏ(gu)软gcd建立不同的子目录?br> 最好在每个目录中徏立相应的说明文g或index文gQ方便用h找?/pre>

]]>
iptables 下开放ftphttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109674.html旅?/dc:creator>旅?/author>Sun, 14 Mar 2010 06:24:00 GMThttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109674.htmlhttp://www.shnenglu.com/mydriverc/comments/109674.htmlhttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109674.html#Feedback0http://www.shnenglu.com/mydriverc/comments/commentRss/109674.htmlhttp://www.shnenglu.com/mydriverc/services/trackbacks/109674.htmliptables 的filter表的INPUT铄默认{略设ؓ了DROPQ其余的铑֝为ACCEPT? 该服务器卌作ftp服务器,也要q上别的ftp服务器。即是说要把源端口和目的端口都开?1才行Q?br>iptables -A INPUT -p tcp –sport 21 -j ACCEPT
iptables -A INPUT -p tcp –dport 21 -j ACCEPT
开?1端口p了吗Q不是的。先说说ftp协议。ftp协议是一个简单、保密性差Q明码)的tcp协议Q它的工作原理是客户端先q服务器? ?1端口Q然后经q?步的握手以后建立了一条连接。要注意的是Q这条连接只可以用来传输ftp的命令,只有q条q接的话是什么都传不了的Q就是? “ls”命o来查看文件也不行?br>建立了命令的q接以后Q服务器端就要徏立一条数据的q接。数据的q接又分Z动模式(portQ和被动模式QpassiveQ。ftp默认是被? 模式Q主动和被动之间使用”pass”命o切换。主动模式通过20端口与客L相连Q而被动模式却使用1024以后的端口与客户端相q。由?024以后 的端口是随机分配的,所以在被动模式下我们是不知道服务端是用什么端口与客户端连接的。也是_我们是不知道iptables要开放什么端口?br>开始我使用的是
iptables -A input -p tcp –sport 1024: –dport 1024: -j ACCEPT
来让ftp建立被动q接的。但觉得如果q样的话Q那q于把所以p2p的连接都开放了Q不安全?br>于是在CU上问人,l于扑ֈ了解决的Ҏ(gu):
1、加载模块?br>
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp

2,加上一条规则:
处于server
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

处于client
iptables -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

允许q接保持的被动访问?br>其实q样在重启iptables的时候所需的模块又不见了,通过不懈的努力终于找C最l的解决Ҏ(gu)Q编?etc/sysconfig/iptables-configQ?br>IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"
把需要加载的模块加入Q无论重启系l还是iptables但ftp模块始终q是加蝲的?br>搞定p样哈哈哈Q希望能在以后帮助大家来解决ftp上的问题?br>

本文来自ChinaUnix博客Q如果查看原文请点:http://blog.chinaunix.net/u1/51714/showart_423414.html

]]>
Linux iptables配置FTP的主动和被动模式http://www.shnenglu.com/mydriverc/archive/2010/03/14/109670.html旅?/dc:creator>旅?/author>Sun, 14 Mar 2010 06:18:00 GMThttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109670.htmlhttp://www.shnenglu.com/mydriverc/comments/109670.htmlhttp://www.shnenglu.com/mydriverc/archive/2010/03/14/109670.html#Feedback0http://www.shnenglu.com/mydriverc/comments/commentRss/109670.htmlhttp://www.shnenglu.com/mydriverc/services/trackbacks/109670.html

先理解主被动的联接方式:

FTP协议有两U工作方式:PORT方式和PASV方式Q中文意思ؓd式和被动式?/p>

Port模式Q?/font>ftp server:tcp 21 <------client:dynamic    ftp server:tcp 20 ------>client:dynamic

Pasv模式Q?/font>ftp server:tcp 21 <----client:dynamic     ftp server:tcp dynamic <----client:dynamic
PORTQ主动)方式?a >q接q程是:客户端向服务器的FTP端口Q默认是21Q发?a >q接? 求,服务器接受连接,建立一条命令链路。当需要传送数据时Q客? 端在命o链\上用PORT命o告诉服务器:“我打开了XXXX端口Q你q来q接?#8221;。于是服务器?0端口向客L的XXXX端口发送连接请求,建立一? 数据链\来传送数据?br>PASVQ被动)方式的连接过E是Q客L向服务器的FTP端口Q默认是21Q发送连接请 求,服务器接受连接,建立一条命令链路。当需要传送数据时Q服? 器在命o链\上用PASV命o告诉客户端:“我打开了XXXX端口Q你q来q接?#8221;。于是客L向服务器的XXXX端口发送连接请求,建立一条数据链路来 传送数据?/p>


#allow all ftp incoming connections
iptables -A INPUT -p tcp --dport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

# Enable active ftp transfers
iptables -A INPUT -p tcp --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT

# Enable passive ftp transfers
iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT



]]>
查看某组的所有用?/title><link>http://www.shnenglu.com/mydriverc/archive/2009/11/11/100744.html</link><dc:creator>旅?/dc:creator><author>旅?/author><pubDate>Wed, 11 Nov 2009 14:30:00 GMT</pubDate><guid>http://www.shnenglu.com/mydriverc/archive/2009/11/11/100744.html</guid><wfw:comment>http://www.shnenglu.com/mydriverc/comments/100744.html</wfw:comment><comments>http://www.shnenglu.com/mydriverc/archive/2009/11/11/100744.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/mydriverc/comments/commentRss/100744.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mydriverc/services/trackbacks/100744.html</trackback:ping><description><![CDATA[gawk 'BEGIN {FS=":"} $4=="504" {print $1}' /etc/passwd<br><br>504是组的ID<br><br><img src ="http://www.shnenglu.com/mydriverc/aggbug/100744.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mydriverc/" target="_blank">旅?/a> 2009-11-11 22:30 <a href="http://www.shnenglu.com/mydriverc/archive/2009/11/11/100744.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>后台(crontab,at&nohup)及计划Q?/title><link>http://www.shnenglu.com/mydriverc/archive/2009/10/26/99526.html</link><dc:creator>旅?/dc:creator><author>旅?/author><pubDate>Mon, 26 Oct 2009 15:16:00 GMT</pubDate><guid>http://www.shnenglu.com/mydriverc/archive/2009/10/26/99526.html</guid><wfw:comment>http://www.shnenglu.com/mydriverc/comments/99526.html</wfw:comment><comments>http://www.shnenglu.com/mydriverc/archive/2009/10/26/99526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/mydriverc/comments/commentRss/99526.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mydriverc/services/trackbacks/99526.html</trackback:ping><description><![CDATA[<p>后台(crontab,at&nohup)及计划Q?/p> <p>• 讄c r o n t a b文gQƈ用它来提交作业?br>• 使用a t命o来提交作业?br>• 在后台提交作业?br>• 使用n o h u p命o提交作业?br>名词解释Q?br>cronQ系l调度进E。可以用它在每天的非高峰负h间段q行作业Q或在一周或一月中的不同时D运行?br>At at命oQ用它在一个特定的旉q行一些特D的作业Q或在晚一些的非负荷高峰时间段或高峰负h间段q行?br>&Q用它在后台运行一个占用时间不长的q程?br>NohupQ用它在后台q行一个命令,即在用户退出时也不受媄?/p> <p><br>cron和crontab<br>c r o n是系l主要的调度q程Q可以在无需人工q预的情况下q行作业。c r o n t a b命o允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个c r o n t a b文g来保存调度信息。可以用它q行L一个s h e l l脚本或某个命令,每小时运行一ơ,或一周三ơ,q完全取决于你。每一个用户都可以有自qc r o n t a b文gQ但在一个较大的pȝ中,pȝ理员一般会止q些文gQ而只在整个系l保留一个这L文g。系l管理员是通过c r o n . d e n y和c r o n . a l l o wq两个文件来止或允许用h有自qc r o n t a b文g?/p> <p>crontab的域<br>Z能够在特定的旉q行作业Q需要了解c r o n t a b文g每个条目中各个域的意义和格式?/p> <p>下面是q些域:<br>W?列分?? 9<br>W?列小?? 3Q?表示子夜Q?br>W?列日1? 1<br>W?列月1? 2<br>W?列星??Q?表示星期天)<br>W?列要q行的命?/p> <p>下面是c r o n t a b的格式:</p> <p>?lt; >?lt; >?lt; >?lt; >星期< >要运行的命o</p> <p>其中< >表示I格?br>C r o n t a b文g的一个条目是从左边读LQ第一列是分,最后一列是要运行的命oQ它位于星期的后面?/p> <p>可以用横?来表CZ个时间范_例如你希望星期一x期五q行某个作业Q那么可以在星期域? - 5来表C?br>q可以在q些域中使用逗号“,”Q例如你希望星期一和星期四q行某个作业Q只需要? , 4来表C?br>可以用星?来表Cl的旉Dc如果你Ҏ(gu)个表C时间的域没有特别的限定Q也应该在该域填?。该文g的每一个条目必d?个时间域Q而且每个域之间要用空格分隔?br>该文件中所有的注释行要在行首用#来表C?/p> <p>c r o n t a b文g例子Q?/p> <p>30 21* * * /apps/bin/cleanup.sh</p> <p>上面的例子表C每晚的2 1 : 3 0q行/ a p p s / b i n目录下的c l e a n u p . s h?/p> <p>45 4 1,10,22 * * /apps/bin/backup.sh</p> <p>上面的例子表C每?? 0? 2日的4 : 4 5q行/ a p p s / b i n目录下的b a c k u p . s h?/p> <p>10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;</p> <p>上面的例子表C每周六、周日的1 : 1 0q行一个f i n d命o?/p> <p>0,30 18-23 * * * /apps/bin/dbcheck.sh</p> <p>上面的例子表C在每天1 8 : 0 0? 3 : 0 0之间每隔3 0分钟q行/ a p p s / b i n目录下的d b c h e c k . s h?/p> <p>0 23 * * 6 /apps/bin/qtrend.sh</p> <p>上面的例子表C每星期六的11 : 0 0 p mq行/ a p p s / b i n目录下的q t r e n d . s h?/p> <p>你可能已l注意到上面的例子中Q每个命令都l出了绝对\径。当使用c r o n t a bq行s h e l l脚本Ӟ要由用户来给本的l对路径Q设|相应的环境变量。记住,既然是用户向c r o n提交了这些作业,p向c r o n提供所需的全部环境。不要假定c r o n知道所需要的Ҏ(gu)环境Q它其实q不知道。所以你要保证在s h e l l脚本中提供所有必要的路径和环境变量,除了一些自动设|的全局变量?br>如果c r o n不能q行相应的脚本,用户会收到一个邮件说明其中的原因?/p> <p>at命o<br>a t命o允许用户向c r o n守护q程提交作业Q其在E后的时间运行。这里稍后的旉可能<br>是指1 0 m i n以后Q也可能是指几天以后。如果你希望在一个月或更长的旉以后q行Q最好还<br>是用c r o n t a b文g?br>一旦一个作业被提交Q?a t命o会保留所有当前的环境变量Q包括\径,不象c r o n t a bQ?br>只提供缺省的环境。该作业的所有输出都以?sh)子邮g的Ş式发送给用户Q除非你对其输出<br>q行了重定向Q绝大多数情况下是重定向到某个文件中?br>和c r o n t a b一P根用户可以通过/ e t c目录下的a t . a l l o w和a t . d e n y文g来控制哪些用户可?/p> <p>使用a t命oQ哪些用户不行。不q一般来_对a t命o的用不如对c r o n t a b的用限刉么严<br>根{?br>a t命o的基本Ş式ؓQ?br>at [-f script] [-m -l -r] [time] [date]<br>其中Q?br>-f script 是所要提交的脚本或命令?br>-l 列出当前所有等待运行的作业。a t q命oh相同的作用?br>-r 清除作业。ؓ了清除某个作业,q要提供相应的作业标识( I DQ;有些U N I X变体?br>接受a t r m作ؓ清除命o?br>-m 作业完成后给用户发邮件?br>time at命o的时间格式非常灵z;可以是H、H H . H H M M、H H : M M或H : MQ其中H和M<br>分别是小时和分钟。还可以使用a . m .或p . m .?br>date 日期格式可以是月份数或日期数Q而且a t命oq能够识别诸如t o d a y、t o m o r r o wq样<br>的词?br>现在p我们来看看如何提交作业?br>3.2.1 使用at命o提交命o或脚?br>使用a t命o提交作业有几U不同的形式Q可以通过命o行方式,也可以用a t命o提示W?br>一般来说在提交若干行的pȝ命oӞ我用a t命o提示W方式,而在提交s h e l l脚本Ӟ使用<br>命o行方式?br>如果你想提交若干行的命oQ可以在a t命o后面跟上日期/旉q回车。然后就q入了a t?br>令提C符Q这时只需逐条输入相应的命令,然后?#8216; < C T R L - D >’退出。下面给Z个例子:<br>其中Q?< E O T >是< C T R L - D >。在2 1 : 1 0pȝ执行一个简单的f i n d命o。你应当已经?br>意到Q我所提交的作业被分配了一个唯一标识job 1。该命o在完成以后会全部结果以邮g<br>的Ş式发送给我?br>下面是我从q个邮g中截取的一部分Q?br>下面q些日期/旉格式都是a t命o可以接受的:</p> <p>如果希望向a t命o提交一个s h e l l脚本Q用其命o行方式即可。在提交脚本时? f选项?br>在上面的例子中,一个叫做d b _ t a b l e . s h的脚本将在明天下? : 0 0q行?br>q可以用e c h o命o向a t命o提交作业Q?br>$ echo find /etc -name "passwd" -print | at now +1 minute<br>3.2.2 列出所提交的作?br>一个作业被提交后,可以使用at -l命o来列出所有的作业Q?br>其中Q第一行是作业标识Q后面是作业q行的日?旉。最后一列a代表a t。还可以使用<br>a t q命o来完成同L功能Q它是a t命o的一个链接。当提交一个作业后Q它?yu)p拯?br>/ v a r / s p o o l / a t目录中,准备在要求的旉q行?br>3.2.3 清除一个作?br>清除作业的命令格式ؓQ?br>atrm [job no] 或at -r [job no]<br>要清除某个作业,首先要执行at -l命oQ以获取相应的作业标识,然后对该作业标识使用<br>at -r 命oQ清除该作业?br>有些pȝ使用at-r [job no]命o清除作业?br>如果使用自己的名字登录,׃用? u选项Q因为在执行c r o n t a b命oӞ该命令能够知道当前的用户?/p> <p>创徏一个新的crontab文g<br>在向c r o nq程提交一个c r o n t a b文g之前Q要先设|环境变量E D I TO R。c r o nq程Ҏ(gu)它来定使用哪个~辑器编辑c r o n t a b文g。大部䆾的U N I X和L I N U X用户都用v iQ如果你也是q样Q那么你q? H O M E目录下的. p r o f i l e文gQ在其中加入q样一行:</p> <p>EDITOR=vi; export EDITOR</p> <p>然后保存q出?br>创徏一个名?lt; u s e r > c r o n的文Ӟ其中< u s e r >是用户名Q例如, samcron。在该文件中加入如下的内宏V?/p> <p>#(put your own initials here) echo the date to the console every<br>#15 minutes between 6pm and 6am<br>0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console</p> <p>保存q出。确信前?个域用空格分隔?br>在上面的例子中,pȝ每? 5分钟向控制台输出一ơ当前时间。如果系l崩溃或挂vQ从最后所昄的时间就可以一眼看出系l是什么时间停止工作的。在有些pȝ中,用t t y 1来表C控制台Q可以根据实际情况对上面的例子进行相应的修改?br>Z提交你刚刚创建的c r o n t a b文gQ可以把q个新创建的文g作ؓc r o n命o的参敎ͼ</p> <p>$su sam<br>crontab samcron</p> <p>Z方便演示Q切换到sam用户环境下,然后用crontab samcron提交lc r o nq程Q它?yu)每? 5分钟q行一ơ?/p> <p>同时Q新创徏文g的一个副本已l被攑֜/ v a r / s p o o l / c r o n目录中,文g名就是用户名Q即samQ?/p> <p>#su<br># cat /var/spool/cron/sam<br># DO NOT EDIT THIS FILE - edit the master and reinstall.<br># (samcron installed on Wed Nov 10 21:41:55 2004)<br># (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)<br>#(put your own initials here) echo the date to the console every<br>#15 minutes between 6pm and 6am<br>0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console</p> <p>回到root下,查看/var/spool/cron/sam</p> <p>列出crontab文g<br>Z列出c r o n t a b文gQ可以用Q?/p> <p>$ crontab -l</p> <p># DO NOT EDIT THIS FILE - edit the master and reinstall.<br># (samcron installed on Wed Nov 10 21:41:55 2004)<br># (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)<br>#(put your own initials here) echo the date to the console every<br>#15 minutes between 6pm and 6am<br>0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console</p> <p>你将会看到和上面cM的内宏V可以用这U方法在$ H O M E目录中对c r o n t a b文g做一备䆾Q?/p> <p>$ crontab -l > $HOME/mycron</p> <p>q样Q一旦不心误删了c r o n t a b文gQ可以用上一节所讲述的方法迅速恢复?/p> <p>~辑crontab文g<br>如果希望d、删除或~辑c r o n t a b文g中的条目Q而E D I TO R环境变量又设|ؓv iQ那么就可以用v i来编辑c r o n t a b文gQ相应的命o为:</p> <p>$ crontab -e</p> <p>可以像用v i~辑其他M文g那样修改c r o n t a b文gq出。如果修改了某些条目或添加了新的条目Q那么在保存该文件时Q?c r o n会对其进行必要的完整性检查。如果其中的某个域出C出允许范围的|它会提示你?br>例如Q加入下面的一条:</p> <p>#DT:delete core files,at 3:30am on 1,7,14,21,26 days of each month<br>30 3 1,7,14,21,26 * * /bin/find -name "core" -exec rm {} \;</p> <p>现在保存q出。最好在c r o n t a b文g的每一个条目之上加入一条注释,q样可以知道它的功能、运行时_更ؓ重要的是Q知道这是哪位用L作业?br>现在让我们用前面讲q的crontab -l命o列出它的全部信息Q?/p> <p>#(put your own initials here) echo the date to the console every<br>#15 minutes between 6pm and 6am<br>0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console</p> <p>#DT:delete core files,at 3:30am on 1,7,14,21,26 days of each month<br>30 3 1,7,14,21,26 * * /bin/find -name "core" -exec rm {} \;</p> <p>删除crontab文g<br>Z删除c r o n t a b文gQ可以用Q?/p> <p>$ crontab -r</p> <p>恢复丢失的crontab文g<br>如果不小心误删了c r o n t a b文gQ假设你在自q$ H O M E目录下还有一个备份,那么可以其拯? v a r / s p o o l / c r o n / < u s e r n a m e >Q其?lt; u s e r n a m e >是用户名。如果由于权限问题无法完成拷贝,可以用:</p> <p>$ crontab <filename></p> <p>其中Q?lt; f i l e n a m e >是你? H O M E目录中副本的文g名?br>在自q$ H O M E目录中保存一个该文g的副本。编辑副本,然后重新提交新的文g?br>有些c r o n t a b的变体有些怪异Q所以在使用c r o n t a b命o时要格外心。如果遗漏了M选项Qc r o n t a b可能会打开一个空文gQ或者看h像是个空文g。这时敲d e l e t e键退出,不要?lt; C t r l - D >Q否则你丢失c r o n t a b文g?/p> <p>论坛例子<br>can't start cron file FIFO exist <br><a >http://www.chinaunix.net/forum/viewtopic.php?t=87026</a><br>15 1 * * * /opt/bin/ta.sh /opt/aadir > /dev/null 2>&1?>&1的意?br><a >http://www.chinaunix.net/forum/viewtopic.php?t=139356</a><br>~写crontab:每周自动执行一文g夹的内容备䆾,q且文g名字以生成的日期命名. <br><a >http://bbs.chinaunix.net/forum/viewtopic.php?t=263863</a></p> <p>at命o<br>a t命o允许用户向c r o n守护q程提交作业Q其在E后的时间运行。一旦一个作业被提交Q?a t命o会保留所有当前的环境变量Q包括\径,不象c r o n t a bQ只提供~省的环境。该作业的所有输出都以?sh)子邮g的Ş式发送给用户Q除非你对其输出q行了重定向Q绝大多数情况下是重定向到某个文件中?br>和c r o n t a b一P根用户可以通过/ e t c目录下的a t . a l l o w和a t . d e n y文g来控制哪些用户可以用a t命oQ哪些用户不行。不q一般来_对a t命o的用不如对c r o n t a b的用限刉么严根{?/p> <p>a t命o的基本Ş式ؓQat [-f script] [-m -l -r] [time] [date]</p> <p>其中Q?/p> <p>-fQscript 是所要提交的脚本或命令?/p> <p>-lQ列出当前所有等待运行的作业。a t q命oh相同的作用?br>-rQ清除作业。ؓ了清除某个作业,q要提供相应的作业标识( I DQ;有些U N I X变体只接受a t r m作ؓ清除命o?br>-mQ作业完成后l用户发邮g?/p> <p>timeQat命o的时间格式非常灵z;可以是H、H H . H H M M、H H : M M或H : MQ其中H和M分别是小时和分钟。还可以使用a . m .或p . m .?br>dateQ日期格式可以是月䆾数或日期敎ͼ而且a t命oq能够识别诸如t o d a y、t o m o r r o wq样的词?/p> <p><br>使用at命o提交命o或脚?br>使用a t命o提交作业有几U不同的形式Q可以通过命o行方式,也可以用a t命o提示W。一般来说在提交若干行的pȝ命oӞ使用a t命o提示W方式,在提交s h e l l脚本Ӟ使用命o行方式?/p> <p>命o行方式:at [-f script] [-m -l -r] [time] [date]</p> <p>提示W方式:<br>以在a t命o后面跟上日期/旉q回车。然后就q入了a t命o提示W,q时只需逐条输入相应的命令,然后?#8216; < C T R L - D >’退出?/p> <p>1、例一Q提C符方式</p> <p># su sam<br>$ at 10:40<br>warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh<br>at> find /etc -name "passwd" -print<br>at> <EOT><br>job 1 at 2004-11-02 10:40</p> <p>其中Q?< E O T >是< C T R L - D >。在10:40pȝ执行一个简单的f i n d命o。提交的作业被分配了一个唯一标识job 1。该命o在完成以后会全部结果以邮g的Ş式发送给我?/p> <p>下面q些日期/旉格式都是a t命o可以接受的:</p> <p>at 5.00am May23<br>at 11.20pm<br>at now +2 hour<br>at 9am tomorrow<br>at 15:00 May24<br>at now + 10 minutes</p> <p>2、例二:命o行方?br>如果希望向a t命o提交一个s h e l l脚本Q用其命o行方式即可。在提交脚本时? f选项?/p> <p>$ touch db_table.sh<br>$ at 3:00pm tomorrow -f db_table.sh<br>warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh<br>job 3 at 2004-11-02 15:00</p> <p>在上面的例子中,一个叫做d b _ t a b l e . s h的脚本将?004-11-02 15:00q行。俺的机子时间不寏V?/p> <p>3、还可以使用e c h o命o向a t命o提交作业Q?/p> <p>$ echo find /etc -name "passwd" -print | at now +1 minute<br>warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh<br>job 4 at 2004-11-01 19:07</p> <p>列出所提交的作?br>一个作业被提交后,可以使用at -l命o来列出所有的作业Q?/p> <p>$ at -l<br>1       2004-11-02 10:40 a sam<br>3       2004-11-02 15:00 a sam<br>4       2004-11-01 19:07 a sam</p> <p>其中Q第一行是作业标识Q后面是作业q行的日?旉。最后一列a代表a t?br>q可以用a t q命o来完成同L功能Q它是a t命o的一个链接?br>直接>atq,相当?gt;at -l</p> <p>当提交一个作业后Q它?yu)p拯? v a r / s p o o l / a t目录中,准备在要求的旉q行?/p> <p># pwd<br>/var/spool/at<br># ls -l</p> <p>清除一个作?/p> <p>清除作业的命令格式ؓQatrm [job no] 或at -r [job no]<br>要清除某个作业,首先要执行at -l命oQ以获取相应的作业标识,然后对该作业标识使用at -r 命oQ清除该作业?/p> <p>$ at -l<br>1       2004-11-02 10:40 a sam<br>3       2004-11-02 15:00 a sam<br>4       2004-11-01 19:07 a sam<br>$at -r 3<br>$at -l<br>1       2004-11-02 10:40 a sam<br>4       2004-11-01 19:07 a sam</p> <p>有些pȝ使用at-r [job no]命o清除作业?br>&命o<br>当在前台q行某个作业Ӟl端被该作业占据Q而在后台q行作业Ӟ它不会占据终端。可以?amp;命o把作业放到后台执行?/p> <p>该命令的一般Ş式ؓQ?br>命o&</p> <p>在后台运行作业时要当心:需要用户交互的命o不要攑֜后台执行Q因样你的机器就会在那里?c)?br>不过Q作业在后台q行一样会结果输出到屏幕上,q扰你的工作。如果放在后台运行的作业会生大量的输出Q最好用下面的Ҏ(gu)把它的输出重定向到某个文件中Q?/p> <p>command >out.file 2>&1 &</p> <p>在上面的例子中,2>&1表示所有的标准输出和错误输出都被重定向到一个叫做out.file 的文件中?br>当你成功地提交进E以后,׃昄Z个进E号Q可以用它来监控该进E,或杀d?br>关于>&2?>&1{重定向的详l解释! <br><a >http://bbs.chinaunix.net/forum/viewtopic.php?t=16361</a></p> <p>例一Q?br>查找名ؓ“httpd.conf”的文Ӟq把所有标准输出和错误输出重定向到f i n d . d t的文件中Q?/p> <p># find /etc/httpd/ -name "httpd.conf" -print >find.dt 2>&1 &<br>[2] 7832<br>[1]   Done                    find /etc/ -name "httpd.conf" -print >find.dt 2>&1 &</p> <p>成功提交该命令之后,pȝl出了它的进E号7832?/p> <p># cat find.dt<br>/etc/httpd/conf/httpd.conf<br>[2]+ Done                    find /etc/httpd/ -name "httpd.conf" -print >find.dt 2>&1 &</p> <p>查看find.dt,可以看到执行l果<br>例二Q?br>在后台执行脚本,如:有一个叫psl的脚?br>$ps psl &<br>[7878]<br>用ps命o查看q程<br>用提交命令时所得到的进E号来监控它的运行。用p s命o和g r e p命o列出q个q程Q?/p> <p># ps -x |grep 7832<br>7868 pts/0    S      0:00 grep 7832</p> <p>如果pȝ不支持ps x命oQ可以用Q?/p> <p># ps -ef |grep 7832<br>root      7866 7790 0 23:40 pts/0    00:00:00 grep 7832</p> <p>在用p s命o列出q程Ӟ它无法确定该q程是运行在前台q是后台?br>杀d台进E?br>杀d台进E可以用k i l l命o。当一个进E被攑ֈ后台q行Ӟ s h e l l会给Z个进E号Q我们可以根据这个进E号Q用k i l l命o杀死该q程。该命o的基本Ş式ؓQ?/p> <p>kill -signal [process_number]</p> <p>现在暂且不要考虑其中的各U不同信受?br>在杀q程的时候,执行下面的命?你的q程号可能会不同)q按回R键。系l将会给出相应的信息告诉用户q程已经被杀歅R?/p> <p>$kill 7832</p> <p>如果pȝ没有l出M信息Q告诉你q程已经被杀死,那么不妨{一会儿Q也许系l正在杀该进E,如果q没有回应,再执行另外一个k i l l命oQ这ơ带上一个信号选项Q?/p> <p>$kill - 9 7868</p> <p>如果用上q方法提交了一个后台进E,那么在退出时该进E将会被l止。ؓ了后台q程能够在退出后l箋q行Q可以用n o h u p命o?br>nohug命o<br>如果你正在运行一个进E,而且你觉得在退出帐h该进E还不会l束Q那么可以用n o h u p命o。该命o可以在你退出帐户之后l运行相应的q程。N o h u p是不挂L意? n ohang up)?br>该命令的一般Ş式ؓQ?/p> <p>nohup command &</p> <p>使用nohup命o提交作业<br>如果使用n o h u p命o提交作业Q那么在~省情况下该作业的所有输出都被重定向C个名为n o h u p . o u t的文件中Q除非另外指定了输出文gQ?/p> <p>nohup command > myout.file 2>&1</p> <p>在上面的例子中,输出被重定向到m y o u t . f i l e文g中?/p> <p>让我们来看一个例子,验证一下在退出帐户后相应的作业是否能够l运行。我们先提交一个名为p s 1的日志清除进E:</p> <p>$nobup ps1</p> <p>现在退s h e l lQ再重新dQ然后执行下面的命oQ?/p> <p>$ps x |grep ps1</p> <p>我们看到Q该脚本q在q行。如果系l不支持ps x命oQ用ps -ef|grep ps1命o?/p> <p>一ơ提交几个作?br>如果希望一ơ提交几个命令,最好能够把它们写入C个s h e l l脚本文g中,q用n o h u p命o来执行它?br>例如Q下面的所有命令都用管道符可接在一P我们可以把这些命令存入一个文Ӟq该文件可执行?/p> <p>cat /home/accounts/qrt_0499 | /apps/bin/trials.awk | sort | lp<br>$cat > quarterend<br>cat /home/accounts/qtr_0499 | /apps/bin/trials.awk | sort | lp<br><ctrl-D></p> <p>现在让它可执行:</p> <p>$ chmod 744 quarterend</p> <p>我们q将该脚本的所有输出都重定向到一个名为q t r. o u t的文件中?/p> <p>nobup ./quarterend > qtr.out 2></p> <p>后台q行作业?<br>有时我们必须要对大文件进行大量更改,或执行一些复杂的查找Q这些工作最好能够在pȝ负荷较低时执行?br>创徏一个定时清理日志文件或完成其他Ҏ(gu)工作的脚本,q样只要提交一ơ,可以每天晚上运行,而且无需你干预,只要看看相应的脚本日志就可以了。C r o n和其他工具可以ɾpȝ理d变得更轻松?/p> <p>*Q?Q[...]Q[!...]{?/p> <p>" 匚w文g名中的Q何字W串?br>" 匚w文g名中的单个字W?br>" 匚w文g名中的字母或数字字符?/p> <p>下面是q些Ҏ(gu)字符Q?/p> <p>* 匚w文g名中的Q何字W串Q包括空字符丌Ӏ?br>Q?匚w文g名中的Q何单个字W?br>[...] 匚w[ ]中所包含的Q何字W?br>[!...] 匚w[ ]中非感叹P之后的字W?/p> <p>当s h e l l遇到上述字符Ӟ׃把它们当作特D字W,而不是文件名中的普通字W,q样用户可以用它们来匹配相应的文g名?br>1?Q用星?可以匚w文g名中的Q何字W串。就不用多说了,和win下差不多<br>2、?Q用可以匹配文件名中的M单个字符。和win差不?br>3、[]Q用[ . . . ]可以用来匚wҎ(gu)号[ ]中的M字符。可以用一个横?来连接两个字母或数字Q以此来表示一个范围?br>1)列出以i或o开头的文g名:</p> <p>#ls [io]*</p> <p>2)列出log.开头、后面跟随一个数字、然后可以是L字符串的文g名:</p> <p>#ls log.[0-9]*</p> <p>3)与例二相反,列出log.开头、后面不跟随一个数字、然后可以是L字符串的文g?/p> <p>#ls log.[!0-9]*</p> <p>4)列出所有以LPS开头、中间可以是M两个字符Q最后以1l尾的文件名Q?/p> <p>#ls LPS??1</p> <p>5)列出所有以大写字母开头的文g名:</p> <p>$ ls [A-Z]*</p> <p>6)列出所有以写字母开头的文g名:</p> <p>$ ls [a-z]*</p> <p>7)Z列出所有以数字开头的文g名:</p> <p>$ ls [0-9]*</p> <p>8)列出所有以. 开头的文g名(隐含文gQ例? p r o f i l e? r h o s t s? h i s t o r y{):</p> <p>$ ls .*</p> <p>1、我用root用户按照搂住所说的Ҏ(gu)Q怎么不好使啊Q?br>root用户不用讄环境变量吧!<br>/etc/crontab所d的内容如下:<br>10 10 * * * /var/ceshi/test.sh<br>12 10 * * * /var/ceshi/test.sh >>/temp/test.txt<br>test.sh 的内容如下:<br>Q!bin/bash<br>fuser -k /var/ceshi/test.class<br>是强行关掉一个javaE序<br>2、另外我?br>crontab -e的方法也试过是不好?/p> <p>10 10 * * * sh /var/ceshi/tt.sh >>/temp/test.txt<br>12 10 * * * sh /var/ceshi/test.sh >>/temp/test.txt<br>echo nihao<br>tt.sh 中是启动javaE序的,能够启动Q但test.class 关不掉,且有nihao输出?br>3、在l端直接q行test.shE序则好使,可以xtest.classE序<br>不知道是哪来Z问题Q?nbsp;   希望高手帮帮忙!<br>又没有其它的Ҏ(gu)来关掉一个javaE序Q?Q?/p><img src ="http://www.shnenglu.com/mydriverc/aggbug/99526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mydriverc/" target="_blank">旅?/a> 2009-10-26 23:16 <a href="http://www.shnenglu.com/mydriverc/archive/2009/10/26/99526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用nohup来保障后台运行的E序不因l端shell退终?http://www.shnenglu.com/mydriverc/archive/2009/10/26/99525.html旅?/dc:creator>旅?/author>Mon, 26 Oct 2009 15:09:00 GMThttp://www.shnenglu.com/mydriverc/archive/2009/10/26/99525.htmlhttp://www.shnenglu.com/mydriverc/comments/99525.htmlhttp://www.shnenglu.com/mydriverc/archive/2009/10/26/99525.html#Feedback0http://www.shnenglu.com/mydriverc/comments/commentRss/99525.htmlhttp://www.shnenglu.com/mydriverc/services/trackbacks/99525.html单而有用的nohup命o在UNIX/LINUX中,普通进E用&W号攑ֈ后台q行Q如果启动该E序的控制台l(f)ogoutQ则该进E随即终止?/h3>


要实现守护进E,一U方法是按守护进E的规则ȝE(本站有文章介l过Q,比较ȝQ另一U方法是仍然用普通方法编E,然后用nohup命o启动E序Q?
nohup <E序?gt; &
则控制台l(f)ogout后,q程仍然l箋q行Qv到守护进E的作用Q虽然它不是严格意义上的守护q程Q?br>使用nohup命o后,原程序的的标准输自动改向到当前目录下的nohup.out文gQvClog的作用,实现了完整的守护q程功能?/p>

ygwu @ 2005q?4?8?上午10:03

For exampleQ?br>如何q程启动WebLogic服务?

用telnetq程控制服务器,q程启动WEBLOGIC服务Q启动后关闭telnetQWebLogic服务也跟着停止Q这是因Z用telnet启动的进E会随着telnetq程的关闭而关闭。所以我们可以用一些UNIX下的命o来做C关闭?/p>

使用如下命oQ?/p>

nohup startWeblogic.sh&

如果惌监控标准输出可以使用Q?/p>

tail -f nohup.out

q里有一个要L的地?  是nohup 只能工作?sh的环境下 ,csh, bash 都不?我的freebsd 使用?csh , %提示W的,不v作用,

比如先输入sh 回R, 出现$提示W后,再用nohup command & 可以了.



]]>
þþһƷ99þþƷ66| þ޹vwww | ھƷ˾þþþAVӰԺ| þþþƷ2019ѹۿ| 99þþƷһ | ĻƷѾþþ| þþƷŷպ| þþƷަvDz| þ91Ʒþ91ۺ| ĻþþƷ| þþƷAV| ձƷþþþþþþ| պ뾫Ʒþһ | þù׾Ʒҹ| þþƵ| 99Ʒ˾þþô߽| þþþþþþƷŮ99 | 99þѹƷ| ɫʹþۺ| þѸƵ| þۺɫˮ99ž| þùƷƷ| Ʒþþþþþþ| þҹ1000ϼ| ƷþþĻ | þþƷɫ鶹| þþþAVȥ| þþƷ˹ҹ| ٸþĻһ| þþþƷþþþӰԺ| þþþ?V| ߳߳þþ91| www.þ.com| 996þùƷ߹ۿ| þۺɫ| ƷþþþþĻ| ɫۺϾþ| ɫþþþۺ| þҹɫƷwww| ŷͽxxxxѿþþ| þþþƷþþþɫӰ|