linux系统用户密码字符串生成命令-shadow里的密码串生成[转帖]

原文:http://hi.baidu.com/gouxiongmao/blog/item/8035ed56f1c9df55d10906c9.html

perl -e 'print crypt("88991026",q($1$aCwLBNGo)),"\n"'

其中88991026为要给用户设置的密码,$1$aCwLBNGo字符串是自定义字符串,shadow里一般用$1$后面跟8个字符这种格式。

生成的密码串样式如下:

$1$aCwLBNGo$0napSn3Qck9Sj4FqP5RFz0

中间有个$,前面算salt,后面的加密值,合在一起叫hash
crypt 本身默认用des算法
如果salt以$1$开头就使用md5算法

des算法命令如下:

perl -e 'print crypt("88991026","/g"),"\n"'

生成的密码串样式如下:

/gSr78Mzt1eYI

利用网络汇聚让思科交换机支持网络负载均衡

先介绍一下port group 的概念
(来源http://bbs.51cto.com/viewthread.php?tid=509441&page=1&authorid=395509)

port group 是配置层面上的一个物理端口组,配置到port group里面的物理端口才可以参加链路汇聚,并成为port channel里的某个成员端口。在逻辑上,port group 并不是一个端口,而是一个端口序列。加入port group 中的物理端口满足某种条件时进行端口汇聚,形成一个port channel,这个port channel 具备了逻辑端口的属性,才真正成为一个独立的逻辑端口。端口汇聚是一种逻辑上的抽象过程,将一组具备相同属性的端口序列,抽象成一个逻辑端口。port channel是一组物理端口的集合体,在逻辑上被当作一个物理端口。对用户来讲,完全可以将这个port channel 当作一个端口使用,因此不仅能增加网络的带宽,还能提供链路的备份功能。
  端口汇聚功能通常在交换机连接路由器、主机或者其他交换机时使用。
  port channel 的带宽为4 个端口带宽的总和。而s1如果有流量要经过port channel 传输到s2,s1 的portchannel 将根据流量的源mac 地址及目的mac地址的最低位进行流量分配运算,根据运算结果决定由port channel 中的某一成员端口承担该流量。当port channel 中的一个端口连接失败,原应该由该端口承担的流量将再次通过流量分配算法分配给其他连接正常的端口分担。流量分配算法由交换机的硬件决定的。
  为使port channel 正常工作,port channel 的成员端口必须具备以下相同的属性:
  1 端口均为全双工模式;
  2 端口速率相同;
  3 端口的类型必须一样,比如同为以太口或同为光纤口;
  4 端口同为access 端口并且属于同一个vlan 或同为trunk 端口;
  5 如果端口为trunk 端口,则其allowed vlan 和native vlan 属性也应该相同。

具体操作:

SW006#configure terminal
SW006(config)#interface Port-channel 1
SW006(config-if)#switchport access vlan 100
SW006(config-if)#switchport mode access
SW006(config-if)#exit
SW006(config)#interface range gigabitEthernet 0/1-4
SW006(config-if-range)#switchport access vlan 100
SW006(config-if-range)#switchport mode access
SW006(config-if-range)#channel-group 1 mode on

自己写的ubuntu下tomcat启动脚本

自己利用start-stop-daemon写的tomcat启动脚本,解决了tomcat用户使用false与nologin等非交互式shell的问题,同时也可以解决umask的问题。然后再利用文件进行锁定,防止用户启动多个tomcat进程。
start-stop-daemon的确是个比较强大的工具,有时间再去具体看看使用细则。

#!/bin/bash
### BEGIN INIT INFO
# Provides:          tomcat6
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Tomcat.
# Description:       Start the Tomcat servlet engine.
### END INIT INFO


TOMCAT_USER=tomcat
TOMCAT_GROUP=tomcat
TOMCAT_HOME=/usr/local/tomcat
TOMCAT_BIN=$TOMCAT_HOME/bin
TOMCAT_TEMP=$TOMCAT_HOME/temp
TOMCAT_LOCK=/var/run/tomcat.lock
JAVA_HOME=/usr/local/java
TOMCAT_UMASK=002


if [ `id -u` -ne 0 ]; then
        echo "You need root or sudo privileges to run this script"
        exit 1
fi


start_sams() {
        if [ -f $TOMCAT_LOCK ];then
                echo ' * SAMS has already been started or has problems'
                echo ' * Please contact Tomas'
                exit 1
        fi
        start-stop-daemon --start -u "$TOMCAT_USER" -g "$TOMCAT_GROUP" \
                -c "$TOMCAT_USER" -d "$TOMCAT_TEMP" \
                -k "$TOMCAT_UMASK" -x "$TOMCAT_BIN/startup.sh" > /dev/null && \
                echo " * SAMS starts successfully" &&  touch $TOMCAT_LOCK

}

stop_sams() {
        if [ ! -f $TOMCAT_LOCK ];then
                echo ' * SAMS has already been stopped or has problems'
                echo ' * Please contact Tomas'
                exit 1
        fi
        start-stop-daemon --stop -u "$TOMCAT_USER" -g "$TOMCAT_GROUP" \
                -c "$TOMCAT_USER" -d "$TOMCAT_TEMP" \
                -k "$TOMCAT_UMASK" "$TOMCAT_BIN/shutdown.sh" && \
                echo " * SAMS stops successfully" && rm -f $TOMCAT_LOCK
}


case "$1" in
        start)
                start_sams
        ;;
        stop)
                stop_sams
        ;;
        restart)
                stop_sams
                sleep 10
                start_sams
        ;;
        *)
                echo ' * Usage: /etc/init.d/tomcat_sams {start|stop|restart}'
                exit 1
        ;;
esac

ubuntu下进行MySQL的移植

最近一直很忙,忙着加班进行服务器升级。

服务器全部升到了Ubuntu 1004 LTS,但是在进行mysql移植的时候碰到了个大问题,直接到原来的数据文件同步过来,mysql却无论如果也启动不了。

最后那边的老大告诉我说,是AppArmor的问题,让哥关掉这个什么AppArmor,果然,数据库就起来了。
简单查了一个,这个AppArmor应该是跟SELinux差不多的东西,但级别好像并没有SELinux那么高,直接停用服务就没用了。相关资料:https://wiki.ubuntu.com/AppArmor

另外还有两个问题:

1, socket文件的如果不能写入,数据库也是起不来的,所以,还要关注一下你指定的socket文件的位置的权限
2, 从5.0升级到5.1有很多麻烦,建议最好是做逻辑备份而不是做直接物理升级

好像直接升级也有问题,等待进一步的更新。

思科交换机接HUB后只允许一台设备上网

机房扩建后,厂区有三台电脑始终说不能上网,因为对思科的设备不熟悉,用设备测了一下午也没找出来问题在哪里。

那三台电脑与另外三台指纹考勤机连到同一个很小的8口交换机汇总后再连到新的Cisco 2960上。设备测的时候发现,从Cisco 2960到小8口交换机之前是好的,到小8口交换机之后也是好的。但那三台电脑却始终都不能上网。

最后同事提醒说,会不会是交换机的配置问题。我虽然不太相信,但抱着试试的心理,还是从原来的记录里面找到了它们以前端口。还好这个端口没被重新配置,不然,我估计我怎么个死法都不知道。

下面这个是旧端口的配置:

SW003#show running-config interface GigabitEthernet 1/0/2
Building configuration...

Current configuration : 137 bytes
!
interface GigabitEthernet1/0/2
 switchport access vlan 10
 switchport mode access
 priority-queue out
end

下面这个是普通口的配置,通过web interface启用的smartport配置

SW003#show running-config interface GigabitEthernet 1/0/3
Building configuration...

Current configuration : 336 bytes
!
interface GigabitEthernet1/0/3
 switchport access vlan 10
 switchport mode access
 switchport port-security
 switchport port-security aging time 2
 switchport port-security violation restrict
 switchport port-security aging type inactivity
 macro description cisco-desktop
 spanning-tree portfast
 spanning-tree bpduguard enable
end

问了问换网络的朋友,原来默认的smartport是开启了安全端口,在同一个口只允许一个MAC地址进行通讯。。。

最后把新口也配置成老口的样子:

SW006#show running-config interface gigabitEthernet 0/18
Building configuration...

Current configuration : 136 bytes
!
interface GigabitEthernet0/18
 switchport access vlan 20
 switchport mode access
 priority-queue out
end

可惜下班了,只能明天再测了。

其实同事一开始就在提醒说会不会是配置的问题,唉,一开始就听他的查一下就好了,白白浪费一个下午。。。

机房扩建心得

1,永远不要相信集成商,凡事能亲历亲为最好亲历亲为。
2,哪怕再可靠的物流,也要把到货日期一个星期的缓冲期
3,设备购买首先找厂家咨询而不是集成商,要跟厂家明确你的目的。
4,事先记录下所有的东西是一个好习惯,包括但不尽限于服务器的位置,配线架端口连接,交换机配置,电源线位置等等。
5,实施过程中永远有你想不到的状况发生,能多要一个人就多要一个人。
6,机房扩建之后,并不代表工作结束,马上调整好状态去对付各种千奇百怪的问题。
7,无论如何都可保证VIP的所有东西工作正常,如电话,电脑,打印机等等。
8,理线是最大的问题,如果可能,最好先学学怎么理线,我这次基本上就死在这里。
9,尽量使用新线,尽量使用独立的线标。

nslookup使用略解

一般我们要查询DNS记录时,就直接使用nslookup:

nslookup blog.myhnet.cn

但是,其实nslookup还可以做多种查询,虽然比不上dig,但是对一般用户来说,还是够用了。

查询A记录:

nslookup -type=A blog.myhnet.cn

查询别名(CNAME):

nslookup -type=CNAME www.google.com

查询MX记录:

nslookup -type=MX myhnet.cn

查询IPv6的A记录(大部结果都应该是空):

nslookup -type=AAAA blog.myhnet.cn

查询域名反向查询(地址->IP):

nslookup -type=PRT 8.8.8.8

查询域名登记服务器:

nslookup -type=NS myhnet.cn

我们也可以直接敲nslookup进入nslookup命令行,然后使用set命令:

$ nslookup
> set type=MX
> myhnet.cn
Server:         192.168.0.1
Address:        192.168.0.1#53

Non-authoritative answer:
myhnet.cn       mail exchanger = 5 mxbiz1.qq.com.
myhnet.cn       mail exchanger = 10 mxbiz2.qq.com.

OPENVPN使用PAM及MYSQL进行用户认证【转】

1.使用PAM模块
PAM简介:
Pluggable Authentication Module (PAM) 是行业标准验证框架。
PAM 为系统管理员提供了选择系统上可用的任何验证服务来执行验证的灵活性。使用 PAM 框架还可以插入新的验证服务模块,并且无需修改应用程序即可使用,

包含帐户管理,用户验证,口令管理,会话管理四个模块.指定如何处理同一个 service-name 和 module-type 的多个定义的关键字。它为下列值之一
required模块测试必须成功。
optional模块测试可以失败。
sufficient如果测试成功,则不执行进一步的测试。

1>OPENVPN服务器端配置:

plugin /usr/sharelib/openvpn-auth-pam.so login //指定模块的位置,该动态链接库在OPENVPN发生包里需要编译
client-cert-not-required //客户端数字证书无需指定
username-as-common-name //用户名作为common name

2>OPENVPN客户端配置:

auth-user-pass

3>服务器设置:
需要增加相应的用户名及密码,使用useradd password命令
重新启动OPENVPN,则在客户端登录OPENVPN的时候会提示输入用户名及密码

2.使用PAM-MYSQL
1>安装MYSQL,添加用户名vpn 密码设置为vpn,用户表为库openvpn中的user

2>安装pam_mysql ,下载位置http://internap.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz

3>配置pam配置文件,在/etc/pam.d中新建openvpn内容如下

auth    required        pam_mysql.so          user=vpn passwd=vpn host=192.168.1.11 db=openvpn table=user usercolumn=username passwdcolumn=password
account required        pam_mysql.so                   user=vpn passwd=vpn host=192.168.1.11 db=openvpn   table=user usercolumn=username   passwdcolumn=password

注意:将pam_mysql.so文件拷入 /lib/security/位置;并且保证系统中有libmysqlclient.so文件,如果连接远程MYSQL数据库无需此文件

4>OPENVPN服务器配置
plugin /usr/sharelib/openvpn-auth-pam.so openvpn 其余配置与上同//加载/etc/pam.d/openvpn配置文件

5>客户端配置与上同