使用匿名用户登录vsftpd服务器时提示:500 OOPS: vsftpd: refusing to run with writable anonymous root

这个错误是由于你为FTP的根目录赋予了777权限,vsftpd的安全机制是不允许这种“不安全”的操作的,解决办法自然是对其稍稍进行一些限制啦。

[root@localhost ~]# chmod 755 /var/ftp

但此文件夹的所有者是root用户的,那如果又想让匿名用户具有上传权限要怎么做?
可以在/var/ftp目录下面再新建一个目录并赋予其777权限。总之,只要/var/ftp这个目录的权限不瞎改,其下面的其他文件或文件夹的权限可以随意~
还有,在/etc/vsftpd/vsftpd.conf配置文件中有一条:

anon_root=/var/ftp

这个选项是用于定义匿名用户的默认文件夹的,此选项的参数必须是和/etc/passwd文件中ftp用户的家目录一致,否则也会出现本文中所述的错误。

中国万网正品虚拟主机代购-本人自营

中国万网是国内最大的域名主机提供商(现被阿里巴巴旗下的阿里云计算子公司收购,其是国内最大的云计算提供商)。
中国万网的品牌历史悠久质量相当靠谱,其产品基本代表了国内虚拟机的最高品质,相应的售价也是高的离谱~
还好,这个世界上有一种价格叫做“代理价”,它总是会比“官网价”便宜那么一丢丢~我这里代购的中国万网虚拟主机平均优惠40%!!!
注:下文中展示的是原中国万网“云虚拟主机”系列产品,自中国万网被阿里云收购后此线产品已经被下架,但依然可以通过代理渠道购买,且可正常续费。所有产品均为官方正版,使用中国万网自主研发的虚拟主机控制面板,可打阿里云客服电话查询真伪。
如需备案,可访问http://beian.aliyun.com享受阿里云官方的免费备案服务(需购买中国万网或阿里云的产品才可享受)。
购买联系QQ:1642491905,可走淘宝~

CentOS 6下创建和管理软RAID

RAID介绍:
磁盘阵列既本文中所讲的RAID,其具有提高磁盘操作效率及容错的功能。RAID分为硬RAID和软RAID,硬RAID是基于磁盘阵列卡的,而软RAID则是使用软件管理,本文中所述的RAID属于软RAID。
各个RAID类型的简单介绍:

RAID0:至少需要两块磁盘,提高读写性能,没有容错能力。磁盘利用率为:100%
RAID1:至少需要两块硬盘,镜像数据,具有容错能力,读的性能提升,写的性能下降。磁盘利用率为: 50%
RAID4:至少需要三块硬盘,允许一块出错,读写性能提升。磁盘利用率为: (n-1)/n
RAID5:至少需要三块硬盘,允许一块出错,读写性能提升。磁盘利用率为: (n-1)/n
RAID6:至少需要四块硬盘,允许两块出错,读写性能提升。磁盘利用率为:(n-2)/n
RAID10:至少需要四块硬盘,允许不同组内各坏一块盘,读写性能提升。磁盘利用率为:50

环境准备:
本文中使用VirtualBox虚拟机,你也可以使用VMware的虚拟机。虚拟机中安装好CentOS 6.5版本后,添加四块大小为10GB的SCSI硬盘,此处硬盘接口类型可随意。

软件包安装:

# yum install -y mdadm           //mdadm是Linux下的软RAID管理程序。

软RAID创建方法:
查看刚刚添加的硬盘。

# lsblk


若刚才添加的硬盘不显示,则重启系统后再次查看,重启命令如下。

# reboot

下面我将带你创建一个RAID10来了解CentOS 6下软RAID创建和管理的流程。
RAID10是RAID1和RAID0组合在一起的一种形式,兼具两者的优点,在企业中比较常用。制作时先做RAID1再做RAID0,如下图中就是本例中的RAID10的创建方案。结合图片可以很容易理解,RAID10就是两组高可靠的RAID1被使用RAID0组合在一起增加了性能。

具体步骤如下。
一、先为每块硬盘新建一个分区,并将分区类型修改为RAID。此处需注意的是:加入到同一个RAID的不同硬盘上的分区的大小最好相同,否则以容量最小的分区的容量作为同一RAID在所有硬盘上的可用容量,其余空间则浪费掉。
这里只以/dev/sdb为例说明,其余硬盘按照需求参考此步骤操作即可。
使用fdisk工具编辑/dev/sbd硬盘的分区表,本例中为每块硬盘创建1个主分区,每个主分区使用全部硬盘空间。

# fdisk /dev/sdb

fdisk工具的使用方法这里不做详细说明,如需了解可参考此篇文章。

Linux下使用fdisk工具为硬盘分区


查看划分完的分区。

二、将分区类型修改为RAID,默认为Linux。
在fdisk程序中输入t,随后会要求你输入要将分区更改为的类型的代码,并提示可以输入L或list列出所有可选的类型的代码。

注意,如果硬盘中存在多个分区(本例中一块硬盘只有一个分区),那输入t后还会要求你输入要更改分区类型的分区的编号,如下图中,我选择为1号分区更改分区类型。

输入L,查看所有可选类型。

如上图红色箭头标记的,我们要将分区类型修改为Linux raid auto,输入他的代码:fd,而后会弹出一个修改成功的提示。

将所有硬盘的所有分区都按照如上步骤修改其分区类型。
全部修改完后,查看所有磁盘。

# lsblk


上图中,可以看到每块硬盘下都有我们刚刚新建的分区,若你看不到分区也不用着急,可以执行下面的命令后再次查看。

# partprobe     //使系统内核立即读取新的分区表信息

若Shell提示找不到partprobe命令则可以参考此篇文章解决。

CentOS 6找不到partprobe命令的解决方法


三、使用mdadm工具创建并管理软RAID
使用mdadm工具将/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde这四块硬盘组建成RAID10。

# mdadm -C /dev/md10 -a yes -l 10 -n 4 /dev/sd{b,c,d,e}1    //不要看命令好长就觉得头晕,可以结合下面的命令参数解释来试着理解这条命令中每一部分的含义。

执行后,返回信息提示已经成功创建。

在组建RAID时若弹出以下提示是警告你:软RAID不能用作启动盘,是否还继续创建软RAID,输入“y”确认即可。

若出现下图这种提示是因为磁盘之前做过一次RAID,也输入y确认。

以下是mdadm工具各个参数的详细说明:

-A 装配模式    //暂时没搞懂是怎么用的,如果你知道的话欢迎留言。
-C 创建模式
创建模式专用选项:
-n 用于创建RAID设备的个数
-x 热备磁盘的个数
-l 指定RAID级别
-a 参数值:yes(自动为创建的RAID设备创建设备文件)
-c 指定块的大小,默认为512KB
-F FOLLOW 监控
-S 停止RAID
-D 显示阵列详细信息
例如:
# mdadm -C /dev/md10 -a yes -l 10 -n 4 /dev/sd{b,c,d,e}1    //此条命令就是本文中创建RAID10的命令,现在可以结合参数的帮助文档来理解啦!
管理模式命令:
-f 将一块硬盘标记为损坏
-r 移除设备
-a 添加新设备
例如:
# mdadm /dev/md0 -a /dev/sdb1     //这里将/dev/sdb1这块硬盘从RAID10中移除。

需要注意的是,使用mdadm工具组建完软RAID后要将其写入到RAID配置文件中,否则系统重启后RAID设备的名称会变为默认的md127,而非之前指定的md10。

# mdadm -Ds > /etc/mdadm.conf

查看刚刚创建的RAID10的信息。

# mdadm -D /dev/md10


四、为RAID设备指定文件系统。
这里我将其格式化为ext4文件系统。

# mkfs.ext4 /dev/md10

五、挂载磁盘

# mount /dev/md10 /mnt

也可以将其写入到/etc/fstab文件中,使其开自动挂载。

# vim /etc/fstab


 

CentOS 6找不到partprobe命令的解决方法

今天在做CentOS 6下的软RAID时需要使用到partprobe命令使系统内核立即读取新分区,但悲催的是,最小化安装版的CentOS 6是没有这一命令的,百度搜了半天也没搜到解决办法,后来我索性查看了下我网站服务器的CentOS7上有没有这一命令,咦,我狗屎运就是好,还真查到了,赶紧查看了下这个命令属于哪一软件包。

[root@localhost ~]# rpm -qf /sbin/partprobe    //此命令是在可以使用partprobe命令的Linux服务器上执行的,不要傻傻地在自己的系统上试~
parted-3.1-28.el7.x86_64

唔,原来,想使用partprobe命令就要安装parted这个软件包呀!
那就安装呗。

yum install -y parted     //在你的系统上安装这个软件包就可以用partprobe命令啦!

大功告成后就会发现partprobe命令已经可以使用啦!

一个惨案,让我重新认识到数据备份的重要性。

今天上午,强迫症的老毛病犯了,写写博客突然觉得,咦这网站怎么这么慢呀!!!
不行,我非得给他优化优化,先是登入服务器,把MySQL和PHP能开的缓存全给开了,又给网站做了个动静分离,将静态文件放到CDN节点上。
然而,这网站怎么还是这么慢阿!!!
肯定是我网站运行时间久了,数据库里的冗余数据太多,还有就是网站有很多无用的功能会拖慢速度,我得给数据库清理清理~能关的花哨功能统统关掉~~~~注:此时洁癖的老毛病也犯了,其实我网站的数据库加上索引一共才5MB左右,简直是微型,即便有垃圾数据也完全不会影响性能,根本用不到优化。。。
在网上随便找了个网站优化工具,一顿乱优化之后~刺激了,我博客文章里面的引用链接显示不正常了,变得不伦不类的~哇,头好方,我好怀念它曾经的模样~不行,数据回滚吧,我要回到“优化”前。
因为之前在服务器上有运行过脚本,每天都会增量备份网站文件及数据库到阿里云OSS存储上,所以我很淡定的登录阿里云打算将备份数据下载下来,然而,现实总爱和我开玩笑。。。
因为增量备份只会将新增及更新过的文件上传到OSS,而并不会将本地删除过的文件也从OSS上删除,这会导致OSS上的文件体积越来越大,也不利于网站文件的恢复。所以我自作聪明地为OSS上的文件设置了文件的生存周期,按照设定,每7天OSS会自动删除存储内的所有文件。而今天正好是OSS删除七天前上传的文件的日子。。。我只能说,人点背的时候,喝凉水都塞牙缝。。。
还好,数据库因为是每天整体备份而非增量备份,昨天的数据还能找到,至于网站程序,,,我只能很无奈的重新部署了,整整一个上午被浪费在部署和调试网站上,时间成本不可谓不大。比较庆幸的是,今天是网站程序的备份文件没了,如果是数据库的数据备份没了,那我真的哭都没处哭。
数据安全,重中之重,一定要勤备份!勤备份!勤备份!数据安全不仅仅要考虑存储硬件的容错性,更要为日后的数据回滚多做准备!!!
事后,我果断将曾经的文件增量备份修改为整体打包备份,虽然这样会消耗很多服务器资源,但为了数据安全,值了~~~

MySQL基本命令介绍

关于本篇文章:
本文中只包含最常用的MySQL命令,也是应该全部掌握的MySQL命令,我将以一个简单的案例来对这些命令做简要说明。
MySQL介绍:
MySQL是优秀的开源关系型数据库,最初由瑞典MySQL AB 公司开发,目前属于Oracle旗下产品。
基本数据库管理命令介绍:
注:以下内容中的“mysql>”为MySQL客户端的命令提示符标志。另外,MySQL命令建议使用大写字母来书写,因为我个人习惯的问题,本篇文章中采用小写。
创建一个名为db_name的数据库。

mysql>create database db_name;

查看当前已存在的数据库。

mysql>show databases;

MySQL返回信息:

创建一个新用户,user_name,密码为ibadboy.net。

mysql>create user user_name@localhost identified by "ibadboy.net";

设置用户权限,使其对db_name数据库拥有全部权限。

mysql>grant all privileges on db_name.* to user_name@localhost identified by "ibadboy.net";

查看刚刚添加的用户。

mysql>select host,user from mysql.user;


查看user_name用户所拥有的权限。

mysql>show grants for user_name@localhost;


使用新添加的user_name用户重新登录数据库 。

[root@localhost ~]# mysql -u user_name -p

选择db_name数据库,其后的建表查表以及插入数据等操作都会在此数据库下进行。

mysql>use db_name;

创建一个名为user的表,其拥有三个字段,分别是ID(int型)、name(char型)、password(char型),其中ID是主键且可自增。

mysql>create table user(ID int auto_increment primary key,name char(10),password char(64));

查看数据库中已有的表。

mysql>show tables;

MySQL返回信息:

查看user表的结构。

mysql>desc user;

MySQL返回信息:

向user表中插入两行数据。

mysql>insert into user values(0,'myuser1','123456'); 
mysql>insert into user values(1,'myuser2','654321');

查看user表中所有字段的数据。

mysql>select * from user;

MySQL返回信息:

只查看user表中的name字段的数据。

mysql>select name from user;

MySQL返回信息:

更新user表中的name字段中的“myuser1”为“admin”,where关键字后面是替换条件。

mysql>update user set name='admin' where name='myuser1';

再次查看user表中的name字段发现“myuser1”已变为“admin”。

向user表中插入字段sex(varchar型)。

mysql>alter table user add sex varchar(6);

查看user表的表结构,可以发现,sex字段已加入其中。

查看user表中的数据。

此时,在之前插入的两行数据中,sex字段的值都是NULL(空值),现在我分别在其中插入“male”和“female”两个值。这里以主键“ID”来作为替换条件,以此达到只修改sex字段在某一行的值的效果。

mysql>update user set sex='male' where ID=0;
mysql>update user set sex='female' where ID=1;

查询user表中sex字段的值,已经变成了预想的样子。

在user表的“password”字段的后面插入一个字段“age”,类型为int。其中,after关键字后面指定的是新加字段要跟随的字段。

mysql>alter table user add age int after password;

查看user表的表结构,age字段已添加至指定位置。

基本的数据库操作就这些,下面我将一步步的删除掉我们刚刚添加的字段、表及数据库。
先删除“age”字段。

mysql>alter table user drop column age;

查看表结构,字段已删除。

删除user这个数据表。

mysql>drop table user;

查看数据库中已有的表,因数据库已空,所以这里没有列出任何内容。

删除db_name数据库。

mysql>drop database db_name;

查看当前已存在的数据库,发现此时db_name已被删除。

切换到MySQL的root用户身份上,删除user_name用户。

mysql>drop user user_name@localhost

ABR与ASBR的区别

ABR(区域边界路由器):位于一个或多个OSPF区域边界上、将这些区域连接到主干网络的路由器。ABR被认为同时是OSPF主干和相连区域的成员。因此,它们同时维护着描述主干拓扑和其他区域拓扑的路由选择表。
ASBR(自治系统边界路由器):ASBR位于OSPF自主系统和非OSPF网络之间。ASBR可以运行OSPF和另一路由选择协议(如RIP),把OSPF上的路由发布到其他路由协议上。ASBR必须处于非存根OSPF区域中。

Linux下使用SSH客户端连接Linux服务器提示:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!的解决方法。

问题描述:
Linux下使用SSH客户端连接Linux服务器的时候抛出类似如下错误。

产生原因:
这是因为之前连接过一台与当前连接的Linux服务器使用相同IP但公钥不同的Linux服务器。系统中已经存储了此服务器的公钥,故再次连接时发现公钥变更,ssh客户端主动拒绝了连接。
解决方法:
清空~/.ssh/known_hosts文件,此文件中存放SSH客户端曾经连接的服务器的公钥信息。
echo “”> ~/.ssh/known_hosts
再次连接Linux服务器,SSH客户端会重新询问是否要接受服务器的公钥。

交换机中使VLAN永久UP的方法

在做交换机实验的时候,可能会需要ping一个VLAN接口来做连通性测试,但VLAN中的端口必须连接设备之后VLAN才会是UP状态,那如何才能不连接设备还能方便的测试连通性呢?

S4600-28P-SI(config)#vlan 200
S4600-28P-SI(config-vlan200)#sw int e1/0/5-6
Set the port Ethernet1/0/5 access vlan 200 successfully
Set the port Ethernet1/0/6 access vlan 200 successfully
S4600-28P-SI(config-vlan200)#int e1/0/5
S4600-28P-SI(config-if-ethernet1/0/5)#loopback  //此处,将VLAN中的某个端口配置为loopback端口,使其永久UP
S4600-28P-SI(config-if-ethernet1/0/5)#
%Jan 01 00:07:48 2006 %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet1/0/5, changed state to UP
%Jan 01 00:07:49 2006 %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan200,changed state to UP
S4600-28P-SI(config-if-ethernet1/0/5)#int vlan 200
S4600-28P-SI(config-if-vlan200)#ip add 192.168.200.1 255.255.255.0
S4600-28P-SI(config-if-vlan200)#sho ip int b
Index Interface IP-Address Protocol
11001 Vlan1 unassigned down
11200 Vlan200 192.168.200.1 up
17500 Loopback 127.0.0.1 up

测试VLAN200接口是否可以ping通。

S4600-28P-SI#ping 192.168.200.1
Type ^c to abort.
Sending 5 56-byte ICMP Echos to 192.168.200.1, timeout is 2 seconds.
!!!!!    //已ping通
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/0 ms
S4600-28P-SI#

可以ping通,则目的达成。

此时,观察交换机端口的指示灯,可以发现,即便没接网线,其依然会神奇的亮起来。

交换机端口安全与AM的区别

开启端口安全后,此台主机只能与绑定其MAC地址的端口通信,但绑定了其MAC地址的端口依然可以与其他主机通信。
而开启AM后,只有端口的AM地址池中存在其MAC地址的主机才可以与端口通信,且主机的IP也必须与池中绑定的相同,被加入到某一端口的AM地址池中的主机依然可以同其他未开启AM的端口通信。

Apache配置HTTPS访问

介绍:

HTTPS协议是加密后的HTTP协议,浏览器和服务器间的通信被加密传输,有效的防止了网页劫持并保护了用户的数据安全。HTTPS加密会使用到SSL证书,本例中使用OpenSSL这个开源软件来生成SSL证书做测试用。网站正式上线后需去专门的CA机构申请SSL证书,自己生成的证书是不被浏览器信任的。

安装软件:

[root@localhost ~]# yum install -y openssl       //安装OpenSSL软件包用于生成SSL证书,此软件包通常已随系统默认安装。
[root@localhost ~]# yum install -y httpd         //安装Apache。
[root@localhost ~]# yum install -y mod_ssl       //安装Apache的SSL加密模块。

生成证书:

使用OpenSSL在/etc/httpd/ssl目录下生成一个自签名证书(存储位置随意)。

[root@localhost ~]# mkdir /etc/httpd/ssl       //创建SSL存储文件夹
[root@localhost ~]# openssl req -newkey rsa:2048 -nodes -keyout /etc/httpd/ssl/ssl.key -x509 -days 365 -out /etc/httpd/ssl/ssl.crt       //生成SSL证书文件

随后程序会依次要求输入所在的国家、地区、城市等等的信息,因为我们是做测试用的,这里全部直接回车即可。但是在下图中红色箭头所指的位置上要填上启用HTTPS的站点的域名,否则客户端浏览器可能会因为签名域名和站点实际域名不同而断开链接。

查看刚刚生成的证书。

[root@localhost ~]# ls /etc/httpd/ssl/

其中,.crt文件是证书文件,.key文件是私钥文件。

Apache配置部分:

配置Apache的ssl.com子配置文件,此配置文件必须是安装过mod_ssl模块才会有。

[root@localhost ~]# vim /etc/httpd/conf.d/ssl.conf

我看到网上很多教程说,在修改/etc/httpd/conf.d/ssl.conf子配置文件前还要在/etc/httpd/conf/httpd.conf主配置文件中引入mod_ssl模块。这里特殊说明一下,在CentOS 6.5下/etc/httpd/conf.d/ssl.conf子配置文件中就已经引入了mod_ssl模块,不需要再另外引入,另外,此配置文件中也默认开启了对443端口(HTTP使用80端口传输,HTTPS使用443端口传输)的监听。

本例中修改成如下图所示,“*”代表监听所有IP地址,虚拟主机所使用的域名必须使用DNS服务器解析到Apache服务器的IP上。

在105行和112行找到下图中的选项,将这辆个选项的参数修改为证书文件及私钥文件的存储位置。

创建网站首页文件。

[root@localhost ~]# echo 'hello,world!' > /var/www/html/index.html

如果在启用HTTPS访问的同时还要禁止HTTP访问可以做如下修改。

编辑Apache主配置文件。

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

方法1:暴力修改法。

转到第136行左右位置将监听80端口的选项直接禁用掉,这将会影响主配置文件中所有的虚拟主机。

修改后如图。

方法2:将需要禁用HTTP访问的虚拟主机配置信息删掉即可,如下图就是一个监听80端口(HTTP使用80端口)的虚拟主机配置信息。

最后,保存配置文件,并在保证防火墙及selinux均已关闭的情况下重启Apache。

[root@localhost ~]# service httpd restart

测试:

此时,通过HTTP协议已无法访问网站。

HTTPS协议正常访问网站,但浏览器会提示证书错误,因为是自签证书所以并不会被浏览器所信任,此处可不予理会。