2007年6月19日星期二

suse boot fsck error

Mounting shared memory FS on /dev/shm
Checking root file system...
fsck 1.38 (30-Jun-2005)
/dev/shm/root has gone 343 days without being checked,check forced.
Mem-info:root: ============== \54.7%
...
0 pages swap cacked
Out of Memeory:Killed process 5733 (fsck.ext3).
/dev/shm/root: e2fsck canceled.
fsck.ext3 /dev/shm/root failed (status 0x20). Run manually! failed
.....
/etc/init.d/kbd:line 129:/usr/sbin/hwinfo:No such file or directory
Stop Unicede mode
fsck failed. Please repair manually an reboot. The root
file system is currently mounted read-only.To remount it
read-write do:
bash# mount -n -o remount,rw /
Attention: Only CONTROL-D will reboot the system in this maintanance mode. shutdonw or reboot will not work.

Solution:
1.rm /frocefsck file.
2.Use suse boot CD rescue system, e2fsck -p /

2007年5月24日星期四

Oracle 学习笔记之一

手工建库

oracle@suse:~> export ORACLE_BASE=/opt/oracle
oracle@suse:~> export ORACLE_HOME=/opt/oracle/ora920
oracle@suse:~> export ORACLE_SID=test
oracle@suse:~> export ORACLE_TERM=xterm
oracle@suse:~> export LANG=zh_CN.GB18030
oracle@suse:~> NLS_LANG=AMERICAN_AMERICA.ZHS16GBK; export NLS_LANG
oracle@suse:~> DATA_HOME=/data; export DATA_HOME

oracle@suse:~> orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID entries=10 password=test123
create folder
oracle@suse:~> mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/{bdump,cdump,udump,pfile,create,logs}
oracle@suse:~> ls $ORACLE_BASE/admin/$ORACLE_SID
cdump create bdump logs pfile udump
oracle@suse:~>mkdir -p $DATA_HOME/test/archive

oracle@suse:~> vi $ORACLE_BASE/admin/$ORACLE_SID/pfile/init$ORACLE_SID.ora
*.background_dump_dest='/opt/oracle/admin/test/bdump'
*.compatible='9.2.0.0.0'
*.control_files='/data/test/control01.ctl','/data/test/control02.ctl','/data/test/control03.ctl'
*.core_dump_dest='/opt/oracle/admin/test/cdump'
*.cursor_sharing='SIMILAR'
*.db_block_size=8192
*.db_cache_size=218103808
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_keep_cache_size=318767104
*.db_name='test'
*.db_recycle_cache_size=486539264
*.db_writer_processes=4
*.disk_asynch_io=true
*.dml_locks=10000
*.enqueue_resources=10000
*.fast_start_mttr_target=300
*.filesystemio_options='asynch'
*.global_names=FALSE
*.hash_area_size=10485760
*.hash_join_enabled=TRUE
*.instance_name='test'
*.java_pool_size=52428800
*.job_queue_processes=10
*.large_pool_size=52428800
######################Archive mode###############
*.log_archive_dest_1='location=/data/test/archive'
*.log_archive_dest_2='service=DBSTANDBY reopen=300'
*.log_archive_format='arch_%t_%s.arc'
*.log_archive_start=TRUE
##############################################
*.log_buffer=1048576
*.log_checkpoints_to_alert=TRUE
*.open_cursors=2000
*.open_links=30
*.parallel_adaptive_multi_user=true
*.parallel_automatic_tuning=true
*.parallel_max_servers=8
*.parallel_min_servers=4
*.pga_aggregate_target=524288000
*.processes=500
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.session_cached_cursors=300
*.sga_max_size=1782579200
*.shared_pool_size=486539264
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=1800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/opt/oracle/admin/test/udump'
*.utl_file_dir='/opt/oracle/admin/test/logs'
*.workarea_size_policy='auto'


oracle@suse:~>sqplplus "/ as sysdba"
SQL>startup pfile='$ORACLE_BASE/admin/$ORACLE_SID/pfile/init$ORACLE_SID.ora' nomount
启动有问题请查看bdump,udump下的trc信息。

vi $ORACLE_BASE/admin/$ORACLE_SID/creadte/createdb.sql
CREATE DATABASE test
LOGFILE
GROUP 1 ('$DATA_HOME/test/log01_01.log') SIZE 50M,
GROUP 2 ('
$DATA_HOME/test/log02_01.log') SIZE 50M,
GROUP 3 ('
$DATA_HOME/test/log03_01.log') SIZE 50M,
GROUP 4 ('
$DATA_HOME/test/log04_01.log') SIZE 50M,
GROUP 5 ('
$DATA_HOME/test/log05_01.log') SIZE 50M
DATAFILE '
$DATA_HOME/test/system01.dbf' SIZE 300M AUTOEXTEND ON NEXT 10M MAXSIZE 32767M
extent management local
DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '
$DATA_HOME/test/temp01.dbf' SIZE 1000M
AUTOEXTEND ON NEXT 10M MAXSIZE 32767M
UNDO TABLESPACE UNDOTBS1 datafile '
$DATA_HOME/test/undotbs01.dbf' SIZE 2000M AUTOEXTEND ON NEXT 10M
MAXSIZE 32767M
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16;

SQL>@/u01/oracle/admin/sid/create/createdb.sql

SQL>@$ORACLE_HOME/rdbms/admin/catalog.sql
SQL>@$ORACLE_HOME/rdbms/admin/catproc.sql
SQL>@$ORACLE_HOME/rdbms/admin/catclust.sql
SQL> alter user system identified by systempwd;
SQL> conn system/systempwd;
SQL>@?/sqlplus/admin/pupbld.sql(以system身份登陆)
SQL>conn / as sysdba;
SQL>create spfile from pfile='$ORACLE_BASE/admin/$ORACLE_SID/pfile/init$ORACLE_SID.ora' ;
*****pfile中有Archive mode可省以下操作
SQL>alter system set log_archive_format='arch_%t_%s.arc' scope=spfile;
SQL>alter system set log_archive_dest_1='location=/data/sid/archive';
SQL>alter system set log_archive_start=true scope=spfile;
*****
SQL>
shutdown immediate;
SQL> conn / as sysdba;
SQL>startup mount;
SQL>alter database archivelog/noarchivelog;
SQL>alter system archive log start;
SQL>alter database open;
SQL>alter system archive log current;

# LISTENER.ORA Network Configuration File: /u01/oracle/ora920/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = primaryDB )(PORT = 1521))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = test)
(ORACLE_HOME = /u01/oracle/ora920)
(SID_NAME = test)
)
)

2007年5月17日星期四

iptables 防火墙实例

Deyou.Yang (yangdeyou@gmail.com) System Management
18 May 2007

脚本
#!/bin/sh
#
# A simple firewall initialization script
#
PASSLIST=~/conf/passlist.txt
STOPLIST=~/conf/stoplist.txt
ALLOWPORT=“22 80 443”

#Dorp all existing filter rules
iptables -F

#First, run through $PASSLIST, acceptin all traffic from
#the hosts and networks contained therein.
for x in `grep -v ^# $PASSLIST | awk '{print $1}'`; do
echo "Permitting $x..."
iptables -A INPUT -t filter -s $x -j ACCEPT
done

#Now run through $STOPLIST, dropping all traffic from the
#hosts and networks contained therein.
for x in `grep -v ^# $STOPLIST |awk '{print $1}'`; do
echo "Stoping $x..."
iptables -A INPUT -t filter -s $x -j DROP
done

#Next, the permitted ports:What will we accept from
#hosts not appearing on the stoplist?
for port in $ALLOWPORT; do
echo "Accepting port $port ...."
iptables -A INPUT -t filter -p tcp --dport $port -j ACCEPT
done

#Finally, unless it's mentioned above, and it's an inbound
#startup request, just drop it.
iptables -A INPUT -t filter -p tcp --syn -j DROP

受限列表
~/conf/stoplist.txt
1.2.3.4 # Portscanned on 8/12/07
7.8.9.0/24 # who knows what evil lurks therein
t1000.unix-center.net #
信任列表
~/conf/passlist.txt
11.22.33.44 # My workstation
208.201.239.0/26 # the local network

查看iptables列表
iptables -L
iptables -L -n

iptables NAT实例

Deyou.Yang (yangdeyou@gmail.com) System Management
18 May 2007

实现脚本:
#!/bin/bash
#
#加载ip_tables模块
modprobe ip_tables

#启动网络转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward

#清除iptables列表
iptables -F -t filter
iptables -X -t filter
iptables -Z -t filter
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat

#转发初始设置
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

#110/25端口转发设置,访问202.105.5.144:110/25的数据包转到61.14.120.3对应的110/25.
iptables -A PREROUTING -t nat -p tcp -d 202.105.5.144 --dport 110 -j DNAT --to 61.14.120.3:110
iptables -A POSTROUTING -t nat -p tcp -d 61.14.120.3 --dport 110 -j SNAT --to 202.105.5.144
iptables -A PREROUTING -t nat -p tcp -d 202.105.5.144 --dport 25 -j DNAT --to 61.14.120.3:25
iptables -A POSTROUTING -t nat -p tcp -d 61.14.120.3 --dport 25 -j SNAT --to 202.105.5.144

#也可以把数据包转到内网地址,把61.14.120.3:110/25转到192.168.10.11:5110/5025.

查找滥用磁盘的目录

Deyou.Yang (yangdeyou@gmail.com) System Management
17 May 2007

一台服务器上就用分区接近危险的饱和状态,可以用df命令显示剩下空间:
#df
文件系统 容量 己用 可用 己用% 挂载点
/dev/mapper/VolGroup00-LogVol00
133G 4.5G 122G 4% /
/dev/sda1 99M 12M 83M 12% /boot
tmpfs 501M 5.4M 495M 2% /dev/shm
/dev/mapper/VolGroup00-LogVol02
9.5G 2.0G 7.1G 22% /tmp
列出占用空间的前10位目录
$alias duchk='du -chk * |sort -rn |head -11'
(也可以加入profile中。)
#duchk
3830256 total
1594164 share
988940 lib64
483124 lib
345932 src
197180 include
164388 bin
28436 libexec
25820 sbin
1972 kerberos

sudo--安全助手

Deyou.Yang (yangdeyou@gmail.com) System Management
17 May 2007

sudo让其他用户代你工作,而不会将全部的root访问权限转交给授权用户。以root账户运行/usr/sbin/visudo来编辑被称为sudo的用户列表,允许用用户以任意的uid账户访问任意数量的命令。默认的sudo列表看起来如下:
root ALL=(ALL) ALL
bob ALL=(oracle) ALL
dns ns.mycom.com=(bind) /usr/sbin/rndc, /usr/sbin/named
sudo的语法:
用户 机器=(有效的用户)命令
bob用户可以执行oracle用户的所有命令。如:
bob@home~$sudo sqlplus "/ as sysdba"
如果用户、计算机、命令的清单比较多,那么就可能利用Alias语法。
User_Alias ADMINS=test,dns,bob
User_Alias WEBMASTERS=peter,zero
Runas_Alias DAEMONS=bind,www,rsync
Host_Alias WEBSERVER=ns1.mycom.com,app.mycom.cn,perl.mycom.cn
Cmnd_Alias PROCS=/bin/kill, /bin/killall,/user/bin/skill
Cmnd_Alias TOMCAT=/app/tomcat/bin/apachectl

WEBMASTERS WEBSERVERS=(www) TOMCAT
ADMINS ALL=(DAEMONS) ALL
也可用系统组来代替详细用记列表。
%webuser WEBSERVERS=(apache)TOMCAT

2007年5月15日星期二

备份(Backup and Recovery)

Deyou.Yang (yangdeyou@gmail.com) System Management
15 May 2007

天有不测风云。我们迟早会遇到一些意想不到的事情。这里将介绍一些保证睚灾难来临之前准备好数据副本的方法。

  • 通过ssh使用tar工具执行备份
test@home:~$scp /app/*.tar.gz 192.168.0.8:/app
scp不可跨越子目录保留文件的所有者和权限位,ssh能像标准Unix命令一样与其他命令组合使用。若要将一个服务器上home目录的所有文件备份到另一个服务器上的存档中,可以使用以下命令:
root@home:~#tar zcvf - /home | ssh 192.168.0.8 "cat >home-homes.tgz"tar zcvf - /home | ssh 192.168.0.8 "cat >home-homes.tgz"
可以将压缩存档文件直接写到远程计算机的磁带驱动器中:
root@home:~#tar zcvf - /home | ssh 192.168.0.8 "cat >/dev/tape"
文件夹(tomcat)同步
root@home:~#cd /app;tar zcf - tomcat/ \
| ssh 192.168.0.8 "cd /app; mv tomcat tomcat.bak; tar zpxvf -"
本地大存档还原到远端服务器
root@home:~#ssh oracle@192.168.0.8 "cd /app/oracle/log; tar zpvxf -" \
< log.tgz

oracle@DB1:~$ssh root@home "cat log.tgz" \
| tar zpvxf -

  • 通过ssh使用rsync工具
rsync [OPTION]... SRC [SRC]... DEST
root@home:~#rsync -ave ssh test@192.168.0.8:/app/tomcat/http/ /app/tomcat/http/
使用ssh传输rsync流量的优点:可通过网络加密数据,在二台计算机之间保持大型、复杂目录结构的同步极为方便。比如把web内容镜像到任意数量的服务器上,构建一个Web“群集”。

  • Pax命令进行存档
pax代表“可移植存档文件交换”
创建存档文件:
root@home:~#cd /app;pax -wf app.pax .
root@home:~# file app.pax
app.pax: POSIX tar archive
root@home:~#pax -f app.pax |more
展开存档文件
root@home:~#cd ~;pax -rvf /app/app.pax
pax可以还原tar和cpio存档
root@home:~#pax -rvzf /app/mdamd.tar.gz
root@home:~#pax -rvf /app/oracle.cpio
交互式还原
root@home:~#cd ~;pax -rvif /app/app.pax
递归复制目录结构
root@home:~#cd /app/tech_project
root@home:~#mkdir -p /data/tech_project
root@home:~#pax -rw . /data/tech_project
增量备份
每一周全备一次,其它时间进行增量备份
root@home:~#mkdir -p /data/backups/tech_doc
root@home:~#pax -wvf /data/backups/tech_doc/tech_bak`date +%w` .
root@home:~#pax -wv -T 0000 -f /data/backups/tech_doc/tech_add_bak`date +%w` .
还原时跳过文件
root@home:~#pax -rvf /app/backups/tech_doc/tech_bak1 -c './file1'
c选项是例外选项。n选项与c不同的是n选项只还原第一个匹配该模式的文件。

  • ISO方式
root@home:~#mkisofs -r /app/tomcat/ >./tomcat.iso
-r生成映像文件中加入Rock Ridge扩展,即将保留长文件名和文件权限。
root@home:~#dd if=/dev/cdrom of=image.iso bs=10k
root@home:~#mount -o loop ./tomcat.iso /mnt/iso
ISO记录成CDR/CDRW
root@home:~#cdrecord -v speed=16 dev=0,0,0 -data image.iso
root@home:~#cdrecord -v speed=8 dev=0,0,0 -data image.iso
root@home:~#mkisofs -r /app/backup/ \
| ssh 192.168.0.8 "cdrecord -v speed=16 dev=0,0,0 fs=8m -data -"
root@home:~#curl ftp://202.115.128.174/pub2/linux/distribution/redhat/9/shrike-i386-disc1.iso \
| cdrecord -v speed=0 dev=0,0,0 fs=8m -data -
网络记录需要优质稳定的100Mbps网络,下载记录只能显示Unix管道的能力。

2007年5月14日星期一

一步一步学习mdadm多路径

Step by step learning RedHat mdadm Multipathing

Deyou.Yang (yangdeyou@gmail.com) System Management.
15 May 2007
  • 升级系统内核
#rpm -ivh mkinitrd-4.2.1.6-1.i386.rpm
#rpm -ivh kernel-smp-2.6.9-34.EL.i686.rpm
这个版本支持多路径比较稳定。


  • 确定多路径通道

# scsi_id -g -p 0x80 -s /block/sda
SIBM 3542 1T05078453

# scsi_id -s -p 0x83 -s /block/sda
3600a0b80000b174b000000d63efc5c8c
# scsi_id -s -p 0x83 -s /block/sdc
3600a0b80000b174b000000d63efc5c8c

  • 建立md设备
#mdadm -C /dev/md0 -l multipath -n2 /dev/sda /dev/sdc
显示/dev/md0设备信息
# mdadm -D /dev/md0
/dev/md1:
Version : 00.90.01
Creation Time : Tue Sep 19 13:55:26 2006
Raid Level : multipath
Array Size : 52428672 (49.100 GiB 53.69 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent

Update Time : Tue Sep 19 13:55:26 2006
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0


Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sda
1 8 65 1 active sync /dev/sdc
UUID : 12748dca:832e7efe:95fcf673:8d88163f
Events : 0.1

  • 设置重启自动建立md
#echo "DEVICE /dev/sd[a-z]*" > /etc/mdadm.conf
#mdadm -ES >> /etc/mdadm.conf
检查mdadm.conf文件,查看与mdamd -D /dev/md0的UUID是否相同。这里必需相同!
# cat /etc/mdadm.conf
DEVICE /dev/sd[1-z]*
ARRAY /dev/md0 level=multipath num-devices=2 UUID=a3e03ff7:179b59c3:9542fc5f:2249e151
devices=/dev/sda,/dev/sdc
如果要做A、B服务的raw的RAC,A、B可以看到相同的scsi id,在A机上做好md,把mdadm.conf传到B服务器上即可。

  • 路径的恢复
# mdadm -D /dev/md0
/dev/md1:
Version : 00.90.01
Creation Time : Tue Sep 19 13:55:26 2006
Raid Level : multipath
Array Size : 52428672 (49.100 GiB 53.69 GB)
Raid Devices : 1
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent

Update Time : Tue Sep 19 13:55:26 2006
State : clean
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1


Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sda
1 8 65 1 faulty /dev/sdc
UUID : 12748dca:832e7efe:95fcf673:8d88163f
Events : 0.1
mdamd /dev/md0 -f /dev/sdc -r /dev/sdc/ -a /dev/sdc

  • 查看所有多路径的状态
# cat /proc/mdstat
Personalities : [multipath]
md1 : active multipath sda[1] sdc[0]
52428672 blocks [2/2] [UU]

unused devices:

注:可以在PC上用两个硬盘做md实验。文件系统要在md之后建立!

2007年5月12日星期六

配置安全的无线网络

如果你在使用无线路由(802.11b router)上网,而本身无线网络不是一个安全连接。下面措施将增强无线网络信息安全性。
  1. 更改router的默认口令;
  2. 禁止SSID广播,以免让别人知道router的使用状态,及有好奇心的人进行攻击;
  3. 禁止router的WAN管理,除非你充分信任你的router;
  4. 使用WEP加密协议;
  5. 使用SSH隧道连接,以应对WEP加密协议的破解。

2007年5月9日星期三

DOS CR-LR文件转化成UNIX LF格式

Dos-style CR-LR line ending into Unix-style LF line ending:
tr -d '\r' <dosfile>unixfile
去掉vi中的^M
:%! col -bx
:set ff=unix

Linux用户的10个良好习惯

  1. 在单个命令行中创建目录树;
    $mkdir -p project/{lib/ext,bin,src{bin,etc}}
  2. 更改路径;不要移动存档;
    $tar xvf -C /tmp/a exp.tar
  3. 将命令与控制操作符组合使用;
    $cd /tmp/a/b/c && tar xvf ~/archive.tar
    $cd /tmp/a/b/c || mkdir -p /tmp/a/b/c
  4. 谨慎引用变量,最好将变量调用括在又引号中;
    $echo "$LANG"
  5. 使用转义序列来管理较长的输入;
    使用反斜杠(\)来将较长的行延继到下一行的代码。
  6. 在列表中对命令分组;
    (cd /tmp/a/b/c || mkdir -p /tmp/a/b/c && \
    VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar ) \
    |mailx test -s "Archire contents."
  7. 在find之外使用xargs
    $ls |xargs file
  8. 了解何时grep应执行计数
    $grep -c PATH ~/.bash_profile
  9. 匹配输出中的某些字段,而不只是对行进行匹配
    $ls -l | awk ' $6=="Dec" '
  10. 停止对cat使用管道;
    grep PCI /var/log/message

2007年5月6日星期日

Solaris 软件包管理

  • pkginfo - display software package information
用法:
pkginfo [-q][-pi][-x|1][options][pkg...]
pkginfo -d device [-x|1][options][pkg...]
其中
-q #安静的方式
-p #选择部分安装包
-i #选择全部安装包
-x #压缩列表
-l #长列表
-r #重新分配
选项还包括:
-c 目录[目录...]
-a 结构
-v 版本
eg:pkginfo -d /cdrom/solaris10/s0/Solaris |more
pkginfo -l SUNWauda

  • pkgadd - transfer software packages to the system
用法:
pkgadd [-nvi] [-d 设备] [[-M] -R 主机路径] [-V fs 文件] [-a 管理文件] [-r 响应] [-x 代理] [-k 密钥库] [-G] [ -P 口令] [-Y 类别[,类别...]| 软件包 [软件包...]]
pkgadd -s 目录 [-d 设备] [-x 代理] [-k 密钥库] [-G] [-P 口令] [-Y 类别[,类别...]| 软件包 [软件包...]]
eg: pkgadd -d . SUNWtrk
对于已经安装的软件包,从/var/sadm/inistall/contents记录文件中查找此软件包的路径
  • pkgchk - check package installation accuracy
用法:
pkgchk [-l|vqacnxf] [-R 根目录] [-p 路径[, ...] | -P 路径[, ...]]
[-i 文件] [选项]
pkgchk -d 设备 [-f][-l|v] [-p 路径[, ...] | -P 路径[, ...]]
[-V ...][-M] [-i 文件] [-Y 类别[, ...] | pkginst [...]]
选项可能包括下列各项中的某一项:
-m pkgmap [-e envfile]
pkginst [...]
-Y 类别[, ...]
  • pkgrm - remove a package from the system
用法:
pkgrm [-a admin] [-n] [[-M|-A] -R host_path] [-V fs_file] [-v] [-Y category[,category ...] | pkg [pkg ...]]
pkgrm -s spool [-Y category[,category ...] | pkg [pkg ...]]
pkgrm命令通过文件/var/sadm/install/contents来确定软件包的地址,并且当软件包被删除以后,更新些文件。

2007年5月5日星期六

2007年5月4日星期五

Solaris 网络配置

  • 网络基本配置文件
  1. /etc/hosts 主机名解析。 The format of each line is:
    IP-address official-host-name nicknames... (eg:192.9.1.20 gaia # John Smith)
  2. /etc/hostname.bge0 网络接口名
    t1000 可以通过创建hostname.bge0:1,构造第二网络接口
  3. /etc/netmasks 网络掩码
    # The netmasks file associates Internet Protocol (IP) address
    # masks with IP network numbers.
    # network-number netmask
    # 192.168.1.1 255.255.255.0
  4. /etc/resolv.conf 域名解析
    nameserver 211.151.88.20
    nameserver 211.151.94.26
    nameserver 202.106.196.115
  5. cat /etc/inetd.conf 服务项目定义
    100235/1 tli rpc/ticotsord wait root /usr/lib/fs/cachefs/cachefsd cachefsd"
  • 远程访问命令
  1. ssh --OpenSSH secure shell client (remote login program)
    命令格式:ssh user@remote.hostname.com
  2. scp --secure copy (remote file copy program)
    命令格式:scp localfile user@remote.hostname.com:./file
  • 网络监控
  1. ping 检测主机连接状况
    命令格式:/usr/sbin/ping host [ip]
  2. ifconfig 显示更改网络接口
    命令格式:/usr/sbin/ifconfig -a
    /usr/sbin/ifconfig -a
    lo0: flags=2001000849 mtu 8232 index 1
    inet 127.0.0.1 netmask ff000000
    bge0: flags=1000843 mtu 1500 index 2
    inet 192.168.1.11 netmask ffffff00 broadcast 192.168.1.255

    其中,lo0:本机自回馈接口 ; bge0:第一个1G网络接口
  3. traceroute 跟踪网络路由
    命令格式:/usr/sbin/traceroute www.google.com
  4. netstat 显示与网络有关的数据
    命令格式:netstat -[a|i|o|r]
  5. rusers 网络上注册用户
    命令格式:rusers -la
  6. rup 网络上的主机
    命令格式:rup
  7. route 路由设置
    命令格式:route [add|delete]设置网络路由。/etc/defaultroute --缺省静态路由
  8. arp 反向解析 /usr/sbin/arp
    Usage: arp hostname
    arp -a [-n]
    arp -d hostname
    arp -s hostname ether_addr [temp] [pub] [trail]
    arp -f filename
    arp -a 显示当前的IP-MAC对应表
  9. nfsstat 查看NFS状态
    -s server
    -c client

Linux bonding 网卡绑定

Step
1> /etc/modprobe.conf add:
alias bond0 bonding
options bond0 mode=1 miimon=100 arp_interval=60 arp_ip_target=192.168.0.254
Note:mode 0 is Round-robin,mode 1 is Active-backup,more message see /usr/share/doc/kernel/networking/bonding.txt
2> /etc/rc.d/rc.local add:
ifenslave bond0 eth0 eth1
3> create /etc/sysconfig/network-scripts/ifcfg-bond0 :
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.0.11
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
USERCTL=no
4> modify /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
5> modify /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
6> modify/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=dns.test.cn
GATEWAY=192.168.0.254
7> see bonding stat ,cat /proc/net/bonding/bond0

Liunx Serial Console Setup

Step 1: Check you system's serial support.
#demesg |grep tty
ttyS0 at 0x03f8 (irq=4) is a 16550A
Step 2: Configure you inittab to support serail console logins
/etc/inittab additions :
s0:2345:respawn:/sbin/agetty -L -f /etc/issueserial 9600 ttyS0 vt100
create /etc/issueserail
Welcome to TEST Server - Kernel \r (\l).
Connected on \l at \b bps
\U
You must activate the change that you made in /etc/inittab.
#init q
#ps -ef |grep agetty
Test serial port login ,Linux running Minicom,Windows running HyperTerminal.
Setup 3: Configure serial port as THE system-console
Modifying /boot/grub/menu.list
kernel /vmlinuz-2.6.9-34.0.1 ro root=LABEL=/ console=ttyS0,9600
warning!: Redhat chkconfig kudzu off.

Mount/Samb Chinese Display

Windows文件保存到Linux samb下,在Linux系统下出现乱码,解决办法:
  • 设置环境变量
export LANG=zh_CN.GB18030
  • 更改samb环境变量
vi /etc/samb/smb.conf
# display chinese
display charset = cp936
unix charset = cp936
dos charset = cp936
  • Linux mount samb
mount -t smbfs -o username=*,password=* //192.168.0.1/share /mnt/smb
  • Mount FAT display chinese
mount -a -o codepage=936,iocharset=cp936 /dev/sda1 /mnt/usb

CVS+Putty+WinCVS轻松实现版本控制

CVS+Putty+WinCVS轻松实现版本控制简介

KEYWORDS:CVS WinCVS CVSROOT

内容摘要:
cvs 是一个版本控制系统。使用它,可以记录下你的源文件的历史。

你当然可以把曾经创建的每个文件的所有版本都保存下来。但这会浪费大量的磁盘空间。 而cvs用一种聪明的办法把一个文件的所有版本保存在一个文件里,仅仅保存不同版本之间的差异。

本文介绍CVS版本控制的轻松实现。

  • CVS服务端的初始化;
  • Linux下CVS客户端日常使用
  • WinCVS

1、CVS服务端的始化
环境设定,指定CVS库的路径CVSROOT
export CVSROOT=/app/cvsroot/
CVS版本库的初始化
cvs init
2、Linux下CVS客户端日常使用
以下是CVS最常用的功能,可能不到它全部命令选项的10%,作为一般开发人员平时会用cvs update和cvs commit就够了,更多的需求在实际应用过程中自然会出现,不时回头看看相关文档常会有意外的收获。
CVS的远程认证通过SSH远程访问CVS,CVS服务器是192.18.1.10,上面CVSROOT路径是/app/cvsroot,另外一台开发客户机是192.168.1.11。如果test在2台机上都有同名的帐号,那么从192.168.1.11上设置:
export CVSROOT=:ext:test@192.168.1.10:/app/cvsroot
export CVS_RSH=ssh
  • 一个项目的首次导入
cvs import -m "Write some comments here" project_name vendor_tag release_tag
eg:cvs import -m "Technologe Documents" Tech vendor release
项目导出
  • 把项目从CVS库中导出来
cvs checkout project_name
eg:cvs checkout Tech
cvs将创建Tech目录,将最新版的Tech项目内容导出到Tech目录中。
  • 将文件同步到最新版本
cvs update
cvs update file_name
最好在每天开如工作前或将自己的工作导入到CVS库里前都要做一次,并养成“先同步 后修改”的惯,版本冲突一般是在多个人修改一个文件造成的,但这种项目管理上的问题不应该指望由CVS来解决。
  • 确认修改写入到CVS库里
cvs commit -m "write some comments here" file_name
CVS的很多动作都是通过cvs cmmit进行最后确认并修改的,最好每次只修改一个文件。在确认前还需要用户填写修改注释,以帮助其他开发人员了解修改原因。
  • 修改某个版本注释
cvs admin -m 1.2:"write shome comments here" file name
  • 添加文件
cvs add new_file
对于图片,word文档等非线文本的项目,需要使用2进制文件方式导入:
cvs add -kb new_file.gif
  • 删除文件
cvs rm -f file_name
cvs ci -m "why delete file"
  • 查看修改历史
cvs log file_name
cvs history file_name
  • 查看当前文件不同版本的区别
cvs diff -r1.3 -r1.5 file_name
  • 通过CVS恢旧版本
cvs update -p -r1.2 file_name >file_name
项目发布导出不带CVS目录的源文件
cvs export -r release1 project_name
cvs export -D 20070520 project _name
cvs export -D now project_name
  • 项目多分支同步开发
确认版本里程碑:
cvs tag release_2_0
开始一个新的里程碑:
cvs commit -r 3
标记所有文件开始进入3.x的开发
  • 建立版本分支
在开发项目的3.x版本的进修发现2.x有问题,但2.x又不敢用,则从先前标记的里程碑:release_2_0导出一个分支release_2_0_patch
cvs rtag -b -r release_2_0 release_2_0_patch proj_dir
3、WinCVS
下载:下载cvs Windows客户端1.2版,PuTTY 0.60版。
安装好以上两个软件后:
WinCVS客户端的admin-->preference设置
general选单里设置CVSROOT:
test@192.168.1.10:/app/cvsroot
Authorization:选择SSH sever
设置CVS使用基于公钥/私钥的SSH认证:RSA identity(eg:test.ppk)
注:PuTTY中SSH公钥/私钥的产生配置参见:http://yangdeyou.blogspot.com/2007/04/linuxauthentiaction-key-2007-4-28.html
Port选单里:
选择上:check for altermate rsh name
设置ssh的路径,因为安装的是PuTTY,设置PuTTY的command命令路径,一般在:c:\Program File\PuTTY\plink.exe
现在就可以使用WinCVS进行CVS操作了。

2007年4月29日星期日

关于Linux系统Authentiaction Key远程安全登录

关于Linux系统Authentiaction Key远程安全登录

变更记录
时间
变更人员
变更内容
版本号
审批人
生效日期
2007-4-28
yangdeyou
create
V1.0
















关健词:OpenSSH OpenSSL KEY USER PASSWORD Putty SecureCRT

内容摘要:
Linux系统信息安全中,系统帐号管理很容易出现弱口令,而且很容易记录,这样口令很容易被盗用。如果没有集中管理用户帐号,运行系统中存在很多帐号这样也不方便维护。通过OpenSSH的Pubkey Authentication验证,可以加强口令的管理。

  • SSH口令与Authentication key的管理比较;
  • OpenSSH 配置;
  • Authentication key的产生、管理和转换;
  • Putty 0.59 Authentication key登录实现;
  • SecureCRT Authentication key登录实现;
  • Key登录管理策略;

1、SSH口令与Authentication key的管理比较

验证方式
ROOT帐号
应用服务帐号(eg.oracle/test)
监控、测试(bjjk)
口令
口令容易被随意记录

口令容易被随意记录;
如果多个人维护,有多个帐号多个密码,维护人员自己更改口令,容易产生弱口令;
临时用户要建立临时帐号;
口令容易被随意记录;
如果多个人维护,有多个帐号多个密码,维护人员自己更改口令,容易产生弱口令;
临时用户要建立临时帐号;

Key
一个root专用Key,对Key+私钥密码进行妥善保存,用Key进行登录;系统安全工程师对用户私钥进行定期更新,以减少key泄漏引发的安全问题
建立一角色用户,管理人员制作KEY+私钥密码,用Key进行登录;
用户妥善保存+私钥密码;
用户不能更改密码,密码管理由安全工程师进行管理;
系统安全工程师对用户私钥进行定期更新,以减少key泄漏引发的安全问题;
建立一角色用户,管理人员制作KEY+私钥密码,用Key进行登录;
用户妥善保存+私钥密码;
用户不能更改密码,密码管理由安全工程师进行管理;
系统安全工程师对用户私钥进行定期更新,以减少key泄漏引发的安全问题;

2、OpenSSH 配置

在服务器上配置/etc/ssh/sshd_config Authentication key选项:
PasswordAuthentication no

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

重启sshd服务:
#service sshd restart

将 后面产生的Pulblic Key追加到角色$HOME目录的.ssh/authorized_keys后。在Linux客户端,把PRIVATE KEY(id_sda)复制到$HOME/.ssh/下,Putty客户端把PRIVATE KEY复制到windows待用。
3、Authentication key的产生、管理和转换

ssh-keygen产生:
$ssh-keygen -d
Generating public/private dsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):xxxxx
Enter same passphrase again:xxxxx
Your identification has been saved in /home/test/.ssh/id_dsa.
Your public key has been saved in /home/test/.ssh/id_dsa.pub.
The key fingerprint is:
d9:63:1f:b5:9a:59:01:64:c0:0b:92:a7:57:71:a0:02 test@oDextest

ssh-keygen
更改passphrase。
$ssh-keygen -p -f .ssh/id_dsa
Enter old passphrase:xxxxx
Key has comment '.ssh/id_dsa'
Enter new passphrase (empty for no passphrase):yyyyy
Enter same passphrase again:yyyyy
Your identification has been saved with the new passphrase.

PuttyKey、SecureCRT产生的Public Key转换成为Openssh兼容格式
$ssh-keygen -i -f mykey.pub >> $HOME/.ssh/authorized_keys2

Note:more information see man ssh-keygen

私钥内容:
$cat .ssh/id_dsa
-----BEGIN DSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,3C3DB2FD39971AF0

lVJ5EA7BtiJF4ha+qnuHIe890QFWAiOI3kHw1S32KkZ2NUbYWfMtSo1ojxDwV2nF
5Q5hxBiv6p6ZkVYIVJltvxuf3ZjqsVBoJPDcFf4LorvLCio/9lOs20aJZaJrnqw6
69hG4mkIwKud2PW5sJAxyBpjhJOJDjGJnZjpON30RztHN+0hcLuZDRR+ocdzw4Kx
kvbXUEvBVDS78jiJ5Z1aRtv3vKKr3s0oC4qCtG/7dn/+GyL0j9bzbrAgCcw8YoE9
pHbihqzzEaJxJDsd3okwro+EPqbJNKzJxsNX9AAiEdFZuVlUgg+HpNJCgYtxfiq6
BpoLg5U/7EBAiXhDpQ7pC9nFUT/jDh9KmrdlRhxZNlkLciBqFcBRQaSlfjlJEttD
dXgNB+a7BsS5BqSnWbcuWcf7hbzdADvQwQrgeS9kvBSjPpAQ/1wrOsEIkbxPu1Op
R+klHiGn/VQMavqNyQO72vAllg1U3jYKx2k+cbwHjQLpfiyVIGP2Dj+YFmLEmyS4
XViaDxpL+mJ3trBV6ZQhsQbO8JwqAuFdNdcP6y7ACOBsbQoKk2ELJxQGvO7rqsMG
bvtD1VQ8Z6dCvPemrhpLbFnesgyt0cxr
-----END DSA PRIVATE KEY-----

公钥内容:
$cat .ssh/id_dsa.pub
ssh-dss AAAAB3NzaC1kc3MAAACBANEtlwb/byEQZLxTcgRaDjR6y45Rzn9aRrNyBKn8EjXA
4xeUarZ30AfbqMAwI6gI6tpBOS4veKEkQkJTLKBJyo5OCczTKB5JWicbCf9k509AmRbiBR3M
hbk6zL9OktFv1hX4eI0lU3DeTvQORJ60w2zgyMvZCMg+3Y/YRQ1vIe/rAAAAFQDka0QYqYLK
G4bzuVirsdcHrGN1UQAAAIEAu/oywdIorigeMYHpGXsCBPkJhMVrSkMDgNFENWj/fGUDibR0
GRcqOy2Ms3Xu9SzIJq/qASmQSOUnc88LMx/uD+bRw43b7WiLrTFesaFctJf/AgZ7oE97WQjq
wPEI9Ti2RZkkU0XXYiY7Hcnz5eiMRaeCW7TIWs1T8OHdIHCjfFMAAACBAKHPEZ5REfjte6+e
3fyGb0/C284fYqeGHRV8RfCLbqbAjlutmyOSs5lEasvr0Pdo7un5kSREWJ+yi9S7vOc80XGj
yULY2Vuu9GGFJRqoy/8PkwJMZwmz4LAP8m9VkCe+6VCXT+b589pRwAWA0BEheqz6eGFuTDEU
pLDDEvz6NVqk
note:
Manual add public key type RSA and DSA,authorized-keys2 pbulic key first is ssh-dss and ssh-rsa.

4、Putty 0.59 Authentication key 登录实现
方法一:PuttyKey Generator产生证书方法:
PuttyKey Generator-->Generate,save private key(eg.test.ppk) and public key(test.pub)。把public key复制到远程服务器,并Public Key转换成为Openssh兼容格式
$ssh-keygen -i -f test.pub >> $HOME/.ssh/authorized_keys2

方法二:Linux ssh-keygen 产生证书导入方法:
把PRIVATE KEY发送给Windows客户端,用PuttyKey Generator-->load a existing private key file,输入初始PassPhrase,save private key(eg. test.ppk).

配置Putty:Session输入有公钥服务器的Host Name(or IP)、Save session,Connection-->SSH-->Auth-->Browse找到ppk(test.ppk)。Save session。
选择“Open”即可。

5、SecureCRT Authentication key登录实现;
方法一:SecureCRT产生证书方法:
Tools-->Create public key,save private key(eg.test.ppk) and public key(test.pub)。把public key复制到远程服务器,并Public Key转换成为Openssh兼容格式
$ssh-keygen -i -f test.pub >> $HOME/.ssh/authorized_keys2

方法二:Linux ssh-keygen 产生证书导入方法:
建立下面的private key 文件(eg.test.pk)把Linux产生的私钥替换"replace this ......"
---- BEGIN VAN DYKE SSH2 PRIVATE KEY ----
Subject: jia
Comment: "123@mypc"
ModBitSize: 1024
replace this ......
---- END VAN DYKE SSH2 PRIVATE KEY ----

配置Session:connection--> Authentication-->primary-->Public key-->Properties...-->Use identity file.添加test.pk文件。OK-->OK--connection即可。

6、Key登录管理策略

角色
root
app(oracle等)
monitor
test
other
public key权限
700
740
740
740
740
public key所有者
root
root
root
root
root
public key目录$HOME/.ssh/
$HOME/.ssh/$HOME/.ssh/$HOME/.ssh/$HOME/.ssh/
密码所有者
系统管理员
系统管理员 系统管理员 系统管理员 系统管理员
公、私钥个数
一个,系统管理员拥有 相关人员每人一个每人一个
相关人员每人一个每人一个 相关人员每人一个每人一个 相关人员每人一个每人一个

密钥发放、管理登记表

密钥发放人: 发放时间: 下次更换时间: 备案号:
申请人
IP
登录服务器
角色名
密钥制作日期
备注
























2007年4月27日星期五

五一记念

五一节,我到广州的记念日。
我2000年5月30号到广州,已经过去整整7年了,到广州的早上,天气已经比较热了,我还穿着西装,拉着破"皮"箱。小丽在出站的时候接到了我。一出站,眼前就是高大的立交,再就是广场的各式各样的人;我拉着东西,紧跟她的脚步,然后上251(到五羊新城);车上,一路我们上没有什么多的言语,我更多的是注意车窗外,到处是高架立交,路边人等别多,我也即将成为他们中的一员。在经过“犀牛路”时,看到车窗外飘飘幽幽掉下很多黄叶。不知道为什么,我对那一幕特别明印象,那时虽然已经五月,但不知道为什么路边的树还在落叶。现在想起那一幕,心中也有一种现在也说不出的滋味!