I am LAZY bones?
AN ancient AND boring SITE

分类: '经验技巧' 的归档

充分利用磁盘空间,打开ext文件系统的保留区块

今天,吼吼来找我说,他的硬盘,有个分区一共有234G,但是只用了222G,就报满了,无法继续使用了。
其实这个问题,我不久前刚看过一下,只要你仔细看 mkfs.ext3 的man page,就可以知道原因了,其中有这么一句:

也就是说,ext文件系统,包括ext2、ext3、ext4都会默认预留5%的磁盘空间,留给root用户维护系统或者记录系统关键日志的时候使用,这也就是导致普通用户无法使用部分磁盘空间的原因了。
我个人觉得,这个选项用在根分区或者/var之类的分区,还是有一定的必要性的。但是如果是/home、/opt或者干脆是/data之类的数据分区,就显得有点多此一举了。而且,现在的磁盘空间越来越大,5%往往会有10多G,都可以存一部高清了。这么多空间浪费了,是不是太可惜了呢?
于是,就去找相关资料,看能可否在不格式化的情况下改变保留区块的大小。
吼吼找到了这个,比我想像得还要简单,甚至都不需要umount分区,就可以进行修改。
具体操作过程如下,已经加了详细注释:

看到了吧?就一眨眼的功夫,我就多了3G多的空间,哈哈。而且我还不是直接完全去掉保留区块呢,也留了百多兆以防不时之需呢,呵呵。
算了一下,吼吼那个3.4T的磁盘阵列,省出来的空间居然比我的整个硬盘都大。嗨。。。

nginx 对某些 User_Agent 进行限速的方法

本文为nginx 禁止某个 User_Agent 的方法的姊妹篇,不知所云的话,建议先看看这文。
由于之前已经将某个特别疯狂的迅雷的User_Agent给封掉了,所以最近一段时间,我的那源服务器也运行地比较稳定,但是今天,Linux Deepin 9.12正式发布了,由于我给Deepin做了一个iso的镜像,所以服务器又经历了一个访问高峰,如下图:

从这里也可以看出Linux Deepin的受欢迎程度,哈哈。
可以看到从11:00以后,100M的带宽就已经被完全撑满了。。。一看日志,大部分又是迅雷干的,但这次迅雷不是用某个特定的UA来访问了,而是各有变化,但是却都包含MSIE,哈哈。
当然IE用户直接访问的话,也会有这个MSIE,但是没办法,为了保全Ubuntu APT-HTTP的合法权益,只能限制一下MSIE了。
但是怎么限制呢?总不能人家用MSIE的连主页面都打不开吧?哈哈,最好的办法就是限速,于是,有了这个配置:

让我们邪恶的看一下效果,哈哈:
wget的默认UA的时候:

UA里含有MSIE的时候:

某个该死的特定UA:

从上图也可以看到,做了这个设置以后,从14:00左右开始,服务器的流量虽然还是比较大,但是已经趋于正常了。
所以,偶尔要从我源里下东西的同学,可以用firefox直接下载,也可以用axel或者wget之类的工具下,但是千万别用IE相关的工具,不然,后果自负,哈哈~

简单的WP备份脚本

现在,写blog的人是越来越多了;这部分人里,自己建站的也越来越多了;又在这部分人里,用WP来建的也越来越多了。
而建过站的人,都知道备份的重要性。但是手工备份又显然太麻烦了,所以我写了这个脚本来自动备份,放cron里以后,基本上就不用去关心什么了,哈哈,不过在加crontab的时候,要注意用户,如果是用root跑,可能会因为读不到当前用户的key而备份失败哦。
条件是你的空间支持ssh登录,并且事先做好了rsa公钥,登录的时候不需要输入密码。
此脚本会生成两个文件,一个是文件的打包,一个是数据库的打包。上脚本吧:

PS: 稍作修改应该也可以用于非WP的blog系统。

在ubuntu下架设rsync和ftp服务

还是因为我的那个ubuntu源,之前只能以http方式访问,看到很多源也同时提供ftp和rsync的访问方式,我也就学着架设了一个。

先说说ftp方式,这个比较简单,参照官方源,我用的也是vsftpd。这个在ubuntu下几乎是不用配置就可以跑了。大致就是:

这样就完全可以了,如果你还想修改一下人家登录的时候的欢迎信息的话,编辑 /etc/vsftpd.conf ,将里面的 ftpd_banner= 解除注释,并将你要的信息填在后面。
其实这个配置文件还有很多其他选项可以修改,诸如是否允许匿名登录、写权限之类的,需要的话,自己 man vsftpd.conf 好了。

再说说rsync的服务端配置,我发现网上的那些中文教程用在ubuntu下都是会有问题的。
在ubuntu下,这个rsync的服务端和客户端似乎是一个东西,也就是没有rsyncd这个包了,所以也就不需要安装额外的包了,只需简单配置一下,并启动就可以了。
参照 man rsyncd.conf 的提示
建立一个 /etc/rsyncd.conf 文件,内容如下:

其中 motd file 应该是可选的,如果写上了,就需要再建立一个 /etc/rsyncd.motd 的文本,写入欢迎信息,有空的话,还可以搞个帅帅的ASCII art哦。
上面的两行是全局的配置,下面中括号里的是模块名,以下的配置都是模块级的。可以同时指定多个模块。
配置好了以后,执行

rsync应该就启动了,另外可以在 sysv-rc-conf 里确保启动的时候就开启了rsync服务。

现在也可以通过以下方式访问SRT ubuntu mirror了:
rsync://ubuntu.srt.cn/ubuntu
ftp://ubuntu.srt.cn/ubuntu/

linux真的很安全么?

写这篇文章是因为看到了cnbeta上最近接二连三地出现类似这篇的文章。
虽然我还是认为此文的作者多少还是有点标题党,因为那个 ./a 其实可以是任何东西,这样就说是“一个命令”也太无聊了点。但是我在公司的RHEL4的服务器上试验了之后,确实可以非法提升权限。不免有点担忧。
于是我顺藤摸瓜,在那个提供hack代码的网站上不费吹灰之力,就找到了3个能非法提升root权限的程序,而且这几个程序是一周内公布的,所以相信真要找的话,还能找到很多,何况还有人家未公布的呢?
不过大家也不用太担心,这些程序都有个共同点,见到的最厉害也只能危及2.6.27的内核,而现在的内核都是 2.6.30/31 的时代了。
但是,我公司的2.6.9-55.ELsmp内核的EHRL4服务器就遭殃了,3个程序都中招了,这就说明了保持更新的重要性。一般这种服务器更新都会比较谨慎,有时候甚至无人去管理更新的事情,而且大多都是开着ssh的,这样的linux其实一点都不安全,我就见过一台服务器,老出这样那样的怪问题,最后我去看的时候,大部分/bin和/usr/bin下的常用可执行文件都已经被修改过了,文件的时间也都是一样的,而且正是这个时间开始才反常的。究其原因,正是因为这台公网IP的机器开着SSH,而且root密码还是无敌的“123456”。。。这样,即使那机器本身没有什么重要的文件,一旦被攻陷,损失和麻烦还是不少的,更何况局域网的其他机器也会受到牵连。
在这里,有必要给大家几点建议,做到以下几点linux才能真正安全一些

  • 提高安全意识,不要认为装了linux就可以高枕无忧了,安不安全其实还得靠人。我觉得这点正是最重要的。
  • 如果非得开ssh,一定要装上denyhosts(不知道为什么这个也要墙掉,无语了),denyhosts可以帮你有效地避免被ssh暴力破解。
  • 最好像ubuntu默认的一样,禁用root账号,不然的话,至少禁止root直接ssh登录,因为人家在不知道你用户名的情况下,一般的都是用root来暴力破解的
  • 不要使用弱密码,这点似乎总有人会犯错。。。
  • 始终保持更新,可以避免上面说到的情况。
  • 谨慎执行来历不明的二进制文件,尤其是需要sudo的。开源的才是最安全的。
  • 不要贪图方便,时不时大面积地 chmod -R +x xxxx ,尤其不能 chmod -R 777 xxxx

先这么多了,有其他再补充。。。

gentoo也可以提示未安装的命令

用ubuntu的时候,如果你在命令行里输入一个未安装的命令,bash会给出很人性化的提示,让你先安装xxx软件包,比如:

其实gentoo下也是可以做类似提示的.
gentoo早就已经默认是 bash 4.x 了,这个版本的bash,在找不到命令的时候,会试着调用 command_not_found_handle 这个函数,也就是说,只要你在什么地方定义了这个函数,就可以实现人性化的提示.再联想到之前我整的e-file,一切都是这么简单,哈哈~
在 ~/.bashrc 里加上如下几行:

当然,这之前肯定要先安装e-file,如果你已经加了gentoo-china的overlay,可以直接 emerge e-file
最终效果贴个图(我是gnome,没装kdevelop):
command_not_found_handle效果图

关于分区和引导也许你不知道的杂七杂八

1.用gparted把一个110G的ext3分区,缩小到78G(实际使用的空间只有20G左右),需要用2个多小时.可能和已使用的空间无关?空白区域也复制了一遍?
2.用gparted把ext3分区缩小以后,其uuid是不会变的.
3.备份主引导扇区的方法:

注意:这512字节的东西里,不仅备份了MBR(前446字节)也备份了分区表,所以如果你备份完了以后,又改变过分区,再用老的512字节来恢复的话,后果可能比较严重.
4.所以,恢复MBR(比如重装过windows的时候要用到)的方法是:

这里的ba=应该是446字节,而不应该是512字节,除非你确认和备份的时候的分区完全一致.
5.但是用如上命令恢复完了以后,分区激活标志(也就是gparted里面看到的boot标志),是不会变的(因为这属于分区信息,是位于446~512字节的),所以也许grub菜单还出不来,需要用gparted重设一下标志位.如果第4步中的bs=改成512应该不会有此麻烦,当然如果你理解了上面的文字,就会明白我还是推荐用446的.
6.grub2的配置文件是 /boot/grub/grub.cfg (相当于grub时代的menu.lst),这个文件是 /usr/sbin/update-grub 根据 /etc/grub.d 里面的脚本自动生成的,所以不推荐直接修改 /boot/grub/grub.cfg ,而是修改 /etc/grub.d 里的相应文件,要禁用某个文件,只需要 chmod -x nn-xxx 就可以了.改完后执行 update-grub 即可看到grub.cfg被更新了.
以上东西是bones7456根据实际操作经验总结得出的,水平有限,并不能保证正确性和适用性,而且还有比较危险的dd命令.因此操作时请务必小心,万一丢失数据可别来找我,哇卡卡…

访问Vbox的guest系统的方法

相信很多linuxer都用过Vbox,拿来虚拟个win或者其他的系统,很方便,用着感觉也很不错,只是今天我遇到了一点点麻烦.
我想在host里访问guest的80端口,比如在guest里跑了个apache之类的.
我的host的IP是192.168.6.239,一看guest的IP是10.0.2.15,vbox里设置的连接方式是NAT,在guest里上局域网和公网都正常,但是在host里却ping不通guest的IP…也就是host和guest的通信是单向的…
后来查了下资料,才明白原因,要实现双向通信,需要在host里虚拟一个网络设备(也就是虚拟网卡),然后通过桥接的方式将host的虚拟网卡和guest的网卡相连,就像以前用的vmware的bridge模式一样,默认就给你生成几个虚拟网卡,但是vbox却不是这样做的,它需要自己添加.具体操作方法可以参见这里这里.
步骤还是比较繁琐的,所以我用的就不是这个办法,而是另一个比较快捷的办法,当然快方法也有坏处,就是只能访问guest的一个端口,刚好,我只需要它的80端口.
步骤:用文本编辑器打开 ~/.VirtualBox/Machines/机器名/机器名.xml
然后在ExtraData那节下面添加以下三行:

这3行,相当于吧guest的某个端口映射到了host的端口. 其中 guestweb 可以替换成想要的名字.第二行的value数字,就是guest的端口号,第三行的value数字就是host的端口号.
这样启动guest以后,就可以访问 http://localhost:50000 了,哈哈.
以上方法在Vbox 2.1.4 版本试验通过.

========090409 21:00 更新========
好吧,我承认我火星了一回,其实只要 modprobe vboxnetflt 以后,再在网络连接里选 host interface,就相当于vmware的桥接了.
这样guest就能得到和host一样的IP段,并且host也可以直接访问guest.
但其实这方法也是有缺陷的,比如我之前用的是host的eth0,把guest休眠了以后,到了家里,host改用wlan0了,结果guest就没有网络连接了….
哈哈,所以我那方法还是有一定的用处的.到底用哪种,就自己决定吧~

一个命令把几千张照片压缩了

数码相机拍的照片,已经积累了很多个G了,于是就都备份到光盘里保存了,但是怎么处理硬盘上的数据呢?rm之觉得可惜,毕竟光盘没有那么方便,不能随时查看,但是放着又太大太浪费硬盘空间了,现在的相机一张都有3~4M的.我能想到的最好的办法,就是把每张照片压缩以后,把小图片留在硬盘上,这样即可以快速查看,又不是很浪费硬盘空间,于是有了这个命令:
注意此命令会删除当前目录及子目录下的所有jpg文件,最好是理解以后,再执行

把当前目录及子目录下的所有 xx.jpg 压缩成横竖分辨率都为原尺寸的30%的 xx_.jpg 文件.对于我的相机来说,压缩后的大约800*600的大小对于屏幕浏览来说已经足够了,而每张300K左右的尺寸也很经济.
没有convert命令的同学需要检查是否装了 imagemagick 包.
PS:真庆幸自己没在用windows了,如果是win下,估计又得上网找所谓的”绿色版图像批处理软件”了,问题是:即使找到了,能完全合我的心意吗?称心了,要找注册码吗?找到注册码了,确定不含木马病毒吗…Orz

推荐:vim使用进阶

既然在linux下混,我觉得emacs和vim里,至少得会一样.
因为我比较懒,emacs这类神的编辑器,是不太会用了,所以只能用编辑器的神──vim了.
但是一直以来,自己的vim水平还是仅限于会hjkli之类的水平,所以我自己也快看不下去了.
刚好在这个时候,发现了这篇好教程:Easwy写的vim使用进阶.
只看了前面几章,就深知这是个能造福大家的好教程.内容翔实而不肤浅,描述细致而不累赘.相信看完之后,定能让读者举一反三,进化为vim老鸟~所以,在此推荐给大家.同时感谢一下Easwy的辛勤劳动.