之三

来源:互联网 发布:用友网络未来市值 编辑:程序博客网 时间:2024/04/23 22:16
虚拟用户2
===============
这个例子将演示如何扩展“VIRTUAL_USERS”那个范例,从而实现更复杂一点的配置。

让我们假定我们需要2种不同的虚拟用户:一种只能浏览并下载资源,另一种能上传文件并浏览站内资源。

要激活这个设置,我们将使用VSFTPD的强大的单个用户配置功能(是V1.1.0后出现的新功能)。

在前一个虚拟用户范例中,我们创建了2个用户-tomfred.
我们将实现fred有写权限以上传新文件,同时tom只能下载文件。

1
)激活单个用户配置功能。
要激活这个功能,需要增加以下配置行到配置文件:

user_config_dir=/etc/vsftpd_user_conf

并且创建目录:

mkdir /etc/vsftpd_user_conf

2
)授予tom读取所有文件和目录的权限
在上一个例子的最后,我们注意到虚拟用户只能浏览所有的完全可读属性的目录和文件。我们使/home/ftpsite完全可读,而且被上传的文件也
赋予了完全可读的权限(daidong注:意思是说这样虚拟用户就能读取所有的文件了)。但实现这个目的的另一个方法是授权tom能下载那些非完全可读的文件。

对于tom,他的配置文件中需要修改一个设置:
anon_world_readable_only:

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

验证一下结果-tom登录,“ls”将返回一个目录列表。如果以fred登录将不会如此。

注意:重启VSFTPD以启用配置文件/etc/vsftpd.conf(高级用户也可以发送SIGHUPVSFTPD的监听进程).

3)
授予freg读取所有文件/目录并创建新文件/目录的权限,但让他不能对已存在的文件/目录进行操作.

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

验证一下-tom登录,将不能上传,fred就可以.
试图删除一个文件--,你们俩都不行!
配置详解
=============
VSFTPD.CONF.5
================
名字
vsftpd.conf
VSFTPD的配置文件

描述:
vsftpd.conf
用来控制VSFTPD的各项功能。默认状态下,它的位置是/etc/vsftpd.conf
(译者注:也许老的LINUX版本下,配置文件是这个位置,但新的LINUX版本,例如FC2,配置文件是在/etc/vsftpd目录下。
但是也很可能和安装方式有关,RPM包安装,配置文件是/etc/vsftpd.conf. 源码包安装:/etc/vsftpd/vsftpd.conf.我不确定。
但以后我不再特别指出了,真累!!)
然而,你也可以通过修改配置行来指定到其它目录。这一点很有用,因为也许你想使用一些高级inetd功能,例如xinetd,在一个多虚拟主机的机器上调用不同的配置文件。

格式
VSFTPD.conf
的格式非常简单,每行要么是一个注释,要么是一个指令。注释行以#开始并被忽略掉。指令行格式如下:
配置项=参数值
很重要的一点是,这个格式里不存在任何空格。
默认的,每一个配置项在配置文件里都占一编辑行,可以被修改。

布尔选项
参数值的布尔选项可以是:
YES
或者NO

allow_anon_ssl
只有ss1_enable激活了才可以启用此项。如果设置为YES,匿名用户将容许使用安全的SSL连接服务器。
默认值:NO

anon_mkdir_write_enable
如果设为YES,匿名用户将容许在指定的环境下创建新目录。如果此项要生效,那么配置write_enable必须被激活,并且匿名用户必须在其父目录有写权限。
默认值:NO

anon_other_write_enable
如果设置为YES,匿名用户将被授予较大的写权限,例如删除和改名。一般不建议这么做,除非想完全授权。
默认值:NO

anon_upload_enable
如果设为YES,匿名用户就容许在指定的环境下上传文件。如果此项要生效,那么配置write_enable必须激活。并且匿名用户必须在相关目录有写权限。
默认值:NO

anon_world_readable_only
启用的时候,匿名用户只容许下载完全可读的文件,这也就容许了ftp用户拥有对文件的所有权,尤其是在上传的情况下。
默认值:YES

anonymous_enable
控制是否容许匿名用户登录。如果容许,那么“ftp”“anonymous”都将被视为“anonymous"而容许登录。
默认值:YES

ascii_download_enable
启用时,用户下载时将以ASCII模式传送文件。
默认值:NO

ascii_upload_enable
启用时,用户上传时将以ASCII模式传送文件。
默认值:NO

async_abor_enable
启用时,一个特殊的FTP命令"async ABOR”将容许使用。只有不正常的FTP客户端要使用这一点。而且,这个功能又难于操作,所以,
默认是把它关闭了。但是,有些客户端在取消一个传送的时候会被挂死(daidong注:估计是客户端无响应了),那你只有启用这个功能才能避免这种情况。
默认值:NO

background
启用时,并且VSFTPD“listen”模式启动的(daidong注:就是standalone模式),VSFTPD将把监听进程置于后台。但访问VSFTPD时,控制台将立即被返回到SHELL
默认值:NO

check_shell
注意:这个选项只对非PAM结构的VSFTPD才有效。如果关闭,VSFTPD将不检查/etc/shells以判定本地登录的用户是否有一个可用的SHELL
默认值:YES

chmod_enable
启用时,将容许使用SITE CHMOD命令。注意,这只能用于本地用户。匿名用户绝不能使用SITE CHMOD
默认值:YES

chown_uploads
如果启用,所以匿名用户上传的文件的所有者将变成在chown_username里指定的用户。这对管理FTP很有用,也许也对安全有益。
默认值:NO

chroot_list_enable
如果激活,你要提供一个用户列表,表内的用户将在登录后被放在其home目录,锁定在虚根下(daidong注:进入FTP后,PWD一下,可以看到当前目录是\"/",这就是虚根。是FTP的根目录,并非FTP服务器系统的根目录)。如果chroot_local_user设为YES后,其含义会发生一点变化。
在这种情况下,这个列表内的用户将不被锁定在虚根下。
默认情况下,这个列表文件是/etc/vsftpd.chroot_list,但你也可以通过修改chroot_list_file来改变默认值。
默认值:NO

chroot_local_user
如果设为YES,本地用户登录后将被(默认地)锁定在虚根下,并被放在他的home目录下。
警告:
这个配置项有安全的意味,特别是如果用户有上传权限或者可使用SHELL的话。在你确定的前提下,再启用它。
注意,这种安全暗示并非只存在于VSFTPD,其实是广泛用于所有的希望把用户锁定在虚根下的FTP软件。
默认值:NO

connect_from_port_20
这用来控制服务器是否使用20端口号来做数据传输。为安全起见,有些客户坚持启用。相反,关闭这一项可以让VSFTPD更加大众化。
默认值:NO (但在范例配置文件中,启用了,即YES

deny_email_enable
如果激活,你要提供一个关于匿名用户的密码E-MAIL表(daidong注:我们都知道,匿名用户是用邮件地址做密码的)以阻止以这些密码登录的匿名用户。
默认情况下,这个列表文件是/etc/vsftpd.banner_emails,但你也可以通过设置banned_email_file来改变默认值。
默认值:NO

dirlist_enable
如果设置为NO,所有的列表命令(daidong注:如ls)都将被返回“permissiondenied”提示。
默认值:YES

dirmessage_enable
如果启用,FTP服务器的用户在首次进入一个新目录的时候将显示一段信息。默认情况下,会在这个目录中查找.message文件,但你也可以
通过更改message_file来改变默认值。
默认值:NO (但在配置范例文件中启用了它)

download_enable
如果设为NO,下载请求将返回“permissiondenied”
默认值:YES

dual_log_enable
如果启用,两个LOG文件会各自产生,默认的是/var/log/xferlog/var/log/vsftpd.log。前一个是wu-ftpd格式的LOG,能被通用工具分析。
后一个是VSFTPD的专用LOG格式。
默认值: NO

force_dot_files
如果激活,即使客户端没有使用“a”标记,(FTP里)以.开始的文件和目录都会显示在目录资源列表里。但是把"."\".."不会显示。(daidong注:即LINUX
的当前目录和上级目录不会以‘.’‘..’方式显示)。
默认值:NO

force_local_data_ssl
只有在ssl_enable激活后才能启用。如果启用,所有的非匿名用户将被强迫使用安全的SSL登录以在数据线路上收发数据。
默认值:YES

force_local_logins_ssl
只有在ssl_enable激活后才能启用。如果启用,所有的非匿名用户将被强迫使用安全的SSL登录以发送密码。
默认值:YES

guest_enable
如果启用,所有的非匿名用户登录时将被视为游客,其名字将被映射为guest_username里所指定的名字。
默认值:NO

hide_ids
如果启用,目录资源列表里所有用户和组的信息将显示为"ftp".
默认值:NO

listen
如果启用,VSFTPD将以独立模式(standalone)运行,也就是说可以不依赖于inetd或者类似的东东启动。直接运行VSFTPD
的可执行文件一次,然后VSFTPD就自己去监听和处理连接请求了。
默认值:NO

listen_ipv6
类似于listen参数的功能,但有一点不同,启用后VSFTPD会去监听IPV6套接字而不是IPV4的。这个设置和listen的设置互相排斥。
默认值:NO

local_enable
用来控制是否容许本地用户登录。如果启用,/etc/passwd里面的正常用户的账号将被用来登录。
默认值:NO

log_ftp_protocol
启用后,如果xferlog_std_format没有被激活,所有的FTP请求和反馈信息将被纪录。这常用于调试(debugging)
默认值:NO

ls_recurse_enable
如果启用,\"ls -R"将被容许使用。这是为了避免一点点安全风险。因为在一个大的站点内,在目录顶层使用这个命令将消耗大量资源。
默认值:NO

no_anon_password
如果启用,VSFTPD将不会向匿名用户询问密码。匿名用户将直接登录。
默认值:NO

no_log_lock
启用时,VSFTPD在写入LOG文件时将不会把文件锁住。这一项一般不启用。它对一些工作区操作系统问题,如Solaris / Veritas文件系统共存时有用。
因为那在试图锁定LOG文件时,有时候看上去象被挂死(无响应)了。(daidong注:这我也不是很理解。所以翻译未必近乎原意。原文如下:It exists to workaround
operating system bugs such as the Solaris / Veritas filesystemcombination
which has been observed to sometimes exhibit hangs trying to locklog files.

默认值:NO

one_process_model
如果你的LINUX核心是2.4的,那么也许能使用一种不同的安全模式,即一个连接只用一个进程。只是一个小花招,但能提高FTP的性能。请确定需要后再启用它,而且也请确定你的
站点是否会有大量的人同时访问。
默认值:NO

passwd_chroot_enable (daidong
注:这段自己看,无语...)
if enabled, along with
.BR chroot_local_user
, then a chroot() jail location may be specified on a per-userbasis. Each
user's jail is derived from their home directory string in/etc/passwd. The
occurrence of /./ in the home directory string denotes that thejail is at that
particular location in the path.
默认值:NO

pasv_enable
如果你不想使用被动方式获得数据连接,请设为NO
默认值:YES

pasv_promiscuous
如果你想关闭被动模式安全检查(这个安全检查能确保数据连接源于同一个IP地址)的话,设为YES。确定后再启用它(daidong注:原话是:只有你清楚你在做什么时才启用它!)
合理的用法是:在一些安全隧道配置环境下,或者更好地支持FXP时(才启用它)。
默认值:NO

port_enable
如果你想关闭以端口方式获得数据连接时,请关闭它。
默认值:YES

port_promiscuous
如果你想关闭端口安全检查(这个检查可以确保对外的(outgoing)数据线路只通向客户端)时,请关闭它。确认后再做!
默认值:NO

run_as_launching_user
如果你想让一个用户能启动VSFTPD的时候,可以设为YES。当ROOT用户不能去启动VSFTPD的时候会很有用(daidong注:应该不是说ROOT用户没有权限启动VSFTPD
而是因为别的,例如安全限制,而不能以ROOT身份直接启动VSFTPD)。强烈警告!!别启用这一项,除非你完全清楚你在做什么(daidong:无语....)!!!随意地启动这一项会导致
非常严重的安全问题,特别是VSFTPD没有或者不能使用虚根技术来限制文件访问的时候(甚至VSFTPD是被ROOT启动的)。有一个愚蠢的替代方案是启用deny_file,将其设置为{/*,*..*}等,
但其可靠性却不能和虚根相比,也靠不住。
如果启用这一项,其他配置项的限制也会生效。例如,非匿名登录请求,上传文件的所有权的转换,用于连接的20端口和低于1024的监听端口将不会工作。其他一些配置项也可能被影响。
默认值:NO

secure_email_list_enable
如果你想只接受以指定E-MAIL地址登录的匿名用户的话,启用它。这一般用来在不必要用虚拟用户的情况下,以较低的安全限制去访问较低安全级别的资源。如果启用它,匿名用户除非
用在email_password_file里指定的E-MAIL做为密码,否则不能登录。这个文件的格式是一个密码一行,而且没有额外的空漯
原创粉丝点击