终于找到vsftpd的配置文章,呵呵

linux 银河麒麟V10 VSFTPD服务端安装、配置的图文教程 银河麒麟V10,FTP,vsftpd,找我就对了。 阅读详情
RedHat带了wu-ftpd和vsftp两套ftp系统.我也使第一次接触vsftp,根据man说vsftp的含义就是Very Security Ftp的意思,至于是否真的是非常安全,我不敢说.毕竟以前没有用过.因为应一个朋友的要求,所以简单的看了看vsftp的说明,发现还是很简单的,下面就简要的说一下它的配置方法. 

1.相关配置文件 
/etc目录下的vsftpd.conf,vsftpd.ftpuser,vsftpd.user_list,/etc/xinetd.d/vsftpd 
2.配置vsftp 
主要是修改/etc/vsftpd.conf就可以了,相关参数如下: 

anonymous_enable=YES 是否允许匿名ftp,如否则选择NO 

local_enable=YES 是否允许本地用户登录 

local_umask=022 默认的umask码 

anon_upload_enable=YES 是否允许匿名ftp用户访问 

anon_upload_enable=YES 是否允许匿名上传文件 

anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的权利 

dirmessage_enable=YES 是否显示目录说明文件,默认是YES但需要收工创建.message文件 

xferlog_enable=YES 是否记录ftp传输过程 

connect_from_port_20=YES 是否确信端口传输来自20(ftp-data) 

chown_upload=YES 
chown_username=username 是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成root属主 

xferlog_file=/var/log/vsftpd.log ftp传输日志的路径和名字默认是/var/log/vsftpd.log 

xferlog_std_format=YES 是否使用标准的ftp xferlog模式 

idle_session_timeout=600 设置默认的断开不活跃session的时间 

data_connection_timeout=120 设置数据传输超时时间 

nopriv_user=ftpsecure 运行vsftpd需要的非特权系统用户默认是nobody 

async_abor_enable=YES 是否允许运行特殊的ftp命令async ABOR.这里我翻译的不爽,原文如下: 
When enabled, a special FTP command known as "async ABOR" will be enabled. Only ill advised FTP clients will use this feature.Addtionally, this feature is awkward to handle, so it is dis-abled by default. Unfortunately, some FTP clients will hang when cancelling a transfer unless this feature is available, so you may wish to enable it. 

ascii_upload_enable=YES 
ascii_download_enable=YES 是否使用ascii码方式上传和下载文件 

ftpd_banner=Welcome to chenlf FTP service. 定制欢迎信息 

deny_email_enable=YES 
banned_email_file=/etc/vsftpd.banned_emails 是否允许禁止匿名用户使用某些邮件地址,如果是输入禁止的邮件地址的路径和文件名 

chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd.chroot_list 是否将系统用户限止在自己的home目录下,如果选择了yes那么chroot_list_file=/etc/vsftpd.chroot_list中列出的是不chroot的用户的列表 

max_clients=Number 如果以standalone模式起动,那么只有$Number个用户可以连接,其他的用户将得到错误信息,默认是0不限止 

message_file 设置访问一个目录时获得的目录信息文件的文件名,默认是.message 

没发现有限止带宽的地方,如果谁知道请告诉我,详细的帮助说明请参考man vsftpd.conf 

3 配置实例 
以下是我的配置文件.允许匿名FTP,允许上传,chroot用户目录,上传文件属主改为root 

anonymous_enable=YES 
local_enable=YES 
write_enable=YES 
local_umask=022 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES 
dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES 
chown_uploads=YES 
chown_username=root 
xferlog_file=/var/log/vsftpd.log 
xferlog_std_format=YES 
pam_service_name=vsftpd 
chroot_local_user=YES 

4 起动服务 

vsftpd和wu-ftpd不能同时起动,所以修改/etc/xinetd.d/wu-ftpd将disable设置为yes,然后修改/etc/vsftpd将disable设置为NO 
执行/etc/initd.d/xinetd restart 
就可以了.好了,现在我们就建了一个所谓的非常安全的ftp服务器了,大家试试吧 

------------------------------------------------------
3.2 VSFTP—安全与效能兼备的ftp 服务器 
3.2.1 VSFTP 概述 
FTP,file transfer protocol,这是档案传输的通讯协议,也是一般最常用来传送档案的方式。读者在使用RedHat9 的时候,可能会感受到ftp server 有一些改变:第一,就是ftp server 只剩下vsftp,原有的wuftp 等都没放入﹔第二,就是vsftp 从XINETD 中独立出来,并将设定档从/etc/vsftpd.conf 之中移到/etc/vsftpd/vsftpd.conf。 
为什么做这样的改变?可以想见的是vsftp 已有独立运作的能力,不需要XINETD 来做更进一步的管控,并且类似sendmail、httpd、ssh、samba 等,将设定文件的放入/etc 下独立的目录。 
FTP 分为两类,一种为PORT FTP,也就是一般的FTP﹔另一类是PASVFTP,分述如下: PORT FTP 
这是一般形式的FTP,首先会建立控制频道,默认值是port 21,也就是跟 
port 21 建立联机,并透过此联机下达指令。第二,由FTP server 端会建立数据 
传输频道,默认值为20,也就是跟port 20 建立联机,并透过port 20 作数据的 
传输。 
PASV FTP 
跟PORT FTP 类似,首先会建立控制频道,默认值是port 21,也就是跟 
port 21 建立联机,并透过此联机下达指令。第二,会由client 端做出数据传输 
的请求,包括数据传输port 的数字。 
这两者的差异为何?PORT FTP 当中的数据传输port 是由FTP server 指定, 
而PASV FTP 的数据传输port 是由FTP client 决定。通常我们使用PASV FTP, 
是在有防火墙的环境之下,透过client 与server 的沟通,决定数据传输的port。 
3.2.2 范例 
3.2.1. 直接启动VSFTP 服务 
这个范例是套用RedHat 的预设范例,直接启动vsftp。 
[root@relay vsftpd]# /sbin/service vsftpd start 
Starting vsftpd for vsftpd: OK ] 
3.2.2. 更换port 提供服务:将预设的port 21 更换为2121 
为了安全,或是以port 来区隔不同的ftp 服务,我们可能会将ftp port 改为 
21 之外的port,那么,可参考以下步骤。 
Step1. 修改/etc/vsftpd/vsftpd.conf 
新增底下一行 
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/username,若是我们不希望使用者在ftp 时能够 
切换到上一层目录/home,则可参考以下步骤。 
Step1. 修改/etc/vsftpd/vsftpd.conf 
将底下三行 
#chroot_list_enable=YES 
# (default follows) 
#chroot_list_file=/etc/vsftpd.chroot_list 
改为 
chroot_list_enable=YES 
# (default follows) 
chroot_list_file=/etc/vsftpd/chroot_list 
Step2. 新增一个档案: /etc/vsftpd/chroot_list 
内容增加两行: 
peter 
john 
Step3. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
若是peter 欲切换到根目录以外的目录,则会出现以下警告: 
ftp> cd /home 
550 Failed to change directory. 
3.2.4. 取消anonymous 登入 
若是读者的主机不希望使用者匿名登入,则可参考以下步骤。 
Step1. 修改/etc/vsftpd/vsftpd.conf 
将 
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. 安排欢迎话语 
若是我们希望使用者在登入时,能够看到欢迎话语,可能包括对该主机的 
说明,或是目录的介绍,可参考以下步骤。 
首先确定在/etc/vsftpd/vsftpd.conf 当中是否有底下这一行 
dirmessage_enable=YES 
RedHat9 的默认值是有上面这行的。 
接着,在各目录之中,新增名为.message 的档案,再这边假设有一个使用 
者test1,且此使用者的根目录下有个目录名为abc,那首先我们在/home/test1 
之下新增.message,内容如下: 
Hello~ Welcome to the home directory 
This is for test only... 
接着,在/home/test1/abc 的目录下新增.message,内容如下: 
Welcome to abc's directory 
This is subdir... 
那么,当使用者test1 登入时,会看到以下讯息: 
230- Hello~ Welcome to the home directory 
230- 
230- This is for test only... 
230- 
若是切换到abc 的目录,则会出现以下讯息: 
250- Welcome to abc's directory 
250- 
250- This is subdir ... 
3.2.6. 对于每一个联机,以独立的process 来运作 
一般启动vsftp 时,我们只会看到一个名为vsftpd 的process 在运作,但若 
是读者希望每一个联机,都能以独立的process 来呈现,则可执行以下步骤。 
Step1. 修改/etc/vsftpd/vsftpd.conf 
新增底下一行 
setproctitle_enable=YES 
Step2. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
使用ps -ef 的指令,可以看告不同使用者联机的情形,如下图所示: 
[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. 限制传输档案的速度:本机的使用者最高速度为200KBytes/s,匿名登入 
者所能使用的最高速度为50KBytes/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 ] 
在这边速度的单位为Bytes/s,其中anon_max_rate 所限制的是匿名登入的 
使用者,而local_max_rate 所限制的是本机的使用者。VSFTPD 对于速度的限 
制,范围大概在80%到120%之间,也就是我们限制最高速度为100KBytes/s, 
但实际的速度可能在80KBytes/s 到120KBytes/s 之间,当然,若是频宽不足 
时,数值会低于此限制。 
3.2.8. 针对不同的使用者限制不同的速度:假设test1 所能使用的最高速度为 
250KBytes/s,test2 所能使用的最高速度为500KBytes/s。 
Step1. 修改/etc/vsftpd/vsftpd.conf 
新增底下一行 
user_config_dir=/etc/vsftpd/userconf 
Step2. 新增一个目录:/etc/vsftpd/userconf 
mkdir /etc/vsftpd/userconf 
Step3. 在/etc/vsftpd/userconf 之下新增一个名为test1 的档案 
内容增加一行: 
local_max_rate=250000 
Step4. 在/etc/vsftpd/userconf 之下新增一个名为test2 的档案 
内容增加一行: 
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 server,使用PORT FTP mode:预设的ftp 
port:21 以及ftp data port:20 
启动VSFTPD 之后执行以下两行指令,只允许port 21 以及port 20 开放, 
其它关闭。 
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 server,使用PORT FTP mode:ftp port:2121 
以及ftp data port:2020 
Step1. 执行以下两行指令,只允许port 2121 以及port 2020 开放,其它关闭。 
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 ] 
在这边要注意,8、9 两个例子中,ftp client(如cuteftp)的联机方式不能 
够选择passive mode,否则无法建立数据的联机。也就是读者可以连上ftp 
server,但是执行ls、get 等等的指令时,便无法运作。 
3.2.10. 建置一个防火墙下的ftp server,使用PASS FTP mode:ftp port:2121 
以及ftp data port 从9981 到9986。 
Step1. 执行以下两行指令,只允许port 2121 以及port 9981-9990 开放,其它关 
闭。 
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 ] 
在这边要注意,在10 这个例子中,ftp client(如cuteftp)的联机方式必须 
选择passive mode,否则无法建立数据的联机。也就是读者可以连上ftp 
server,但是执行ls,get 等等的指令时,便无法运作。 
8.2.11. 将vsftpd 与TCP_wrapper 结合 
若是读者希望直接在/etc/hosts.allow 之中定义允许或是拒绝的来源地址, 
可执行以下步骤。这是简易的防火墙设定。 
Step1. 确定/etc/vsftpd/vsftpd.conf 之中tcp_wrappers 的设定为YES,如下图所 
示: 
tcp_wrappers=YES 
这是RedHat9 的默认值,基本上不需修改。 
Step2. 重新启动vsftpd 
[root@home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
Step3. 设定/etc/hosts.allow,譬如提供111.22.33.4 以及10.1.1.1 到10.1.1.254 连 
线,则可做下图之设定: 
vsftpd : 111.22.33.4 10.1.1. : allow 
ALL : ALL : DENY 
8.2.12. 将vsftpd 并入XINETD 
若是读者希望将vsftpd 并入XINETD 之中,也就是7.x 版的预设设定,那 
么读者可以执行以下步骤。 
Step1. 修改/etc/vsftpd/vsftpd.conf 
将 
listen=YES 
改为 
listen=NO 
Step2. 新增一个档案: /etc/xinetd.d/vsftpd 
内容如下: 
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 设定档说明 
在范例中,有些省略的设定可以在这边找到,譬如联机的总数、同一个位 
址的联机数、显示档案拥有者的名称等等,希望读者细读后,可以做出最适合 
自己的设定。 
格式 
vsftpd.conf 的内容非常单纯,每一行即为一项设定。若是空白行或是开头为#的一行, 
将会被忽略。内容的格式只有一种,如下所示 
option=value 
要注意的是,等号两边不能加空白,不然是不正确的设定。 
===ascii 设定===================== 
ascii_download_enable 
管控是否可用ASCII 模式下载。默认值为NO。 
ascii_upload_enable 
管控是否可用ASCII 模式上传。默认值为NO。 
===个别使用者设定=================== 
chroot_list_enable 
如果启动这项功能,则所有的本机使用者登入均可进到根目录之外的数据夹,除了列 
在/etc/vsftpd.chroot_list 之中的使用者之外。默认值为NO。 
userlist_enable 
用法:YES/NO 
若是启动此功能,则会读取/etc/vsftpd.user_list 当中的使用者名称。此项功能可以在询 
问密码前就出现失败讯息,而不需要检验密码的程序。默认值为关闭。 
userlist_deny 
用法:YES/NO 
这个选项只有在userlist_enable 启动时才会被检验。如果将这个选项设为YES,则在 
/etc/vsftpd.user_list 中的使用者将无法登入﹔ 若设为NO , 则只有在 
/etc/vsftpd.user_list 中的使用者才能登入。而且此项功能可以在询问密码前就出现错误 
讯息,而不需要检验密码的程序。 
user_config_dir 
定义个别使用者设定文件所在的目录,例如定义user_config_dir=/etc/vsftpd/userconf, 
且主机上有使用者test1,test2,那我们可以在user_config_dir 的目录新增文件名为 
test1 以及test2。若是test1 登入,则会读取user_config_dir 下的test1 这个档案内的设 
定。默认值为无。 
===欢迎语设定===================== 
dirmessage_enable 
如果启动这个选项,使用者第一次进入一个目录时,会检查该目录下是否有.message 
这个档案,若是有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对 
该目录的说明。默认值为开启。 
banner_file 
当使用者登入时,会显示此设定所在的档案内容,通常为欢迎话语或是说明。默认值 
为无。 
ftpd_banner 
这边可定义欢迎话语的字符串,相较于banner_file 是档案的形式,而ftpd_banner 是字 
串的格式。预设为无。 
===特殊安全设定==================== 
chroot_local_user 
如果设定为YES,那么所有的本机的使用者都可以切换到根目录以外的数据夹。预设 
值为NO。 
hide_ids 
如果启动这项功能,所有档案的拥有者与群组都为ftp,也就是使用者登入使用ls -al 
之类的指令,所看到的档案拥有者跟群组均为ftp。默认值为关闭。 
ls_recurse_enable 
若是启动此功能,则允许登入者使用ls -R 这个指令。默认值为NO。 
write_enable 
用法:YES/NO 
这个选项可以控制FTP 的指令是否允许更改file system,譬如STOR、DELE、 
RNFR、RNTO、MKD、RMD、APPE 以及SITE。预设是关闭。 
setproctitle_enable 
用法:YES/NO 
启动这项功能,vsftpd 会将所有联机的状况已不同的process 呈现出来,换句话说,使 
用ps -ef 这类的指令就可以看到联机的状态。默认值为关闭。 
tcp_wrappers 
用法:YES/NO 
如果启动,则会将vsftpd 与tcp wrapper 结合,也就是可以在/etc/hosts.allow 与 
/etc/hosts.deny 中定义可联机或是拒绝的来源地址。 
pam_service_name 
这边定义PAM 所使用的名称,预设为vsftpd。 
secure_chroot_dir 
这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd 不需 
要file system 的权限时,就会将使用者限制在此数据夹中。默认值为/usr/share/empty 
===纪录文件设定===================== 
xferlog_enable 
用法:YES/NO 
如果启动,上传与下载的信息将被完整纪录在底下xferlog_file 所定义的档案中。预设 
为开启。 
xferlog_file 
这个选项可设定纪录文件所在的位置,默认值为/var/log/vsftpd.log。 
xferlog_std_format 
如果启动,则纪录文件将会写为xferlog 的标准格式,如同wu-ftpd 一般。默认值为关 
闭。 
===逾时设定====================== 
accept_timeout 
接受建立联机的逾时设定,单位为秒。默认值为60。 
connect_timeout 
响应PORT 方式的数据联机的逾时设定,单位为秒。默认值为60。 
data_connection_timeout 
建立数据联机的逾时设定。默认值为300 秒。 
idle_session_timeout 
发呆的逾时设定,若是超出这时间没有数据的传送或是指令的输入,则会强迫断线, 
单位为秒。默认值为300。 
===速率限制====================== 
anon_max_rate 
匿名登入所能使用的最大传输速度,单位为每秒多少bytes,0 表示不限速度。默认值 
为0。 
local_max_rate 
本机使用者所能使用的最大传输速度,单位为每秒多少bytes,0 表示不限速度。预设 
值为0。 
===新增档案权限设定================== 
anon_umask 
匿名登入者新增档案时的umask 数值。默认值为077。 
file_open_mode 
上传档案的权限,与chmod 所使用的数值相同。默认值为0666。 
local_umask 
本机登入者新增档案时的umask 数值。默认值为077。 
===port 设定====================== 
connect_from_port_20 
用法:YES/NO 
若设为YES,则强迫ftp-data 的数据传送使用port 20。默认值为YES。 
ftp_data_port 
设定ftp 数据联机所使用的port。默认值为20。 
listen_port 
FTP server 所使用的port。默认值为21。 
pasv_max_port 
建立资料联机所可以使用port 范围的上界,0 表示任意。默认值为0。 
pasv_min_port 
建立资料联机所可以使用port 范围的下界,0 表示任意。默认值为0。 
===其它======================== 
anon_root 
使用匿名登入时,所登入的目录。默认值为无。 
local_enable 
用法:YES/NO 
启动此功能则允许本机使用者登入。默认值为YES。 
local_root 
本机使用者登入时,将被更换到定义的目录下。默认值为无。 
text_userdb_names 
用法:YES/NO 
当使用者登入后使用ls -al 之类的指令查询该档案的管理权时,预设会出现拥有者的 
UID,而不是该档案拥有者的名称。若是希望出现拥有者的名称,则将此功能开启。 
默认值为NO。 
pasv_enable 
若是设为NO,则不允许使用PASV 的模式建立数据的联机。默认值为开启。 
===更换档案所有权=================== 
chown_uploads 
用法:YES/NO 
若是启动,所有匿名上传数据的拥有者将被更换为chown_username 当中所设定的使 
用者。这样的选项对于安全及管理,是很有用的。默认值为NO。 
chown_username 
这里可以定义当匿名登入者上传档案时,该档案的拥有者将被置换的使用者名称。预 
设值为root。 
===guest 设定===================== 
guest_enable 
用法:YES/NO 
若是启动这项功能,所有的非匿名登入者都视为guest。默认值为关闭。 
guest_username 
这里将定义guest 的使用者名称。默认值为ftp。 
===anonymous 设定================== 
anonymous_enable 
用法:YES/NO 
管控使否允许匿名登入,YES 为允许匿名登入,NO 为不允许。默认值为YES。 
no_anon_password 
若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO。 
anon_mkdir_write_enable 
用法:YES/NO 
如果设为YES,匿名登入者会被允许新增目录,当然,匿名使用者必须要有对上层目 
录的写入权。默认值为NO。 
anon_other_write_enable 
用法:YES/NO 
如果设为YES,匿名登入者会被允许更多于上传与建立目录之外的权限,譬如删除或 
是更名。默认值为NO。 
anon_upload_enable 
用法:YES/NO 
如果设为YES,匿名登入者会被允许上传目录的权限,当然,匿名使用者必须要有对 
上层目录的写入权。默认值为NO。 
anon_world_readable_only 
用法:YES/NO 
如果设为YES,匿名登入者会被允许下载可阅读的档案。默认值为YES。 
ftp_username 
定义匿名登入的使用者名称。默认值为ftp。 
deny_email_enable 
若是启动这项功能,则必须提供一个档案/etc/vsftpd.banner_emails,内容为email 
address。若是使用匿名登入,则会要求输入email address,若输入的email address 在 
此档案内,则不允许联机。默认值为NO。 
===Standalone 选项================== 
listen 
用法:YES/NO 
若是启动,则vsftpd 将会以独立运作的方式执行,若是vsftpd 独立执行,如RedHat9 
的默认值,则必须启动﹔若是vsftpd 包含在xinetd 之中,则必须关闭此功能,如 
RedHat8。在RedHat9 的默认值为YES。 
listen_address 
若是vsftpd 使用standalone 的模式,可使用这个参数定义使用哪个IP address 提供这 
项服务,若是主机上只有定义一个IP address,则此选项不需使用,若是有多个IP 
address,可定义在哪个IP address 上提供ftp 服务。若是不设定,则所有的IP address 
均会提供此服务。默认值为无。 
max_clients 
若是vsftpd 使用standalone 的模式,可使用这个参数定义最大的总联机数。超过这个 
数目将会拒绝联机,0 表示不限。默认值为0。 
max_per_ip 
若是vsftpd 使用standalone 的模式,可使用这个参数定义每个ip address 所可以联机 
的数目。超过这个数目将会拒绝联机,0 表示不限。默认值为0。 
============================= 
3.2.4 FTP 数字代码的意义 
110 重新启动标记应答。 
120 服务在多久时间内ready。 
125 数据链路埠开启,准备传送。 
150 文件状态正常,开启数据连接端口。 
200 命令执行成功。 
202 命令执行失败。 
211 系统状态或是系统求助响应。 
212 目录的状态。 
213 文件的状态。 
214 求助的讯息。 
215 名称系统类型。 
220 新的联机服务ready。 
221 服务的控制连接埠关闭,可以注销。 
225 数据连结开启,但无传输动作。 
226 关闭数据连接端口,请求的文件操作成功。 
227 进入passive mode。 
230 使用者登入。 
250 请求的文件操作完成。 
257 显示目前的路径名称。 
331 用户名称正确,需要密码。 
332 登入时需要账号信息。 
350 请求的操作需要进一部的命令。 
421 无法提供服务,关闭控制连结。 
425 无法开启数据链路。 
426 关闭联机,终止传输。 
450 请求的操作未执行。 
451 命令终止:有本地的错误。 
452 未执行命令:磁盘空间不足。 
500 格式错误,无法识别命令。 
501 参数语法错误。 
502 命令执行失败。 
503 命令顺序错误。 
504 命令所接的参数不正确。 
530 未登入。 
532 储存文件需要账户登入。 
550 未执行请求的操作。 
551 请求的命令终止,类型未知。 
552 请求的文件终止,储存位溢出。 
553 未执行请求的的命令,名称不正确。
Ubuntu 24.04环境下配置NFS共享和vsftpd服务 本文将详细介绍如何在Ubuntu上安装NFS和VSFTPD服务,并进行相关配置以实现文件共享和FTP访问。 阅读详情

相关推荐

一篇文章了解开源 FTP 服务器 vsftpd

1 背景某客户现场,每天都会批量生成大量 CSV 文件存放到 FTP 系统,这些 CSV 文件需要导入到大数据平台 HIVE 数仓中做后续离线分析,且 HIVE 数仓中的离线分析作业目前是...

明哥的IT随笔 1489

搭建vsftpd服务器中的问题

问题一: 500 OOPS: vsftpd: cannot locate user specified in ‘ftp_username’:ftp 解决办法: 把配置文件里的anonymous的值改为NO,注意:把anonymous行注释掉没用。

qq_43248127的博客 2174

Ubuntu下VSFTPD安装与配置全攻略

在本章节中,我们详细介绍了VSFTPD在Ubuntu系统上的安装过程,并进行了必要的初始化配置。我们学习了如何使用APT进行软件包的安装,手动与开机自启服务的方法,并通过ss命令确认了服务的运行状态。此外,我们也强调了配置文件的备份重要性,并给出了两个初步的配置选项。通过这些步骤,我们已经为深入配置和使用VSFTPD打下了坚实的基础。在下一章节中,我们将深入探讨VSFTPD的配置文件,学习如何对FTP服务器进行安全与性能优化。

weixin_36427956的博客 1250

FTP配置文件详解vsftpd.conf

FTP配置文件详解vsftpd.conf 转载过来做个笔记,原文地址:https://blog.youkuaiyun.com/miss520jenny/article/details/92664533 #vi /etc/vsftpd/vsftpd.conf 1.登录和对匿名用户的设置 write_enable=YES //是否对登录用户开启写权限。属全局性设置。默认NO local_enable=YES //是否允许本地用户登录FTP服务器。默认为NO anonymous_enable=YES //设置是否允许匿名用户

weixin_38797742的博客 1329

大疆mini 3 pro rtmp推流(带屏遥控器不支持)windows

大疆mini 3 pro无人机rtmp推流(带屏遥控器不支持)至windows电脑

xbsigeibwkouvfcj的博客 3429

DeepSeek-V3本地Docker容器化部署

通过以上步骤,你可以在本地上成功通过容器化部署DeepSeek-V3。安装完成后,启动Docker Desktop。如果需要后台运行,可以加上。

u013302168的博客 2121

连接vsftpd报错:500 OOPS: vsftpd: not found: directory given in ‘secure_chroot_dir‘:/var/run/vsftpd/empty

140的容器里上就没找到这个目录,尽管这个vsftpd是部署在140的容器里的,但是它的启动方式为。我在139机器上是能找到这个目录的,139机器是使用。目录未能创建是否跟此有关系。于是,我在140容器里使用。

Dontla的博客 1432

KEITHLEY 2182A + 6220/6221 系列测试系统软件

6221型与2182A型相结合,是业界最完整的差分电导测量解决方案

业余程序员小徐的博客 2985

vsftpd的使用

initrd文件系统在使用vsftpd过程中总结需要注意的问题,已备参考。 这里要涉及几个文件,vsftpd,vsftpd.conf,passwd,vsftpd.user_list,libcap.so.1.10。 下面依次介绍步骤: 1.把vsftpd拷贝到/usr/sbin 或/usr/bin中,vsftpd是可执行程序 2.拷贝vsftpd.conf 和 vsftpd.

好久都没有更新博客喽,工作原因只能总结在内部机上:-( 5389

利用绝对式编码器实现电机无限旋转的配置与优化

本文详细解析了如何利用绝对式编码器实现电机的无限旋转功能。通过切换驱动器编码器工作模式、精确计算逻辑位置范围等关键配置步骤,解决了传统方案在多圈计数溢出时的定位难题。该方案无需硬件改造,适用于大型回转台、连续供料系统等需要大范围连续绝对定位的自动化场景。

weixin_29184371的博客 239

飞腾X100芯片GPU状态查询

本文档对在linux系统下查看X100芯片GPU状态信息进行说明,可以帮助大家了解芯片的实时工作状态。

乌拉大喵喵 2811

ubuntu 9.10 手动安装vsftpd的困惑

可能由于UBUNTU的版本太旧了,ubuntu不支持维护了,在线下载安装出现不成功。 root下命令:apt-get install vsftpd 正在读取软件包列表... 完成 正在分析软件包的依赖关系树       正在读取状态信息... 完成       E: 无法找到软件包 vsftpd 还是想办法手动安装吧,先百度下载个vsftpd。     移植vsftpd

从ok6410开始 3626

PCIe-Orders set Blocks之symbol对齐

有序集的使用场合很多,如在链路link阶段,进入polling后,便开始有序集的发送。一个 Ordered Set Block 包含一个同步头,后跟一个有序集。多通道链路的所有 Lane 必须同时传输相同的有序集,而且有序集的第一个符号定义了有序集的类型。但在PCIE中,8GT/s及以上的速率,采用的是128b/130b编码。128-bit是想要传输的payload,实际会传输130-bit,多出来的2-bit就是sync header。Block有两种,通过Sync header区分:10b:表示data

weixin_44700185的博客 813

vsftpd配置

FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。

CITYDATA 1182

OpenClaw实战:拒绝复制粘贴,用 xlsx 技能打通“带公式模板”的月报自动化

本文详解了如何利用 OpenClaw 框架搭载的 xlsx skill,解决 AI 自动化处理“带复杂公式与格式”Excel 月报时极易翻车的业务痛点。针对传统大模型粗暴写入导致模板报废的问题,OpenClaw 创新采用“双核微创”工作流:首先利用 pandas 高效清洗并聚合海量原始明细数据,随后切换至 openpyxl 将计算结果精准注入目标模板,完美保留原有的底色、边框与跨表动态公式。

我有一个梦想 150

PyQt(Python+Qt)学习随笔:PyQt界面派生类构造方法中super方法的使用

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在《第15.7节 PyQt入门学习:PyQt5应用构建详细过程介绍》和订阅专栏《第二章、PyQt5应用构建详细过程介绍》中,老猿介绍界面派生类的构造方法如下: class MediaPlayerWin(QtWidgets.QWidget,Ui_UI_PlayerWin): def __i...

老猿Python 2711

linux + vsftpd 配置全说明

VSFTP 服务器 文章目录VSFTP 服务器摘要为什么选择VSFTPD?VSFTPD介绍VSFTPD 的特点VSFTP 功能简介VSFTPD 工作模式VSFTP 传输模式FTP安全问题与解决方法VSFTPD安装VSFTP 配置默认配置配置文件介绍匿名用户配置本地用户配置虚拟用户设置设置用户是否允许切换目录数据传输模式设置访问控制设置访问速率设置超时事件设置日志设置定义用户配置文件FTP工作方式与端口设置连接属性设置其他设置欢迎语及提示语FTP连接响应代码说明参考 摘要 终端设备运行过程中产生较多生产日志及

Neo_Echo的博客 1393

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Linux vsftpd 服务部署与配置

FTP 是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用 20、21 号端口,其中端口20 用于进行数据传输,端口21 用于接受客户端发出的相关FTP 命令与参数

机智的三三的博客 2806

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Linux vsFTPd服务详解——vsFTPd基础知识

今天继续给大家介绍Linux运维相关内容,本文主要内容是Linux的vsFTPd服务。 一、vsFTPd服务简介与安装 FTP服务,即File Transfer Protocol、文件传输服务,用于在互联网上提供文件存储和访问服务。有关FTP的原理请参见以下文章:FTP协议详解。该文章写的很详细,在这里就不过多介绍乐。vsFTPd是基于GPL发布的类Unix系统上使用的FTP服务服务端软件,即very security FTP。vsFTPd也是基于FTP服务架构的软件,采用C/S模式,是一个安全高效稳定的服

永远是少年 5088

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

关于Linux环境下安装配置vsftpd服务全攻略(踩坑)

前言本篇文章就记录一下我在Linux安装配置的vsftpd服务的过程,踩过的坑以及ftp相关的内容!FTP传输模式文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式。主被动模式均是以FTP服务器端为参照。 FTP主

苦逼的程序猿☺ 5万+

Centos配置VSFTPD

centos配置lftp vsftpd 安全连接

LLLLLoodwd的博客 1176

[笔记]CentOS7 vsftpd安装及配置使用

最近在调研ftp服务的登陆 所以有必要安装研究一下作为Linux端ftp的实现软件—— vsftpd以vsftpd 3.02版本为例。

二次元怪兽的博客 6360

CentOS 配置FTP(开启VSFTPD服务)

网上已经有很多关于VSFTPD的配置,但有两个通病,要么就是原理介绍太多,要么就是不完整,操作下来又要查询多篇文章才能用。我这里不讲原理,只记录操作,尽可能通过复制下面的操作可以实现FTP读写功能。方便自己和他人。CentOS7 vsFTPd版本:3.0.2。

weixin_42844704的博客 2480

Linux vsFTPd服务详解——文件加密传输配置

今天继续给大家介绍Linux相关内容,本文主要内容是vsFTPd服务的详解。 阅读本文,您需要有一定的vsFTPd服务配置的基本知识,如果您对此还存在疑惑,欢迎查阅以下文章: Linux vsFTPd服务详解——vsFTPd基础知识 Linux vsFTPd服务详解——本地用户登录实战 一、生成openssl自签证书 在上篇文章Linux vsFTPd服务详解——本地用户登录实战中,我们通过配置本地用户的用户名和密码,从而增强了FTP服务的安全性。但是,这种配置存在的问题是在FTP传输文件的时候不能加密传输

永远是少年 5584

使用Docker实现vsftpd配置——匿名访问只读篇

1、前言 使用vsftpd服务的用户总会有很多不一样的需求,而vsftpd的配置相对来说也是眼花缭乱,各种参数与参数之间的微妙关系,参数与目录权限的微妙关系常常会使配置者头疼,如果想要解决这个问题,那么作为解决开发、运维界的杀手:Docker,是一个不错的选择! 2、环境搭建 2.1、Docker部署 部署方法请参考下文Docker部分:Debian10搭建K8S配合Centos7组成集群-----Centos7篇 以及下文Docker部分:Debian10搭建K8S配合Centos7组成集群-----De

坐公交也用券 2131
上一篇: 在Linux下配置TCP/IP
下一篇: RedHat7.2下Apache与Tomcat4整合实例
wangxd
博客等级 码龄26年 4粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值