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年6月19日星期二
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)
)
)
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
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.
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 --
iptables -A POSTROUTING -t nat -p tcp -d 61.14.120.3 --dport 110 -j SNAT --
iptables -A PREROUTING -t nat -p tcp -d 202.105.5.144 --dport 25 -j DNAT --
iptables -A POSTROUTING -t nat -p tcp -d 61.14.120.3 --dport 25 -j SNAT --
#也可以把数据包转到内网地址,把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
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
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
天有不测风云。我们迟早会遇到一些意想不到的事情。这里将介绍一些保证睚灾难来临之前准备好数据副本的方法。
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 -
root@home:~#rsync -ave ssh test@192.168.0.8:/app/tomcat/http/ /app/tomcat/http/
使用ssh传输rsync流量的优点:可通过网络加密数据,在二台计算机之间保持大型、复杂目录结构的同步极为方便。比如把web内容镜像到任意数量的服务器上,构建一个Web“群集”。
创建存档文件:
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选项只还原第一个匹配该模式的文件。
-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管道的能力。
15 May 2007
天有不测风云。我们迟早会遇到一些意想不到的事情。这里将介绍一些保证睚灾难来临之前准备好数据副本的方法。
- 通过ssh使用tar工具执行备份
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工具
root@home:~#rsync -ave ssh test@192.168.0.8:/app/tomcat/http/ /app/tomcat/http/
使用ssh传输rsync流量的优点:可通过网络加密数据,在二台计算机之间保持大型、复杂目录结构的同步极为方便。比如把web内容镜像到任意数量的服务器上,构建一个Web“群集”。
- 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方式
-r生成映像文件中加入Rock Ridge扩展,即将保留长文件名和文件权限。
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 -"
| 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 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
显示/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
#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服务器上即可。
/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
Personalities : [multipath]
md1 : active multipath sda[1] sdc[0]
52428672 blocks [2/2] [UU]
unused devices:
注:可以在PC上用两个硬盘做md实验。文件系统要在md之后建立!
Deyou.Yang (yangdeyou@gmail.com) System Management.
15 May 2007
- 升级系统内核
#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设备
显示/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
#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服务器上即可。
- 路径的恢复
/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
- 查看所有多路径的状态
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)上网,而本身无线网络不是一个安全连接。下面措施将增强无线网络信息安全性。
- 更改router的默认口令;
- 禁止SSID广播,以免让别人知道router的使用状态,及有好奇心的人进行攻击;
- 禁止router的WAN管理,除非你充分信任你的router;
- 使用WEP加密协议;
- 使用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
tr -d '\r' <dosfile>unixfile
去掉vi中的^M
:%! col -bx
:set ff=unix
Linux用户的10个良好习惯
- 在单个命令行中创建目录树;
$mkdir -p project/{lib/ext,bin,src{bin,etc}} - 更改路径;不要移动存档;
$tar xvf -C /tmp/a exp.tar - 将命令与控制操作符组合使用;
$cd /tmp/a/b/c && tar xvf ~/archive.tar
$cd /tmp/a/b/c || mkdir -p /tmp/a/b/c - 谨慎引用变量,最好将变量调用括在又引号中;
$echo "$LANG" - 使用转义序列来管理较长的输入;
使用反斜杠(\)来将较长的行延继到下一行的代码。 - 在列表中对命令分组;
(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." - 在find之外使用xargs
$ls |xargs file - 了解何时grep应执行计数
$grep -c PATH ~/.bash_profile - 匹配输出中的某些字段,而不只是对行进行匹配
$ls -l | awk ' $6=="Dec" ' - 停止对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 网络配置
- 网络基本配置文件
- /etc/hosts 主机名解析。 The format of each line is:
IP-address official-host-name nicknames... (eg:
192.9.1.20 gaia # John Smith) - /etc/hostname.bge0 网络接口名
t1000 可以通过创建hostname.bge0:1,构造第二网络接口 - /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 - /etc/resolv.conf 域名解析
nameserver 211.151.88.20
nameserver 211.151.94.26
nameserver 202.106.196.115 - cat /etc/inetd.conf 服务项目定义
100235/1 tli rpc/ticotsord wait root /usr/lib/fs/cachefs/cachefsd cachefsd"
- 远程访问命令
- ssh --OpenSSH secure shell client (remote login program)
命令格式:ssh user@remote.hostname.com - scp --secure copy (remote file copy program)

命令格式:scp localfile user@remote.hostname.com:./file
- 网络监控
- ping 检测主机连接状况
命令格式:/usr/sbin/ping host [ip] - ifconfig 显示更改网络接口
命令格式:
/usr/sbin/ifconfig -a
/usr/sbin/ifconfig -a
lo0: flags=2001000849mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
bge0: flags=1000843mtu 1500 index 2
inet 192.168.1.11 netmask ffffff00 broadcast 192.168.1.255
其中,lo0:本机自回馈接口 ; bge0:第一个1G网络接口 - traceroute 跟踪网络路由
命令格式:/usr/sbin/traceroute www.google.com - netstat 显示与网络有关的数据
命令格式:netstat -[a|i|o|r] - rusers 网络上注册用户
命令格式:rusers -la - rup 网络上的主机
命令格式:rup - route 路由设置
命令格式:route [add|delete]设置网络路由。/etc/defaultroute --缺省静态路由 - 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对应表 - 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
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
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
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
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
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
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.
#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系统下出现乱码,解决办法:
- 设置环境变量
- 更改samb环境变量
# display chinese
display charset = cp936
unix charset = cp936
dos charset = cp936
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
内容摘要:
1、CVS服务端的始化
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版本库的初始化
cvs init
以下是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上设置:
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
eg:cvs import -m "Technologe Documents" Tech vendor release
项目导出
eg:cvs checkout Tech
cvs将创建Tech目录,将最新版的Tech项目内容导出到Tech目录中。
cvs update file_name
最好在每天开如工作前或将自己的工作导入到CVS库里前都要做一次,并养成“先同步 后修改”的惯,版本冲突一般是在多个人修改一个文件造成的,但这种项目管理上的问题不应该指望由CVS来解决。
CVS的很多动作都是通过cvs cmmit进行最后确认并修改的,最好每次只修改一个文件。在确认前还需要用户填写修改注释,以帮助其他开发人员了解修改原因。
对于图片,word文档等非线文本的项目,需要使用2进制文件方式导入:
cvs add -kb new_file.gif
cvs ci -m "why delete file"
cvs history 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的开发
cvs rtag -b -r release_2_0 release_2_0_patch proj_dir
3、WinCVSexport CVS_RSH=ssh
- 一个项目的首次导入
eg:cvs import -m "Technologe Documents" Tech vendor release
项目导出
- 把项目从CVS库中导出来
eg:cvs checkout Tech
cvs将创建Tech目录,将最新版的Tech项目内容导出到Tech目录中。
- 将文件同步到最新版本
cvs update file_name
最好在每天开如工作前或将自己的工作导入到CVS库里前都要做一次,并养成“先同步 后修改”的惯,版本冲突一般是在多个人修改一个文件造成的,但这种项目管理上的问题不应该指望由CVS来解决。
- 确认修改写入到CVS库里
CVS的很多动作都是通过cvs cmmit进行最后确认并修改的,最好每次只修改一个文件。在确认前还需要用户填写修改注释,以帮助其他开发人员了解修改原因。
- 修改某个版本注释
- 添加文件
对于图片,word文档等非线文本的项目,需要使用2进制文件方式导入:
cvs add -kb new_file.gif
- 删除文件
cvs ci -m "why delete file"
- 查看修改历史
cvs history file_name
- 查看当前文件不同版本的区别
- 通过CVS恢旧版本
项目发布导出不带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的开发
- 建立版本分支
cvs rtag -b -r release_2_0 release_2_0_patch proj_dir
下载:下载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操作了。
安装好以上两个软件后:
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年5月1日星期二
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泄漏引发的安全问题; |
在服务器上配置/etc/ssh/sshd_config Authentication key选项:
PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启sshd服务:
#service sshd restart
#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.
方法一: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登录实现;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”即可。
方法一: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 ......"
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即可。
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(到五羊新城);车上,一路我们上没有什么多的言语,我更多的是注意车窗外,到处是高架立交,路边人等别多,我也即将成为他们中的一员。在经过“犀牛路”时,看到车窗外飘飘幽幽掉下很多黄叶。不知道为什么,我对那一幕特别明印象,那时虽然已经五月,但不知道为什么路边的树还在落叶。现在想起那一幕,心中也有一种现在也说不出的滋味!
我2000年5月30号到广州,已经过去整整7年了,到广州的早上,天气已经比较热了,我还穿着西装,拉着破"皮"箱。小丽在出站的时候接到了我。一出站,眼前就是高大的立交,再就是广场的各式各样的人;我拉着东西,紧跟她的脚步,然后上251(到五羊新城);车上,一路我们上没有什么多的言语,我更多的是注意车窗外,到处是高架立交,路边人等别多,我也即将成为他们中的一员。在经过“犀牛路”时,看到车窗外飘飘幽幽掉下很多黄叶。不知道为什么,我对那一幕特别明印象,那时虽然已经五月,但不知道为什么路边的树还在落叶。现在想起那一幕,心中也有一种现在也说不出的滋味!
订阅:
评论 (Atom)












