<?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>I am LAZY bones ? &#187; 故障分析</title>
	<atom:link href="http://luy.li/category/fault_analyze/feed/" rel="self" type="application/rss+xml" />
	<link>http://luy.li</link>
	<description>all linux</description>
	<lastBuildDate>Fri, 21 Oct 2011 03:38:51 +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>IPv6路由错误引起的怪异问题</title>
		<link>http://luy.li/2011/02/10/ipv6_route_error/</link>
		<comments>http://luy.li/2011/02/10/ipv6_route_error/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 09:50:08 +0000</pubDate>
		<dc:creator>bones7456</dc:creator>
				<category><![CDATA[故障分析]]></category>

		<guid isPermaLink="false">http://luy.li/?p=1781</guid>
		<description><![CDATA[我那Ubuntu源服务器（u.srt.cn），最近出现了一些很诡异的错误。 比如：之前设置的crontab同步linux.deepin.org的iso镜像，已经有一段时间没有成功过了，手工执行rsync，却发现连的似乎是自己，因为banner都出来“Thanks for using SRT ubuntu mirror.”了，但是ping linux.deepin.org 却又能得到正确的结果。 再比如之前我设置了用公钥可以ssh登录另外一台机器，但是现在却提示我输入密码。 排查了许久之后，发现了一个问题，很多（但不是全部）公网的域名虽然ping的时候对应了正确的ip，但是正在使用（比如上面的rsync或ssh）的时候，好像都指到本地了。 再后来，无意之中，发现用ping6 去ping那些有问题的域名，返回的都是 localhost（::1），于是终于知道怎么回事了：系统用IPv6去访问那些域名了，而那些域名的IPv6解析不正确。 为了验证这点，只需要把系统的IPv6彻底禁用再试试就成了，但是服务器也是ubuntu，而ubuntu最新的版本都已经把IPv6编译进内核了，不能通过rmmod来禁用IPv6了，要完全禁用需要修改grub的配置，给内核传参数才行（方法见这里）。 这显然太麻烦了，其实暂时禁用一下还是有方便的办法的，就是这样： echo 1 &#124; sudo tee /proc/sys/net/ipv6/conf/all/disable_ipv6 执行完以后，可以执行 ip a &#124; grep inet6 来确认已经禁用成功了，如果这命令没有输出就OK了。 然后现在再用ping6的话，会提示connect: Network is unreachable。 再去试试之前的rsync和ssh，果然都正常了。 现在我担心的是：IPv4地址不都已经枯竭了吗？接下来改怎么办呢？]]></description>
			<content:encoded><![CDATA[<p>我那Ubuntu源服务器（u.srt.cn），最近出现了一些很诡异的错误。<br />
比如：之前设置的crontab同步linux.deepin.org的iso镜像，已经有一段时间没有成功过了，手工执行rsync，却发现连的似乎是自己，因为banner都出来“Thanks for using SRT ubuntu mirror.”了，但是ping linux.deepin.org 却又能得到正确的结果。<br />
再比如之前我设置了用公钥可以ssh登录另外一台机器，但是现在却提示我输入密码。<br />
排查了许久之后，发现了一个问题，很多（但不是全部）公网的域名虽然ping的时候对应了正确的ip，但是正在使用（比如上面的rsync或ssh）的时候，好像都指到本地了。<br />
再后来，无意之中，发现用ping6 去ping那些有问题的域名，返回的都是 localhost（::1），于是终于知道怎么回事了：系统用IPv6去访问那些域名了，而那些域名的IPv6解析不正确。<br />
为了验证这点，只需要把系统的IPv6彻底禁用再试试就成了，但是服务器也是ubuntu，而ubuntu最新的版本都已经把IPv6编译进内核了，不能通过rmmod来禁用IPv6了，要完全禁用需要修改grub的配置，给内核传参数才行（方法见<a href="http://wiki.ubuntu.org.cn/%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8IPv6">这里</a>）。<br />
这显然太麻烦了，其实暂时禁用一下还是有方便的办法的，就是这样：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">tee</span> <span style="color: #000000; font-weight: bold;">/</span>proc<span style="color: #000000; font-weight: bold;">/</span>sys<span style="color: #000000; font-weight: bold;">/</span>net<span style="color: #000000; font-weight: bold;">/</span>ipv6<span style="color: #000000; font-weight: bold;">/</span>conf<span style="color: #000000; font-weight: bold;">/</span>all<span style="color: #000000; font-weight: bold;">/</span>disable_ipv6</pre></div></div>

<p>执行完以后，可以执行</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ip a <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> inet6</pre></div></div>

<p>来确认已经禁用成功了，如果这命令没有输出就OK了。<br />
然后现在再用ping6的话，会提示<code>connect: Network is unreachable</code>。<br />
再去试试之前的rsync和ssh，果然都正常了。</p>
<p>现在我担心的是：IPv4地址不都已经枯竭了吗？接下来改怎么办呢？</p>
]]></content:encoded>
			<wfw:commentRss>http://luy.li/2011/02/10/ipv6_route_error/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>gnome-panel 消失解决办法</title>
		<link>http://luy.li/2010/12/31/gnome-panel_disappear/</link>
		<comments>http://luy.li/2010/12/31/gnome-panel_disappear/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 15:18:47 +0000</pubDate>
		<dc:creator>bones7456</dc:creator>
				<category><![CDATA[gentoo]]></category>
		<category><![CDATA[故障分析]]></category>

		<guid isPermaLink="false">http://luy.li/?p=1744</guid>
		<description><![CDATA[2010年的最后一天，打开自己的blog看了一眼，最后一个月居然什么都没留下了，觉得这样实在不太好，于是趁最后时刻，写点什么。 想了一下有什么值得一写的，发现还真不多，因为近来实在是少有时间去折腾，就拿这个来充数吧，如果能帮到有同样现象的朋友，也算不错。 我的gentoo在某次升级以后，gnome-panel就突然消失不见了，我的环境是蛮正常蛮标准的gnome+compiz，我的compiz开了窗口阴影，在屏幕最上方，本来是panel的地方，阴影还是有的。ps看了一下进程，gnome-panel也在。杀掉重启，或者执行 gnome-panel &#8211;replace 都无效。看起来就是面板的高度变成了0像素。 查了任何可查的日志，也没有发现什么异常。于是google了一把，发现有人说把 .gconf 删掉就可以恢复了，于是先把整个xdm停掉，把 .gconf 改名，再启动gnome，发现面板果然正常了。当然副作用就是我的大部分设置都丢了，这是我不能接受的。 当然到了这一步，就比较好办了，虽然我的办法很土，但是有效：继续用类似二分法的办法缩小.gconf里面的影响范围，当然，由于gconfd每次都会随gnome启动，所以每做一次范围确认都得停掉gnome，再打开。呵呵，虽然麻烦，但是还是很快早到了元凶，那就是： ~/.gconf/desktop/gnome/interface/%gconf.xml 一个主管界面和字体设置的配置文件，于是，干脆把它删掉，重新在系统-首选项-外观 那里设置一下字体，我的gnome-panel就这么回来了。 可能我这个问题是因为我的ubuntu和gentoo共用一个 /home 引起的，但是奇怪的是ubuntu下面板一切正常，自是gentoo有问题。 好了，问题解决了，最后一句俗却真诚的话：新年快乐！]]></description>
			<content:encoded><![CDATA[<p>2010年的最后一天，打开自己的blog看了一眼，最后一个月居然什么都没留下了，觉得这样实在不太好，于是趁最后时刻，写点什么。<br />
想了一下有什么值得一写的，发现还真不多，因为近来实在是少有时间去折腾，就拿这个来充数吧，如果能帮到有同样现象的朋友，也算不错。<br />
我的gentoo在某次升级以后，gnome-panel就突然消失不见了，我的环境是蛮正常蛮标准的gnome+compiz，我的compiz开了窗口阴影，在屏幕最上方，本来是panel的地方，阴影还是有的。ps看了一下进程，gnome-panel也在。杀掉重启，或者执行 gnome-panel &#8211;replace 都无效。看起来就是面板的高度变成了0像素。<br />
查了任何可查的日志，也没有发现什么异常。于是google了一把，发现有人说把 .gconf 删掉就可以恢复了，于是先把整个xdm停掉，把 .gconf 改名，再启动gnome，发现面板果然正常了。当然副作用就是我的大部分设置都丢了，这是我不能接受的。<br />
当然到了这一步，就比较好办了，虽然我的办法很土，但是有效：继续用类似二分法的办法缩小.gconf里面的影响范围，当然，由于gconfd每次都会随gnome启动，所以每做一次范围确认都得停掉gnome，再打开。呵呵，虽然麻烦，但是还是很快早到了元凶，那就是： ~/.gconf/desktop/gnome/interface/%gconf.xml 一个主管界面和字体设置的配置文件，于是，干脆把它删掉，重新在系统-首选项-外观 那里设置一下字体，我的gnome-panel就这么回来了。<br />
可能我这个问题是因为我的ubuntu和gentoo共用一个 /home 引起的，但是奇怪的是ubuntu下面板一切正常，自是gentoo有问题。<br />
好了，问题解决了，最后一句俗却真诚的话：新年快乐！</p>
]]></content:encoded>
			<wfw:commentRss>http://luy.li/2010/12/31/gnome-panel_disappear/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>gentoo下的pppoe拨号</title>
		<link>http://luy.li/2010/08/28/gentoo_pppoe/</link>
		<comments>http://luy.li/2010/08/28/gentoo_pppoe/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 12:59:23 +0000</pubDate>
		<dc:creator>bones7456</dc:creator>
				<category><![CDATA[gentoo]]></category>
		<category><![CDATA[故障分析]]></category>

		<guid isPermaLink="false">http://luy.li/?p=1683</guid>
		<description><![CDATA[最近，无线路由坏了，所以只能先用自己的电脑拨adsl了。 其实这本也没什么，我的win7和ubuntu都只要稍微设置一下就OK了。 这里再稍微提一下ubuntu的pppoe设置：记得以前的版本（应该是6.xx的时候吧），NetworkManager是不直接支持pppoe的，还要自己手工设置，然后执行pon/poff来拨号，但是现在进步了，直接在NM里输一下用户名和密码就可以上了。 但是我的gentoo是用wicd来管理网络的，而wicd至今都还不支持pppoe，于是只能用原始的命令行来拨号了。 于是eix一搜，发现有个net-dialup/rp-pppoe，安上，看到有 pppoe-setup、pppoe-start、pppoe-stop。啥都不用说了，先pppoe-setup，再pppoe-start，本以为会很顺利，但是几次尝试都在最后一步出错了，而且提示的错误都没啥价值，不知道从何查起~ 正当我无计可施，想妥协安个NetworkManager的时候，忽然灵感一现，发现了可能的错误原因，那就是──内核模块。原来，之前我的gentoo内核基本上也是按需配置的，以前我一直都有路由器拨号，所以没有在内核选项里打开ppp的支持，才导致了这一郁闷的结果，哈哈，既然发现了可能的原因，那就好办了，make menuconfig 里面选上 Device Drivers &#8212;>Network device support &#8212;>PPP (point-to-point protocol) support 下面的所有项，编译完再重启。再 pppoe-start ，果然看到了 Connected!]]></description>
			<content:encoded><![CDATA[<p>最近，无线路由坏了，所以只能先用自己的电脑拨adsl了。<br />
其实这本也没什么，我的win7和ubuntu都只要稍微设置一下就OK了。<br />
这里再稍微提一下ubuntu的pppoe设置：记得以前的版本（应该是6.xx的时候吧），NetworkManager是不直接支持pppoe的，还要自己手工设置，然后执行pon/poff来拨号，但是现在进步了，直接在NM里输一下用户名和密码就可以上了。<br />
但是我的gentoo是用wicd来管理网络的，而wicd至今都还不支持pppoe，于是只能用原始的命令行来拨号了。<br />
于是eix一搜，发现有个net-dialup/rp-pppoe，安上，看到有 pppoe-setup、pppoe-start、pppoe-stop。啥都不用说了，先pppoe-setup，再pppoe-start，本以为会很顺利，但是几次尝试都在最后一步出错了，而且提示的错误都没啥价值，不知道从何查起~<br />
正当我无计可施，想妥协安个NetworkManager的时候，忽然灵感一现，发现了可能的错误原因，那就是──内核模块。原来，之前我的gentoo内核基本上也是按需配置的，以前我一直都有路由器拨号，所以没有在内核选项里打开ppp的支持，才导致了这一郁闷的结果，哈哈，既然发现了可能的原因，那就好办了，make menuconfig 里面选上 Device Drivers  &#8212;>Network device support  &#8212;>PPP (point-to-point protocol) support 下面的所有项，编译完再重启。再 pppoe-start ，果然看到了 Connected!</p>
]]></content:encoded>
			<wfw:commentRss>http://luy.li/2010/08/28/gentoo_pppoe/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>记一下我的ubuntu升级到10.04时遇到都问题</title>
		<link>http://luy.li/2010/06/22/ubuntu_1004/</link>
		<comments>http://luy.li/2010/06/22/ubuntu_1004/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 12:10:13 +0000</pubDate>
		<dc:creator>bones7456</dc:creator>
				<category><![CDATA[故障分析]]></category>

		<guid isPermaLink="false">http://luy.li/?p=1611</guid>
		<description><![CDATA[今天，为了测试一下阿里拼音，很难得地进了一次ubuntu，后来发现居然还是9.10的版本，看不下去了，就顺手升级了一下。 本以为这种升级历史上已经做过很多次，应该不会有什么问题的，但是今天还是遇到问题了，就在这里记一下吧。 我升级的思路比较老土，就是先 sudo sed 's/karmic/lucid/g' -i /etc/apt/sources.list 再apt-get update，再一直交替进行upgrade和dist-upgrade，直到完全没有错误，再重启。如果中间遇到某个包有问题，一般是先卸载这个包，升级完成以后再给安装上就好了。 但是今天遇到一个无法先卸载的包，到某步的时候，出来这样一个错误： E: Could not perform immediate configuration on &#8216;util-linux&#8217;.Please see man 5 apt.conf under APT::Immediate-Configure for details. (2) 很明显，这个是 util-linux 包出问题了，但是这个包太底层了，如果卸了这个，整个ubuntu就差不多没了，我可不敢保证我还能给折腾回去。 解决问题的思路： 先试着手工dpkg安装这个包： sudo dpkg -i /var/cache/apt/archives/util-linux_2.17.2-0ubuntu1_i386.deb dpkg：对于含 util-linux 的文件 .../util-linux_2.17.2-0ubuntu1_i386.deb 来说，有预依赖&#40;pre-dependency&#41;方面的问题： util-linux 预依赖于 libc6 &#40;&#62;= 2.11&#41; 已安装了 libc6，不过安装的版本是 2.10.1-0ubuntu17。 dpkg：处理 /var/cache/apt/archives/util-linux_2.17.2-0ubuntu1_i386.deb &#40;--install&#41;时出错： 预依赖&#40;pre-dependency&#41;问题 - [...]]]></description>
			<content:encoded><![CDATA[<p>今天，为了测试一下<a href="http://luy.li/2010/06/22/alipy/">阿里拼音</a>，很难得地进了一次ubuntu，后来发现居然还是9.10的版本，看不下去了，就顺手升级了一下。<br />
本以为这种升级历史上已经做过很多次，应该不会有什么问题的，但是今天还是遇到问题了，就在这里记一下吧。<br />
我升级的思路比较老土，就是先</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/karmic/lucid/g'</span> <span style="color: #660033;">-i</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apt<span style="color: #000000; font-weight: bold;">/</span>sources.list</pre></div></div>

<p>再apt-get update，再一直交替进行upgrade和dist-upgrade，直到完全没有错误，再重启。如果中间遇到某个包有问题，一般是先卸载这个包，升级完成以后再给安装上就好了。<br />
但是今天遇到一个无法先卸载的包，到某步的时候，出来这样一个错误：</p>
<blockquote><p>E: Could not perform immediate configuration on &#8216;util-linux&#8217;.Please see man 5 apt.conf under APT::Immediate-Configure for details. (2)</p></blockquote>
<p>很明显，这个是 util-linux 包出问题了，但是这个包太底层了，如果卸了这个，整个ubuntu就差不多没了，我可不敢保证我还能给折腾回去。<br />
解决问题的思路：<br />
先试着手工dpkg安装这个包：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #660033;">-i</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>apt<span style="color: #000000; font-weight: bold;">/</span>archives<span style="color: #000000; font-weight: bold;">/</span>util-linux_2.17.2-0ubuntu1_i386.deb
<span style="color: #c20cb9; font-weight: bold;">dpkg</span>：对于含 util-linux 的文件 ...<span style="color: #000000; font-weight: bold;">/</span>util-linux_2.17.2-0ubuntu1_i386.deb 来说，有预依赖<span style="color: #7a0874; font-weight: bold;">&#40;</span>pre-dependency<span style="color: #7a0874; font-weight: bold;">&#41;</span>方面的问题：
 util-linux 预依赖于 libc6 <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">&gt;</span>= <span style="color: #000000;">2.11</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  已安装了 libc6，不过安装的版本是 2.10.1-0ubuntu17。
<span style="color: #c20cb9; font-weight: bold;">dpkg</span>：处理 <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>apt<span style="color: #000000; font-weight: bold;">/</span>archives<span style="color: #000000; font-weight: bold;">/</span>util-linux_2.17.2-0ubuntu1_i386.deb <span style="color: #7a0874; font-weight: bold;">&#40;</span>--install<span style="color: #7a0874; font-weight: bold;">&#41;</span>时出错：
 预依赖<span style="color: #7a0874; font-weight: bold;">&#40;</span>pre-dependency<span style="color: #7a0874; font-weight: bold;">&#41;</span>问题 - 将不安装util-linux
在处理时有错误发生：
 <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>apt<span style="color: #000000; font-weight: bold;">/</span>archives<span style="color: #000000; font-weight: bold;">/</span>util-linux_2.17.2-0ubuntu1_i386.deb</pre></div></div>

<p>看来其实是libc6这个包版本有问题，于是查到这个包及其依赖包的deb，手动下载并安装：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>security.ubuntu.com<span style="color: #000000; font-weight: bold;">/</span>ubuntu<span style="color: #000000; font-weight: bold;">/</span>pool<span style="color: #000000; font-weight: bold;">/</span>main<span style="color: #000000; font-weight: bold;">/</span>e<span style="color: #000000; font-weight: bold;">/</span>eglibc<span style="color: #000000; font-weight: bold;">/</span>libc6_2.11.1-0ubuntu7.2_i386.deb
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>security.ubuntu.com<span style="color: #000000; font-weight: bold;">/</span>ubuntu<span style="color: #000000; font-weight: bold;">/</span>pool<span style="color: #000000; font-weight: bold;">/</span>main<span style="color: #000000; font-weight: bold;">/</span>e<span style="color: #000000; font-weight: bold;">/</span>eglibc<span style="color: #000000; font-weight: bold;">/</span>libc-bin_2.11.1-0ubuntu7.2_i386.deb
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #660033;">-i</span> libc6_2.11.1-0ubuntu7.2_i386.deb libc-bin_2.11.1-0ubuntu7.2_i386.deb</pre></div></div>

<p>这样成功以后，就比较好办了，虽然直接dist-upgrade仍然不行，但是执行</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> dist-upgrade <span style="color: #660033;">-f</span></pre></div></div>

<p>就可以成功解决此问题了。</p>
<p>现在分析看来应该是由于我的sources.list里面没有security部分造成的，如果在里加上</p>
<blockquote><p>deb http://security.ubuntu.com/ubuntu lucid-security main restricted universe multiverse<br />
deb-src http://security.ubuntu.com/ubuntu lucid-security main restricted universe multiverse</p></blockquote>
<p>应该就不会错了吧～</p>
<p>都说ubuntu的大版本升级比较折腾，看来还真是，呵呵。幸好咱也算老手了，不然遇到这种问题，还不被整成重装啊？</p>
]]></content:encoded>
			<wfw:commentRss>http://luy.li/2010/06/22/ubuntu_1004/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>vsftpd只能匿名登录，本地用户出现530错误的一个实例</title>
		<link>http://luy.li/2010/03/15/vsftpd_localuser_530/</link>
		<comments>http://luy.li/2010/03/15/vsftpd_localuser_530/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 09:06:51 +0000</pubDate>
		<dc:creator>bones7456</dc:creator>
				<category><![CDATA[故障分析]]></category>

		<guid isPermaLink="false">http://li2z.cn/?p=1400</guid>
		<description><![CDATA[网上很多教程，在介绍vsftpd的本地用户的配置的时候，大意都是这样的： 建立一个xxx用户，家目录为/yyy/zzz，并把这个用户的shell（/etc/passwd里对应行的最后一列）设置成/sbin/nologin或者是/bin/false，再设置一个密码。 然后修改vsftpd的配置文件，一般是/etc/vsftpd.conf，加上： local_enable=YES write_enable=YES local_umask=022 然后重启vsftpd就可以了。 对于出现530 Login incorrect. 的解释一般是两种： 1. xxx用户对 /yyy/zzz 没有权限。 2. xxx用户被加到 /etc/vsftpd.user_list 列表里了。 但是我今天的操作中，这个新建的用户并没有发现以上两种现象，仍然出现了可恶的530错误，但是匿名用户正常登录。 折腾半天以后，发现用一个shell是/bin/bash的用户却是可以登录ftp的。于是，试着把xxx用户的shell也改成/bin/bash，果然也可以登录了。但是这样显然还没有解决我的问题，因为这样一来，xxx这个用户都可以通过ssh登录服务器了，安全就没有保障了。 于是再找更详细的原因，终于发现了： 其实vsftpd对本地用户鉴权的过程中是可以检查用户shell的合法性的，而且默认就启用了。虽然你可以在配置文件中通过添加 check_shell=NO 来取消vsftpd对shell的检测，但是这个配置项要生效却有个前提：编译的时候不能包含PAM特性（一种*nix系统中的插件式身份鉴别模块），而ubuntu等发行版的二进制包并不能满足这点，所以除非你是自己编译的vsftpd，这个配置项是没有多少用的。 要解决这个问题，还得继续问：vsftpd是怎么检查一个shell是否合法呢？其实这个答案很简单，vsftpd读取 /etc/shells 这个文件，如果用户的shell在这个文件里存在，就认为合法，否则即使你输入了正确的密码，仍然会给你一个530，哈哈。 所以，解决办法就是：把 /sbin/nologin 或者是 /bin/false 加到 /etc/shells 中去！]]></description>
			<content:encoded><![CDATA[<p>网上很多教程，在介绍vsftpd的本地用户的配置的时候，大意都是这样的：</p>
<blockquote><p>建立一个xxx用户，家目录为/yyy/zzz，并把这个用户的shell（/etc/passwd里对应行的最后一列）设置成/sbin/nologin或者是/bin/false，再设置一个密码。<br />
然后修改vsftpd的配置文件，一般是/etc/vsftpd.conf，加上：</p>
<blockquote><p>  local_enable=YES<br />
  write_enable=YES<br />
  local_umask=022   </p></blockquote>
<p>然后重启vsftpd就可以了。</p></blockquote>
<p>对于出现530 Login incorrect. 的解释一般是两种：<br />
1. xxx用户对 /yyy/zzz 没有权限。<br />
2. xxx用户被加到 /etc/vsftpd.user_list 列表里了。<br />
但是我今天的操作中，这个新建的用户并没有发现以上两种现象，仍然出现了可恶的530错误，但是匿名用户正常登录。<br />
折腾半天以后，发现用一个shell是/bin/bash的用户却是可以登录ftp的。于是，试着把xxx用户的shell也改成/bin/bash，果然也可以登录了。但是这样显然还没有解决我的问题，因为这样一来，xxx这个用户都可以通过ssh登录服务器了，安全就没有保障了。<br />
于是再找更详细的原因，终于发现了：<br />
其实vsftpd对本地用户鉴权的过程中是可以检查用户shell的合法性的，而且默认就启用了。虽然你可以在配置文件中通过添加</p>
<blockquote><p>check_shell=NO</p></blockquote>
<p>来取消vsftpd对shell的检测，但是这个配置项要生效却有个前提：编译的时候不能包含PAM特性（一种*nix系统中的插件式身份鉴别模块），而ubuntu等发行版的二进制包并不能满足这点，所以除非你是自己编译的vsftpd，这个配置项是没有多少用的。<br />
要解决这个问题，还得继续问：vsftpd是怎么检查一个shell是否合法呢？其实这个答案很简单，vsftpd读取 /etc/shells 这个文件，如果用户的shell在这个文件里存在，就认为合法，否则即使你输入了正确的密码，仍然会给你一个530，哈哈。<br />
所以，解决办法就是：把 /sbin/nologin 或者是 /bin/false 加到 /etc/shells 中去！</p>
]]></content:encoded>
			<wfw:commentRss>http://luy.li/2010/03/15/vsftpd_localuser_530/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

