2007年7月22日星期日

Apache的Satisfy详解

最早接触Satisfy,是这样一个情况,一个目录启用了密码保护,想单独开放它的一个子目录,让这个子目录无须密码即可访问,那么需要这样设置:

AllowOverride All
AuthName "Fwolf's Vault"
AuthType Basic
AuthUserFile path/to/pwd/file
require valid-user


Allow from all
Satisfy any

这样用户访问dir2的时候就不需要输入密码了。额外说明一点,dir1和dir2都是针对文件地址的,而非url。但这样实现的原理我以前真没想过,直到我碰到了一个蹊跷的问题。

环境和上面的一样,只是我在dir2下面,想禁止对一个文件的访问,于是dir2的设置变为:


Allow from all
Satisfy any

order allow,deny
deny from all


(deny from all换成allow from someip,即绝对禁止换成只允许指定ip地址,对我后面的描述没有影响)

好了,现在访问那个应该被禁止访问的文件secret_file,由于我本身不在允许ip范围之内,所以应该是不能访问的,可是。。。怎么弹出对话框让输入用户名和密码了?如果用wget访问的话,可以清楚的看到:

401 Authorization Required
Authorization failed.

等等,401错误是密码输入错误,可我明明是绝对禁止访问的设置嘛,而且如果用浏览器访问,并且输入正确的密码居然还是可以访问呢,哪里的设置出了问题?虽然一样都是无法访问,可问题一定要搞清楚才行。

其实,仔细看看Satisfy的官方文档,答案就在其中,Satisfy就是在同时启用了Allow和 Require的情况下,指定相关策略的,一共有两个备选值,All表示用户必须同时满足Allow和Require的条件,而Any则是满足其中之一即可。

应用到我的问题上来,从上向下看,因为设置是从上级向下逐步解析的,最下层目录的配置具有最高的优先级,可以覆盖上级目录的设置,在.htaccess里也是一样。dir1中设置密码验证启用了Require;然后下级的dir2启用了Allow,并且用Satisfy any指定用户只要ip符合 all或者输入正确密码就能访问,由于ip肯定会符合all这个条件,所以等同于取消了密码限制;最后的secret_file,把Allow进行了限制,注意,在这个时候,用户的ip不符合Allow,按照Satisfy any的定义,服务器自然会去查是否符合两个条件中的另外一个是否能够通过,所以就出现了密码输入框,而不是直接 403 Forbidden。

现在问题清楚了吧,只要在secret_file的配置中增加一句:

Satisfy All

覆盖掉dir2中的Satisfy any设置,就可以实现预期的403拒绝访问了。

PS: 记得以前是可以用的,现在不起作用了,要改成正则才行:。

Source: http://www.fwolf.com/blog/post/341

MediaTemple启航

按照以前的方案和约定,虽然报名人数并没有达到预期数额,我还是启动了,现在您看到的这篇文章,我的网站,就是在mt空间上了。

注册用户的过程非常顺利,就是一定要我输入公司名称,可我明明是个人用户,所以就输了个"Personal, not a company",为了怕遭遇和万网一样的小麻烦,还特意发邮件咨询了一下,得到答复是这项信息可以随时修改,应该不影响的。注册的时间比较巧,差不多刚刚赶上美国那边(-8时区),所以很快就通过了人工审核,拿到了账号。

然后就登录账号中心、Plesk控制面板,熟悉了一下管理功能,发现基本上常用的主机管理和账号分配功能都可以在Plesk里完成了,于是建立了第一个客户Client,把我这个网站转了过去。根据合组方案,建立了一个客户模板,每个客户拥有:

  • 自己的控制面板。
  • 自己管理域名,限1个主域名,但可以分子域名或别名。
  • 可以自行开启ssh账号,但仅限chroot环境。
  • 1G磁盘空间,包括日志,但好像不包括数据库。
  • 50G月流量,双向计算的。
  • 1个数据库,mysql 4.1

暂时没有找到cpu的限量使用功能,费用是每人每年¥200,中途退出和加入按每月¥20计。

为了节约资源,关闭了邮件相关功能,大家gmail用得不是挺好么:),为了方便交流,还建了一个google group,地址是:http://groups.google.com/group/fwolf-mt01 ,如果想测试一下速度,可以下载我上传的php文档,我这里测试能到几十k,还比较稳定,主机ping值300左右,国外的主机一般都是这个速度。

在我的blog中增加了一个hosted分类,专门记录和主机使用相关的资料。虽然已经取得了root权限,暂时还没有时间配php5,但安装wp没问题。这几天集中给大家开通账号,等有空了再把联络表和合组公约整理出来。

今天是周五,明后天就是周末了,所以请以前登记过的合组用户尽快与我联系,争取在周末把大家的空间都开通了。

另外我们合组的人还没有凑齐,有意的同学仍然可以报名。

Source: http://www.fwolf.com/blog/post/340

RedFlag Linux安装打印机并共享给windows使用

咳、咳,这次和以往的环境不同,使用的是我们的100%国产操作系统红旗桌面5,Dell计算机随机带的盘 :)我只简单把不好作的几个地方指出来。

首先是在redflag5中安装打印机,我的打印机是HP LaserJet 1020,redflag汉化得非常不错,虽然界面让人感觉一蹦一蹦的,但和windows几乎相同的界面让我用起来几乎没有障碍。安装时就选择本地usb打印机即可,驱动程序系统自带了,厂商选HP,类型里面有1020,直接选用,就安装好了。可是,打印测试页,打印机没反应。在linuxsir上找到 一篇文章,下载了个sihp1020.dl.tar.gz,然后cat sihp1020.dl > /dev/usb/lp0之后就听到打印机动弹了一下,然后再打印东西就可以了。那篇文章中还说需要安装 foo2zjs,我没安也没问题,后来安了一遍也没看到有多大变化,大概是现在新发行的linux都已经内置foo2zjs驱动了。

不过到现在还有一个问题,打印可以了,可在firefox中打印网页有乱码,大部分中文字根本就出不来,小部分中文字是打出来了,可连错别字带着夹杂乱字母的,查到 redflag在2006年3月就解决了firefox打印乱码的问题,不知怎么还出现在我的安装里,也没有找到解决方法,好在这台机器只用来作打印服务器,自己不用打东西。这个乱码也只是出现在firefox打印上,用openoffice打印东西都很正常。

然后就是共享打印机了,试过直接在redflag的打印机管理中,像windows那样开启打印机共享功能,这样我的打印机HP下面就又多了个HP-s,这个就是共享的打印机了,不用管它。这种做法是通过samba共享的,也能被局域网内的windows机器自动搜索到,不过由于默认的安全设置,从windows打印过来的任务会被拒绝。解决方法肯定是有,不过我转用了另外一种共享方式,就是linux的CUPS方式。

CUPS基本系统redflag安装的时候都自带了,所以无须配置,只是要更改一下安全设置,让局域网内的其他电脑能访问本机的CUPS服务即可,在/etc/cups/cupsd.conf中段的最后部分,加上一句:

Allow From 192.168.0.*

这里allow deny的规则和apache是很类似的,原来介绍过,重启CUPS服务之后,局域网的其他机器就能够访问了。

然后就可以到windows机器上,添加打印机,类型选internet那一类,地址就是 http://redflag机器地址或机器名:631/printers/HP,其中:631是IPP服务的默认端口,不加的话windows会去找80端口,printers好像是固定死的,或者属于IPP服务的配置,不用动,HP是redflag机器上给打印机起的名字;后面选驱动程序的时候,不要选和打印机相对应的厂商和机型,好像选了也不顶用,打印测试页没反应,redflag的cups errorlog文件中会提示没有启用RAW格式:

E [17/Jul/2007:19:21:53 +0800] print_job: Unsupported format 'application/octet-stream'!
I [17/Jul/2007:19:21:53 +0800] Hint: Do you have the raw file printing rules enabled?

所以选驱动程序的时候,左边的制造商选Generic,右边的打印机类型选MS Publisher Color Printer,这样可以正常打印,如果选的是MS Publisher Imagesetter,在我的1020上也能打出东西,不过整个页面内容相对于纸向上偏移了一些距离,页面上面一部分的内容没了。

感觉CUPS方式共享打印机比samba方式速度要快,并且打印机驱动也不用安装了,省事。

这也是我第一次使用红旗redflag linux,由于解除redhat系列发行版不多,所以还是有些无所适从,一些管理命令找不到,Kde也不太会用,需要花些时间适应,总体感觉红旗汉化修改得还算不错,不过仍然不够好,把这样的产品交给从windows迁移过来的用户,极有可能伤害他们对linux的信心,与其交给用户和windows界面相同的一个东西,反倒不如让他们把linux当全新的东西来学,根基更牢固一些。

相关阅读

Source: http://www.fwolf.com/blog/post/339

2007年7月8日星期日

发现fcitx也很不错嘛

scim使用了很长时间了,虽然其中有时候有些麻烦,总体来说也是不错的。不过我只用自然码风格的双拼,scim那丰富的输入法类型对我来说没用,今天心血来潮换fcitx用用,发现居然也是很不错的,比我刚开始在ubuntu 5.10下使用的感觉好多了。

我是直接安装源中的版本,apt安装即可,版本是1:3.4.3-1,输入法选字条上显示的版本是"GirlDog 3.4.3(新年版)",更换输入法的时候,除了使用im-switch -s fcitx之外,还把/etc/X11/Xsession.d/95input的内容改成了下面这样:

export LC_CTYPE=zh_CN.UTF-8
export XMODIFIERS=@im=fcitx
export XIM=fcitx
export XIM_PROGRAM=fcitx
fcitx

然后重启X就能正常启动fcitx了。

fcitx的主要配置文件是$HOME/.fcitx/config,不过这个文件的编码是gb2312的,所以编辑之前要先更改一下shell环境的字符集(注意文件编码不能改,不然设置无效):

export LANG=zh_CN.utf-8
gedit config

更改设置之后,想立即生效就kill掉fcitx再重启(或者按Ctrl_5也行):

pkill -9 fcitx;fcitx

在我的安装中,或许是ubuntu改装的原因,反查拼音、删除拼音用户词组等快捷键好像无法使用,不过还好,自造词挺省事,直接编辑QuickPhrase.mb就可以了,不过这个文件也必须是gb2312编码才行。

总体fcitx给我的感觉是小巧、快速、够用,不过配置略微麻烦了一点点,需要修改配置文件,而不是像scim那样有图形界面的配置功能;另外就是很多地方,比如配置文件,使用gb2312内码,对于现在大多数utf8编码的linux来说,略微麻烦了一点点。

推荐大家看看fcitx官方网站上的 中文PDF文档,挺不错的。

另外还有一个我不知道的问题,比如输入ubuntu,没按回车出英文,而是按空格出了个"手刹虐杀"的中文,以后就记住了,像这种"自造词"如何删除?Ctrl+Del不起作用呀。

Source: http://www.fwolf.com/blog/post/338

按时间清除回收站中的文件

ubuntu的nautilus在删除文件的时候,一般都是把文件移动到所属分区的.Trash目录下,如果启用了libtrash,在shell中删除的文件也会被移动到$HOME/.Trash目录中,时间长了以后,这些 .Trash目录的管理是个问题。

直接全部清空显然太简单,我习惯先清除最早删除的文件,以前是用php写了个脚本来作,现在发现使用find命令就完全能够实现了:

find . -mtime +200

这样所有"岁数"大于200天的文件就都找出来了,不过当前目录.也出来了,去掉它:

find . -mtime +200 ! -name "."

只输出文件名太简单,加上日期和文件大小的输出:

find . -mtime +200 ! -name "." -printf '%T+ %8kK %Pn'

这样就比较完美了,确定想删除这些文件的话,在最后带上-delete就可以了:

find . -mtime +200 ! -name "." -printf '%T+ %8kK %Pn' -delete

另外,如果想知道清除这些文件能够释放多少空余磁盘空间,可以借助awk来实现:

find . -mtime +200 ! -name "." -printf '%8kn'|awk '{sum += $1}END{printf "Total %d K.n", sum}'

在上面所有的find中,使用的都是mtime,也就是文件的最后修改时间,这样有一个小缺点,从网上下载的文件时间一般是服务器上的文件时间,虽然你是2007年下载的,文件的mtime可能会是2002年,这样的文件会被优先删除,不过无所谓了,既然是回收站,既然是从网上下载的,大不了再重新下去,保护我们自己"生产"的文件才是首要任务。

为何不用atime也就是最后访问时间,我觉得这个时间非常不靠谱,比如你用clamscan扫描完病毒之后,所有文件的atime都变成现在了,还有一些莫名的情况,总之不是很稳定,不如mtime让人放心,即使我删除了10天前编辑的文件,它的mtime就一直会是10天前的日期,不会再变的。

另外在实际的使用过程中,还会遇到另外一种情况,目录的日期比较早,而该目录下有比较新的文件,所以find的时候就只把目录find出来了,如果加上-delete,是不是就把目录删除了?下面那些比较新的文件也都没有了。所以我用这种方式解决:find的之后指定不搜索目录(! -type d),而在文件清除之后再按照同样的时间条件删除所有空目录(find . -type d -empty -mtime +200 -delete ),减少文件被误删的可能。

基于上面那些,我写了一个简单的脚本方便调用,可从这里下载,为了安全,限定只搜索当前目录,并且目录名称必须包含有"Trash"。

Source: http://www.fwolf.com/blog/post/337

GoDaddy的帐号自动锁定

昨晚发现godaddy突然无法登录了,我确定输入的用户名和密码都是正确的,可系统就是提示:
There is no account with that information. Please try again.

试了好多次都不行,也不是网络的问题,甚至我还通过重设密码功能修改了密码,仍然是登录不进去,只好给godaddy发邮件咨询,3个半小时后收到回信(部分内容):

 Thank you for contacting Online Support. Your account has been locked as a
security measure due to multiple failed login attempts*. To have your
account unlocked please respond to this email with the last 6 digits of the
credit card used on your account for verification, or the shopper PIN for
your account. Once we receive this information we will then submit a request
to have your account unlocked.

*If you have the "Card on File" feature enabled, your account will become
locked after a single failed login. When using this feature you must either
make sure that you are careful to enter the correct password every time you
log into your account, or you will need to disable the "Card on File"
feature.

大体内容是说,由于有失败的登录,所以帐号被暂时锁定了,需要写信要求他们解除锁定,并附上付款的信用卡号部分好吗或者shopper PIN验证身份。并且如果开通了Card on File功能的话,只要有一次失败的登录,帐号就会被锁定,所以输入密码的时候一定要十分小心。

我回信提供了相关信息,大约2小时后就收到回信,帐号已经恢复正常,可以登录了。响应得还是比较及时的。

个人以为这是一种比较负责任的态度,godaddy帐号里面最值钱的就是域名,而如果被别人冒用帐号,把域名转移出去,大概就没希望要回来了,对上了规模的网站来说损失难以估量。所以如果有人"试"密码的话自动锁定帐号是对客户的负责任,要知道域名不像主机天天都会去看看是否运转正常,不作什么设置修改的话几个月甚至半年有的人也不会去登录godaddy(主机一旦出问题,网站立马挂掉,想不知道都难,域名被盗,别人可以暂时还保留原来的dns记录,外人感觉不到)。如果帐号被锁定后有个邮件通知那就更好了,可客服说没这服务。

如果害怕帐号时常被锁定的话,可以取消Card on File功能,因为开着这个一旦别人冒用你的帐号,偷走的就不仅仅是域名了,甚至信用卡里的票票都有危险。但我觉得为了方便还是开着吧,正常有一次错误登录就锁定,安全措施还显得更"灵敏"一些呢。

另外客服说的shopper PIN或者Support Pin,以及网站上显示的Call-in Pin其实都是一个东西,用于服务的那个4位数字码,别被不同的叫法弄糊涂了。

Source: http://www.fwolf.com/blog/post/336

2007年7月2日星期一

虚拟主机合租事宜-MT(dv)方案

原来的初步方案已经发布有一段时间了,根据大家报名的情况,结合这段时间我集中对国外虚拟主机、合租的资料查询,决心对方案作一些调整,已经报名的和想报名的同学,麻烦都再看一下。

主机供应商的选择

我决定选择MediaTemple(dv)方案,$50/mo的那款。选择这个方案,优点有很多:

  • VPS虚拟服务器方案,不受主机上其他网站的影响。
  • 独立ip,只要大家团结,就不会无缘无故的无法访问(连接reset)。
  • 功能全面,每人都可拥有独立的帐号、控制面板。

缺点也有,主要是价格比较高,只有增加合租人数了。当然人数的增加会带来管理的不便,我想也尽量克服吧,反正我是尽全力来做好这件事情的,希望不会像V2EX那样有些怨言。

如果大家有更好的方案建议,或者优惠码,欢迎提供。

合租人选择条件

  • 拥有自己的独立域名,或者你委屈一下用我的二级域名也可以。
  • 主要放置blog,一些不太耗费资源东东也成,反正资源是按人头分配的。
  • 网站的内容必须符合中国的法律规定,不欢迎政治等敏感内容。
  • 网站中不得有明显违反版权的内容,比如盗版软件、电子书、mp3、注册机等等。
  • 优先选择原创blogger。
  • 优先选择长期稳定运行的网站。
  • 最好对远程主机使用和blog使用有些了解。

对于严重影响其他合租用户的网站,实行劝退方式,希望大家能够和平共处。

服务器环境及主机资源分配及价格

CentOS操作系统,PHP 5(不提供PHP 4),Perl 5.8.5(这两个应该没多少人用吧,最好不要用CGI),Apache 2.0.52,MySQL 4.1.20(注意字符集的问题)。

服务器资源(参见官网(dv)Base报价):
* 256M专属内存
* 20G硬盘空间
* 1TB带宽

价格为$50/mo,一年是$500,由于blog一般都比较节省资源,考虑费用适中所以打算20个人合租。

每人每年费用:$25,或¥200。每人能够拥有1G硬盘空间,50G的月流量。按照Livid总结的日PV能够承受500万,相当高了;其实我怀疑Livid说的500万应该是月PV,即使这样没人每天也能分到1万PV,对大多数网站来说足够了。硬盘空间乍一看比其他虚拟主机少了很多,但你仔细想想,除了专门作下载和图库的,哪个个人网站会没事弄几个G的数据在服务器上传来传去的?

每人域名一个(能否设置多个别名目前未知),数据库至少一个(租了就知道了,dv方案有专门针对合租的考虑,所以不用担心没有数据库的问题,只会多,不会少),ftp,ssh shell,控制面板各一。

中途退出与中途加入,帐号转让

虽然不希望,可这是我们不得不面对的问题,还是事先约定好吧。

中途退出,按使用的整月时间记,每月折算$2.5或者¥20,退还剩余款项;注意如果使用了10个月再退出的话,就不退款了。

中途加入,按到合租截止的整月时间计,每月$2.5或者¥20元;比如我们1月初开始合租,你5月初加入,可以少交纳4个月的费用;如果合租已经开始10个月了你才加入,那么你直接交下一年的费用吧:)。

各位合租用户如果确有需要转让帐号给朋友的话,麻烦告知我一声,变更相应信息和处理相关数据,这样对转让者、受让者都有益。除非是一人退出、一人加入的情况,自行转让费用我不干涉。

费用没有按实际汇率计算,主要是考虑到要承担有人中途退出的风险,包括中途退出和加入的10个月费用折算方式也是基于这一点考虑的。

我提供的服务

  • 技术咨询,内容主要是blog架设和php语言,方式为gtalk或email。
  • 如果你实在不会,我可以帮你把blog架起来,但主题、外观等可视化修改我不管。
  • 自动备份数据,但需要用户自行下载备份数据。

支付方式

支付宝或者贝宝(不是英文paypal,那个取钱手续费高,MediaTemple也没法用paypal支付),帐号都是fwolfcn "圈a" gmail.com。

满15个人支付就开始出手付款租空间了。

报名须知

愿意合租的同学除了付款之外,还请给我发email注明以下几项内容:

  • 您的域名,我会造访看内容是否适合。
  • 您的用户名,用在各类用户分配上。
  • 您打算使用的时间,以年为单位。
  • 您认为合理的费用标准。

已报名同学联系表

Source: http://www.fwolf.com/blog/post/335