Linux软连接和硬链接

1.Linux链接概念
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

2.通过实验加深理解
[oracle@Linux]$ touch f1          #创建一个测试文件f1
[oracle@Linux]$ ln f1 f2          #创建f1的一个硬连接文件f2
[oracle@Linux]$ ln -s f1 f3       #创建f1的一个符号连接文件f3
[oracle@Linux]$ ls -li            # -i参数显示文件的inode节点信息
total 0
9797648 -rw-r–r–  2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r–r–  2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 f3 -> f1

从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。

[oracle@Linux]$ echo “I am f1 file” >>f1
[oracle@Linux]$ cat f1
I am f1 file
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
I am f1 file
[oracle@Linux]$ rm -f f1
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
cat: f3: No such file or directory

通过上面的测试可以看出:当删除原始文件f1后,硬连接f2不受影响,但是符号连接f1文件无效

3.总结
依此您可以做一些相关的测试,可以得到以下全部结论:
1).删除符号连接f3,对f1,f2无影响;
2).删除硬连接f2,对f1,f3也无影响;
3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。

 

完!

CentOS 源码编译安装Pure-FTPd

1、找到最新版本的PureFTPd

去网站http://download.pureftpd.org/pub/pure-ftpd/releases/我们找到最新版本的的下载链接是http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.32.tar.gz。

2、下载并安装

cd /usr/local/src
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.29.tar.gz
tar -zxvf pure-ftpd-1.0.29.tar.gz
cd pure-ftpd-1.0.29
./configure
make
make check
make install
如需了解configure的更多选项请看http://download.pureftpd.org/pub/pure-ftpd/doc/README
软件已经被安装到 /usr/local/sbin/pure-ftpd,我们只需执行以下代码即可启动PureFTPd。

/usr/local/sbin/pure-ftpd &
3、开机启动PureFTPd

cp contrib/redhat.init /etc/init.d/pure-ftpd
chmod 755 /etc/init.d/pure-ftpd
chkconfig –add pure-ftpd
chkconfig –level 3 pure-ftpd on
4、配置文件

cp configuration-file/pure-ftpd.conf /etc
cp configuration-file/pure-config.pl /usr/local/sbin/pure-config.pl
chmod 744 /etc/pure-ftpd.conf
chmod 755 /usr/local/sbin/pure-config.pl
现在编辑配置文件。

vi /etc/pure-ftpd.conf
设置成以下值。

UnixAuthentication yes
#MinUID 100
UnixAuthentication yes表示系统用户可以登录FTP。
MinUID 100表示用户的ID大于100才能登录,我们注释掉它,任何的用户ID都能登录了。

5、启动和停止PureFTPd

service pure-ftpd stop
service pure-ftpd start
service pure-ftpd status

ftp的端口号20、21有何区别

一个是数据端口,一个是控制端口,控制端口一般为21,而数据端口不一定是20,这和FTP的应用模有关,如果是主动模式,应该为20,如果为被动模式,由服务器端和客户端协商而定

FTP Port模式和FTP Passive模式

当你对一个FTP问题进行排错时候,你首先要问的一个问题是使用的是port模式的还是passive 模式。因为这两种行为迥异,所以这两种模式引起的问题也不同;在过去,客户端缺省为active(port)模式;近来,由于Port模式的安全问题,许多客户端的FTP应用缺省为Passive模式。

>>2.1 FTP Port模式

Port模式的FTP步骤如下:

1、 客户端发送一个TCP SYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端使用暂时的端口作为它的源端口;

2、 服务器端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口;

3、 客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个连接来发送FTP应答;

4、当用户请求一个列表(List)请求或者发起一个要求发送或者接受文件的请求,客户端软件使用PORT命令,这个命令包含了一个暂时的端口,客户端希望服务器在打开一个数据连接时候使用这个暂时端口;PORT命令也包含了一个IP地址,这个IP地址通常是客户自己的IP地址,而且FTP也支持第三方(third-party)模式,第三方模式是客户端告诉服务器端打开与另台主机的连接;

5、服务器端发送一个SYN包给客户端的暂时端口,源端口为20,暂时端口为客户端在PORT命令中发送给服务器端的暂时端口号;

6、 客户端以源端口为暂时端口,目的端口为20发送一个SYN ACK包;

7、 服务器端发送一个ACK包;

8、发送数据的主机以这个连接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式发送(一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要对方进行ACK确认(注:因为TCP协议是一个面向连接的协议)

9、当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以ACK确认;

10、客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器同样也发送它的FIN,客户端用ACK来确认。

下图图示了FTP PORT模式前几步步骤:
/====================================================================
| |
| [ ftp Client ] [ ftp Server ] |
| |
| (TCP:21 连接初始化,控制端口) |
| SYN |
| Port xxxx ———————-> Port 21 [TCP] |
| SYN+ACK |
| Port xxxx <———————- Port 21 |
| ACK |
| Port xxxx ———————-> Port 21 |
| |
| (控制操作: 用户列目录或传输文件) |
| |
| Port, IP, Port yyyy |
| Port xxxx <———————- Port 21 |
| Port Seccussful |
| Port xxxx <———————- Port 21 |
| List, Retr or Stor |
| Port xxxx ———————-> Port 21 |
| |
| |
| (TCP:20 连接初始化,数据端口) |
| SYN |
| Port yyyy <———————- Port 20 |
| SYN+ACK |
| Port yyyy ———————-> Port 20 |
| ACK |
| Port yyyy <———————- Port 20 |
| |
| |
| (数据操作: 数据传输) |
| Data + ACK |
| Port yyyy <———————> Port 20 |
| . |
| . |
| . |
| |
====================================================================/

FTP Port模式会给网络管理人员在许多方面带来很多问题,首先,在PORT命令消息中的IP地址和端口号的编码不是直白地显示。另外,应用层的协议命令理论上不应该包含网络地址信息(注:IP地址),因为这打破了协议层的原则并且可能导致协同性和安全性方面的问题。

下图是WildPackets EtherPeek协议分析仪解码了PORT命令的地址参数,地址参数后是端口号,见PORT192,168,10,232,6,127;6,127部分的第一个阿拉伯数字乘以256,然后加上第2个阿拉伯数字就得到端口号,所以客户端指定了端口号为6*256+127=1663;
/====================================================================
| IP Header – Internet Protocol Datagram |
| Version: 4 |
| Header Length: 5 (20 bytes) |
| |
| …………… |
| |
| Time To Live: 128 |
| Protocol: 6 TCP – Transmission Control Protocol |
| Header Checksum: 0xAA36 |
| Source IP Address: 192.168.0.1 DEMO |
| Dest. IP Address: 192.168.0.3 VI |
| No IP Options |
| |
| TCP – Transport Control Protocol |
| Source Port: 2342 manage-exec |
| Destination Port: 21 ftp |
| Sequence Number: 2435440100 |
| Ack Number: 9822605 |
| Offset: 5 (20 bytes) |
| Reserved: %000000 |
| Flags: %011000 |
| 0. …. (No Urgent pointer) |
| .1 …. Ack |
| .. 1… Push |
| .. .0.. (No Reset) |
| .. ..0. (No SYN) |
| .. …0 (No FIN) |
| |
| Window: 65150 |
| Checksum: 0x832A |
| Urgent Pointer: 0 |
| No TCP Options |
| |
| FTP Control – File Transfer Protocol |
| Line 1: PORT 192,168,0,1,9,39<CR><LF> |
| |
| FCS – Frame Check Sequence |
| FCS (Calculated): 0xF4C04A4F |
====================================================================/

下图验证了服务器端的确从端口20打开到端口1663的TCP连接:
/====================================================================
| TCP – Transport Control Protocol |
| Source Port: 20 ftp-data |
| Destination Port: 1663 |
| Sequence Number: 2578824336 |
| Ack Number: 0 |
| Offset: 6 (24 bytes) |
| Reserved: %000000 |
| Flag

s: %000010 |
| 0. …. (No Urgent pointer) |
| .0 …. (No Ack) |
| .. 0… (No Push) |
| .. .0.. (No Reset) |
| .. ..1. SYN |
| .. …0 (No FIN) |
| |
| Window: 3731 |
| Checksum: 0x8A4C |
| Urgent Pointer: 0 |
| No TCP Options |
| |
| TCP Options |
| Options Type: 2 Maxinum Segment Size |
| Length: 4 |
| MSS: 1460 |
| |
| FCS – Frame Check Sequence |
| FCS (Calculated): 0x5A1BD023 |
====================================================================/

当使用FTP时候,网络中的防火墙必须要声明相应的端口,防火墙必须要跟踪FTP对话然后检查PORT命令,防火墙必须要参与从服务器端到客户端在PORT命令中指定的端口连接的建立过程。

如果网络中使用了NAT(注:网络地址翻译),那么NAT的网关同样也需要声明相应的端口,网关需要把在PORT命令中指定的IP地址翻译成分配给客户的地址,然后重新计算TCP的Checksum ;如果网关没有正确地执行这个操作,FTP就失败了。

黑客可能会利用FTP支持第三方特性这一特点,在PORT命令中设置IP地址和端口号参数来指定一台目标主机的地址和端口号(有时候称这种攻击为FTP反弹攻击),例如黑客可以让一台FTP服务器不断地从它的源端口20发送TCP SYN包给一系列目的端口,让FTP服务器看起来正在进行端口扫描,目的主机不知道攻击来自黑客的主机,看起来攻击象是来自FTP服务器。一些常用的FTP应用在PORT命令中设置地址为0.0.0.0,这样做的意图是让FTP服务器只需要与打开控制连接
的相同客户进行数据连接,设置地址为0.0.0.0可能会让防火墙不知所措。例如,CISCO PIX IOS6.0以上版本的PIX(注:CISCO硬件防火墙设备,6.0以上版本为其修正了相关的FTP协议)要求数据连接的IP地址与已经存在的控制连接的IP地址必须相同。这样做的原因是防止黑客用PORT命令来攻击别的机器,虽然一些FTP应用设置IP地址为0.0.0.0不是有意图的攻击,但在PIX修正协议环境下的确引起了一些问题,同时对其他不允许第三方模式和避免FTP反弹攻击的防火墙来说,这也会引起相同的问题。

>>2.2 FTP Passive模式

下面的列表描述了Passive模式的FTP的步骤,步骤1到3和Port模式FTP相同,步骤9到11同样与Port模式FTP最后三步相同。

1、客户端发送一个TCP SYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端使用暂时的端口作为它的源端口;

2、服务器端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口;

3、客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个连接来发送FTP应答;

4、当用户请求一个列表(List)或者发送或接收文件时候,客户端软件发送PASV命令给服务器端表明客户端希望进入Passive模式;

5、服务器端进行应答,应答包括服务器的IP地址和一个暂时的端口,这个暂时的端口是客户端在打开数据传输连接时应该使用的端口;

6、客户端发送一个SYN包,源端口为客户端自己选择的一个暂时端口,目的端口为服务器在PASV应答命令中指定的暂时端口号;

7、服务器端发送SYN ACK包给客户端,目的端口为客户端自己选择的暂时端口,源端口为PASV应答中指定的暂时端口号;

8、客户端发送一个ACK包;

9、发送数据的主机以这个连接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式发送(一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要对方进行ACK确认;

10、当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以ACK确认;

11、客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器同样也发送它的FIN,客户端用ACK来确认。

windows下MySql密码重置

windows下MySql密码重置

Windows下操作
1.关闭正在运行的MySQL。

2.打开DOS窗口,转到mysql\bin目录。 (cd /d "D:\Program Files\MySQL\MySQL Server 5.1\bin")

3.输入mysqld --skip-grant-tables回车。

如果没有出现提示信息,那就对了。

4.再开一个DOS窗口,转到mysql\bin目录。

5.输入mysql回车,如果成功,将出现MySQL提示符 >

6. 连接权限数据库> use mysql;

6.改密码:> update user set password=password("10isp") where user="root";

7.刷新权限> flush privileges;

8.退出 > \q
9.关闭打开的dos窗口,然后开启mysql

利用iptables防止php-ddos对外发包

1.允许需要UDP服务的端口(如DNS)
iptables -I OUTPUT -p udp --dport 53 -d 61.134.1.4 -j ACCEPT
iptables -I OUTPUT -p udp --dport 53 -d 8.8.8.8 -j ACCEPT
2.允许需要的时间同步协议(ntp 端口123)
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
3.允许snmp服务使用161端口
iptables -A OUTPUT -p udp --dport 161 -j ACCEPT
指定允许访问的ip
iptables -A OUTPUT -d 117.34.73.1/32 -p udp -m udp -j ACCEPT
4.禁止本机对外发送UDP包
iptables -A OUTPUT -p udp -j DROP
保存配置
iptables-save > /etc/sysconfig/iptables
重启服务
/etc/init.d/iptables restart

 

 

-A INPUT -s 10.1.100.1/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 117.34.73.249/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j REJECT --reject-with icmp-port-unreachable