<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux for Fun 中文站 &#187; vsftpd</title>
	<atom:link href="http://zh.linuxforfun.net/tag/vsftpd/feed/" rel="self" type="application/rss+xml" />
	<link>http://zh.linuxforfun.net</link>
	<description>Just for Fun</description>
	<lastBuildDate>Mon, 22 Feb 2010 06:56:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>配置 VSFTPD －－另一种途径</title>
		<link>http://zh.linuxforfun.net/2008/04/15/vsftpd-virtual-users-another-approach/</link>
		<comments>http://zh.linuxforfun.net/2008/04/15/vsftpd-virtual-users-another-approach/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 15:54:35 +0000</pubDate>
		<dc:creator>三大件</dc:creator>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[网络]]></category>
		<category><![CDATA[vsftpd]]></category>

		<guid isPermaLink="false">http://zh.linuxforfun.net/?p=17</guid>
		<description><![CDATA[如果你正在维护一个提供虚拟空间的服务器，为安全起见，你可能希望网站管理员只能管理他自己的文件。一个好的解决方法是：为所有的管理员配置 VSFTPD 的虚拟用户和根目录。 在上一篇文章里，我介绍了如何配置 VSFTPD 的虚拟用户。本文将说明如何用另一种方法配置 VSFTPD，这个方法需要在系统上创建真实的用户。 1、安装 VSFTPD 对于 Red Hat, CentOS 和 Fedora 这些基于 RPM 的系统，可以用下面的命令安装 VSFTPD： # yum install vsftpd 对于 Debian and Ubuntu，相应的命令是： # apt-get install vsftpd 2、配置虚拟用户和密码验证 我们可以为每个虚拟网站的管理员创建一个真实的帐号。不过我们将只允许这些帐号使用 FTP 访问我们的服务器。 首先，使用“useradd”命令创建帐号。这里需要注意的一些要点是： 用户组：为方便网站管理员管理自己的文件，我们可以指定他们的帐号与系统的 HTTP 服务器运行时使用的组相同。对于 Apache 服务器，这个组通常是“apache”；对于 lighttpd，这个组通常是“lighttpd”。 虚拟目录：我们指定这些用户的主目录跟他们的虚拟网站的 DocumentRoot 一致。我们把这些目录的属性设置为 HTTP 服务器运行的用户组可写。 登录 shell：为了把虚拟用户限制在只能使用 FTP 登录，我们把他们的登录 shell 设置成 /sbin/nologin。 例如： [...]]]></description>
			<content:encoded><![CDATA[<p>如果你正在维护一个提供虚拟空间的服务器，为安全起见，你可能希望网站管理员只能管理他自己的文件。一个好的解决方法是：为所有的管理员配置 VSFTPD 的虚拟用户和根目录。</p>
<p>在<a href="http://zh.linuxforfun.net/2008/04/05/vsftpd-virtual-users/">上一篇文章</a>里，我介绍了如何配置 VSFTPD 的虚拟用户。本文将说明如何用另一种方法配置 VSFTPD，这个方法需要在系统上创建真实的用户。</p>
<p><strong>1、安装 VSFTPD</strong></p>
<p>对于 Red Hat, CentOS 和 Fedora 这些基于 RPM 的系统，可以用下面的命令安装 VSFTPD：</p>
<blockquote><p><code># yum install vsftpd</code></p></blockquote>
<p>对于 Debian and Ubuntu，相应的命令是：</p>
<blockquote><p><code># apt-get install vsftpd</code></p></blockquote>
<p><span id="more-17"></span><strong>2、配置虚拟用户和密码验证</strong></p>
<p>我们可以为每个虚拟网站的管理员创建一个真实的帐号。不过我们将只允许这些帐号使用 FTP 访问我们的服务器。<br />
首先，使用“useradd”命令创建帐号。这里需要注意的一些要点是：</p>
<ul>
<li><strong>用户组</strong>：为方便网站管理员管理自己的文件，我们可以指定他们的帐号与系统的 HTTP 服务器运行时使用的组相同。对于 Apache 服务器，这个组通常是“apache”；对于 lighttpd，这个组通常是“lighttpd”。</li>
<li><strong>虚拟目录</strong>：我们指定这些用户的主目录跟他们的虚拟网站的 DocumentRoot 一致。我们把这些目录的属性设置为 HTTP 服务器运行的用户组可写。</li>
<li><strong>登录 shell</strong>：为了把虚拟用户限制在只能使用 FTP 登录，我们把他们的登录 shell 设置成 /sbin/nologin。</li>
</ul>
<p>例如：</p>
<blockquote><p><code># useradd -g apache -d /var/www/vhosts/mike -s /sbin/nologin mike<br />
# chmod g+w /var/www/vhosts/mike<br />
# passwd mike<br />
Changing password for user mike.<br />
New UNIX password:<br />
Retype new UNIX password:<br />
passwd: all authentication tokens updated successfully.</code></p></blockquote>
<p><strong>3、配置 VSFTPD</strong></p>
<p>创建配置文件 /etc/vsftpd/vsftpd-virtual.conf：</p>
<blockquote><p><code># disables anonymous FTP<br />
anonymous_enable=NO<br />
# enables non-anonymous FTP<br />
local_enable=YES<br />
# enables uploads and new directories<br />
write_enable=YES<br />
# authentication of virtual uses<br />
pam_service_name=login<br />
# the virtual user is restricted to the virtual FTP area<br />
chroot_local_user=YES<br />
# runs vsftpd in standalone mode<br />
listen=YES<br />
# listens on this port for incoming FTP connections<br />
listen_port=60021<br />
# the minimum port to allocate for PASV style data connections<br />
pasv_min_port=62222<br />
# the maximum port to allocate for PASV style data connections<br />
pasv_max_port=63333<br />
# controls whether PORT style data connections use port 20 (ftp-data)<br />
connect_from_port_20=YES<br />
# the umask for file creation<br />
local_umask=022</code></p></blockquote>
<p><strong>5、启动 VSFTPD 并测试</strong></p>
<p>用下面的命令启动 VSFTPD：</p>
<blockquote><p><code># /usr/sbin/vsftpd /etc/vsftpd/vsftpd-virtual.conf</code></p></blockquote>
<p>用 lftp 命令测试虚拟用户的访问权限：</p>
<blockquote><p><code># lftp -u mike -p 60021 192.168.1.101</code></p></blockquote>
<p>所有的虚拟用户应该可以管理他目录下的所有子目录和文件。</p>
]]></content:encoded>
			<wfw:commentRss>http://zh.linuxforfun.net/2008/04/15/vsftpd-virtual-users-another-approach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>配置 VSFTPD 的虚拟用户</title>
		<link>http://zh.linuxforfun.net/2008/04/05/vsftpd-virtual-users/</link>
		<comments>http://zh.linuxforfun.net/2008/04/05/vsftpd-virtual-users/#comments</comments>
		<pubDate>Sat, 05 Apr 2008 08:38:34 +0000</pubDate>
		<dc:creator>三大件</dc:creator>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[网络]]></category>
		<category><![CDATA[vsftpd]]></category>

		<guid isPermaLink="false">http://zh.linuxforfun.net/2008/04/05/%e9%85%8d%e7%bd%ae-vsftpd-%e7%9a%84%e8%99%9a%e6%8b%9f%e7%94%a8%e6%88%b7/</guid>
		<description><![CDATA[如果你正在维护一个提供虚拟空间的服务器，为安全起见，你可能希望网站管理员只能管理他自己的文件。一个好的解决方法是：为所有的管理员配置 VSFTPD 的虚拟用户和根目录。下面我们就简明地解说一下如何做。 （参考：配置 VSFTPD 的虚拟用户－－另一种途径） 1、安装 of VSFTPD 对于 Red Hat, CentOS 和 Fedora 这些基于 RPM 的系统，可以用下面的命令安装 VSFTPD： # yum install vsftpd 对于 Debian and Ubuntu，相应的命令是： # apt-get install vsftpd 2、配置虚拟用户和密码验证 我们将使用 PAM 的 pam_userdb 来为虚拟用户提供密码验证。这需要一个 “db” 格式的数据库。我们需要“db_load”命令。对于 CentOS 和 Fedora，这个命令在 db4-utils 包里： # yum install db4-utils 对于 Ubuntu： # apt-get install db4.2-util 要创建“db”格式的文件，首先，我们创建一个普通文件文件“virtual-users.txt”，这个文件的格式非常简单，就是一行用户名，一行密码，循环往下写： [...]]]></description>
			<content:encoded><![CDATA[<p>如果你正在维护一个提供虚拟空间的服务器，为安全起见，你可能希望网站管理员只能管理他自己的文件。一个好的解决方法是：为所有的管理员配置 VSFTPD 的虚拟用户和根目录。下面我们就简明地解说一下如何做。<br />
（参考：<a href="http://zh.linuxforfun.net/2008/04/15/vsftpd-virtual-users-another-approach/">配置 VSFTPD 的虚拟用户－－另一种途径</a>）</p>
<p><strong>1、安装 of VSFTPD</strong></p>
<p>对于 Red Hat, CentOS 和 Fedora 这些基于 RPM 的系统，可以用下面的命令安装 VSFTPD：</p>
<blockquote><p><code># yum install vsftpd</code></p></blockquote>
<p>对于 Debian and Ubuntu，相应的命令是：</p>
<blockquote><p><code># apt-get install vsftpd</code></p></blockquote>
<p><span id="more-15"></span><strong>2、配置虚拟用户和密码验证</strong></p>
<p>我们将使用 PAM 的 pam_userdb 来为虚拟用户提供密码验证。这需要一个 “db” 格式的数据库。我们需要“db_load”命令。对于 CentOS 和 Fedora，这个命令在 db4-utils 包里：</p>
<blockquote><p><code># yum install db4-utils</code></p></blockquote>
<p>对于 Ubuntu：</p>
<blockquote><p><code># apt-get install db4.2-util</code></p></blockquote>
<p>要创建“db”格式的文件，首先，我们创建一个普通文件文件“virtual-users.txt”，这个文件的格式非常简单，就是一行用户名，一行密码，循环往下写：</p>
<blockquote><p><code>mary<br />
123456<br />
jack<br />
654321</code></p></blockquote>
<p>然后，执行下面的命令创建真正的数据库：</p>
<blockquote><p><code># db_load -T -t hash -f virtual-users.txt /etc/vsftpd/virtual-users.db</code></p></blockquote>
<p>现在，创建一个 PAM 文件 /etc/pam.d/vsftpd-virtual 来使用这个数据库：</p>
<blockquote><p><code>auth required pam_userdb.so db=/etc/vsftpd/virtual-users<br />
account required pam_userdb.so db=/etc/vsftpd/virtual-users</code></p></blockquote>
<p><strong>3、配置 VSFTPD</strong></p>
<p>创建配置文件 /etc/vsftpd/vsftpd-virtual.conf：</p>
<blockquote><p><code># disables anonymous FTP<br />
anonymous_enable=NO<br />
# enables non-anonymous FTP<br />
local_enable=YES<br />
# activates virtual users<br />
guest_enable=YES<br />
# virtual users to use local privs, not anon privs<br />
virtual_use_local_privs=YES<br />
# enables uploads and new directories<br />
write_enable=YES<br />
# the PAM file used by authentication of virtual uses<br />
pam_service_name=vsftpd-virtual<br />
# in conjunction with 'local_root',<br />
# specifies a home directory for each virtual user<br />
user_sub_token=$USER<br />
local_root=/var/www/virtual/$USER<br />
# the virtual user is restricted to the virtual FTP area<br />
chroot_local_user=YES<br />
# hides the FTP server user IDs and just display "ftp" in directory listings<br />
hide_ids=YES<br />
# runs vsftpd in standalone mode<br />
listen=YES<br />
# listens on this port for incoming FTP connections<br />
listen_port=60021<br />
# the minimum port to allocate for PASV style data connections<br />
pasv_min_port=62222<br />
# the maximum port to allocate for PASV style data connections<br />
pasv_max_port=63333<br />
# controls whether PORT style data connections use port 20 (ftp-data)<br />
connect_from_port_20=YES<br />
# the umask for file creation<br />
local_umask=022</code></p></blockquote>
<p><strong>4、创建用户主目录</strong></p>
<p>在上面的配置文件指定的目录下，创建所有虚拟用户的主目录（如果这些用户已经有自己的文件目录，只需要创建一个符号连接就可以了），并改变这些目录的属主为 ftp：</p>
<blockquote><p><code># mkdir /var/www/virtual/mary<br />
# chown ftp:ftp /var/www/virtual/mary</code></p></blockquote>
<p><strong>5、启动 VSFTPD 并测试</strong></p>
<p>用下面的命令启动 VSFTPD：</p>
<blockquote><p><code># /usr/sbin/vsftpd /etc/vsftpd/vsftpd-virtual.conf</code></p></blockquote>
<p>用 lftp 命令测试虚拟用户的访问权限：</p>
<blockquote><p><code># lftp -u mary -p 60021 192.168.1.101</code></p></blockquote>
<p>所有的虚拟用户应该可以管理他目录下的所有子目录和文件。</p>
]]></content:encoded>
			<wfw:commentRss>http://zh.linuxforfun.net/2008/04/05/vsftpd-virtual-users/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

