附上一張大白(ibook)與小白(NDSL)的合照。
Thursday, August 09, 2007
Friday, August 03, 2007
Setup a mail server that enables smtp auth function
OS: OpenSUSE 10
Setup procedure:
1. Setup Hostname (server1.example.com)
# vi /etc/HOSTNAME
server1.example.com
# vi /etc/hosts
192.168.1.254 server1.example.com server1
2. Setup DNS Server:
# vi /etc/named.conf
| Configure: |
options { # The directory statement defines the name server's working directory directory "/var/lib/named"; # Write dump and statistics file to the log subdirectory. The # pathenames are relative to the chroot jail. dump-file "/var/log/named_dump.db"; statistics-file "/var/log/named.stats"; # The forwarders record contains a list of servers to which queries # should be forwarded. Enable this line and modify the IP address to # your provider's name server. Up to three servers may be listed. #forwarders { 192.0.2.1; 192.0.2.2; }; # Enable the next entry to prefer usage of the name server declared in # the forwarders section. #forward first; # The listen-on record contains a list of local network interfaces to # listen on. Optionally the port can be specified. Default is to # listen on all interfaces found on your system. The default port is # 53. #listen-on port 53 { 127.0.0.1; }; # The listen-on-v6 record enables or disables listening on IPv6 # interfaces. Allowed values are 'any' and 'none' or a list of # addresses. listen-on-v6 { any; }; # The next three statements may be needed if a firewall stands between # the local server and the internet. #query-source address * port 53; #transfer-source * port 53; #notify-source * port 53; # The allow-query record contains a list of networks or IP addresses # to accept and deny queries from. The default is to allow queries # from all hosts. #allow-query { 127.0.0.1; }; # If notify is set to yes (default), notify messages are sent to other # name servers when the the zone data is changed. Instead of setting # a global 'notify' statement in the 'options' section, a separate # 'notify' can be added to each zone definition. notify no; }; zone "." in { type hint; file "root.hint"; }; zone "localhost" in { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" in { type master; file "127.0.0.zone"; }; zone "example.com" { type master; file "master/example.com.zone"; }; |
# cd /var/lib/named/master
# vi example.com.zone
| Configure: |
$TTL 1W @ IN SOA server1.example.com. root.server1.example.com. ( 42 ; serial (d. adams) 2D ; refresh 4H ; retry 6W ; expiry 1W ) ; minimum IN NS server1 server1 IN A 192.168.1.254 |
# chown root.named example.com.zone
# rcnamed start
# chkconfig named on
# vi /etc/resolv.conf
| Configure: |
nameserver 192.168.1.254 |
3. Setup Postfix mail server and enables smtp auth function:
# vi /etc/postfix/main.cf
| Configure: |
queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/lib/postfix mail_owner = postfix unknown_local_recipient_reject_code = 550 mynetworks = 127.0.0.0/8 debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq setgid_group = maildrop html_directory = /usr/share/doc/packages/postfix/html manpage_directory = /usr/share/man sample_directory = /usr/share/doc/packages/postfix/samples readme_directory = /usr/share/doc/packages/postfix/README_FILES inet_protocols = all biff = no mail_spool_directory = /var/mail canonical_maps = hash:/etc/postfix/canonical virtual_alias_maps = hash:/etc/postfix/virtual virtual_alias_domains = hash:/etc/postfix/virtual relocated_maps = hash:/etc/postfix/relocated transport_maps = hash:/etc/postfix/transport sender_canonical_maps = hash:/etc/postfix/sender_canonical masquerade_exceptions = root masquerade_classes = envelope_sender, header_sender, header_recipient myhostname = server1.example.com program_directory = /usr/lib/postfix inet_interfaces = all masquerade_domains = mydestination = $myhostname, localhost.$mydomain defer_transports = disable_dns_lookups = no relayhost = mailbox_command = mailbox_transport = strict_8bitmime = no disable_mime_output_conversion = no smtpd_sender_restrictions = hash:/etc/postfix/access smtpd_client_restrictions = smtpd_helo_required = no smtpd_helo_restrictions = strict_rfc821_envelopes = no smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination smtp_sasl_auth_enable = no smtpd_sasl_auth_enable = no smtpd_use_tls = no smtp_use_tls = no alias_maps = hash:/etc/aliases mailbox_size_limit = 0 message_size_limit = 10240000 smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination |
# rcsaslauthd start
# chkconfig saslauthd on
# rcpostfix start
# chkconfig postfix on
4. Enable pop3 server:
# chkconfig qpopper on
# rcxinetd restart
5. Add user account:
# useradd -m lawrence
# passwd lawrence
-> Finished
Sunday, July 29, 2007
Linux Distribution Chooser

Linux Distribution Chooser
網路效能測試工具: iperf
iperf
Saturday, July 28, 2007
找RPM的好地方
http://rpmfind.net
http://rpm.pbone.net/
http://www.rpmseek.com/index.html
http://benjiweber.co.uk:8080/webpin/
Thursday, July 12, 2007
Crossover for Linux
老實說啦,很多時候迫於無耐,還是要跑跑MS的東西,比如MS office,沒辦法....大部份的公司還是用MS office,為了這樣,我只好在我的Linux下裝個MS office來用吧。
安裝Crossover,一點也不難,先至官網抓下試用版後(它是一個script file),你只要給它有x的權限後就可以安裝了,這時它會引導你一步一步完成安裝。
安裝完畢後,登出並登入X window後,你應該會在Applications選單中看見Crossover,選擇Install Windows Software,並依照它的引導,很簡單的就能安裝好一些MS下的apps,帽客在RHEL,CentOS與Ubuntu測試過都能安裝成功並執行,最後附上幾張圖給大家參考。
圖1:

圖2 Word:

圖3 Excel:

圖4 IE6.0:
Tuesday, July 10, 2007
Ubuntu 架設nfs server
$ sudo apt-get install nfs-common
$ sudo apt-get install nfs-kernel-server
2. 設定 /etc/exports (For example: 將/mnt/iso share給all net使用)
$ sudo vi /etc/exports
/mnt/iso *(ro,sync)
3. 啟動 nfs server
$ sudo /etc/init.d/nfs-kernel-server start
4. 檢查
$ showmount -e localhost
成功的話應該可以看到這樣的訊息:
Export list for localhost:
/mnt/iso *
Sunday, July 08, 2007
Ubuntu之旅2-Install AdobeReader 7.x
1. 新增apt server:
1.1 加入金鑰:
$ wget -q http://medibuntu.sos-sts.com/repo/medibuntu-key.gpg -O- sudo apt-key add -
1.2 新增套件來源庫:
$ sudo vi /etc/apt/sources.list
## Medibuntu - Ubuntu 7.04 "feisty fawn" ## Please report any bug on https://launchpad.net/products/medibuntu/+bugs deb http://medibuntu.sos-sts.com/repo/ feisty free non-free deb-src http://medibuntu.sos-sts.com/repo/ feisty free non-free
2. 更新與安裝AdobeReader
$ sudo apt-get update; $ sudo apt-get install acroread
3. 新增中文套件:
3.1 download tarball file from here
3.2 解開:
$ sudo tar zxvf FontPack708_cht_i386-linux.tar.gz
3.3 安裝:
$ sudo ./install
圖:
Wednesday, June 27, 2007
Ubuntu 安裝VMware Server
附上一張圖,有圖有真相嘛 :p
Friday, June 22, 2007
Ubuntu之旅
待開機完成後,用剛剛所建立的User登入,第一件事便是來裝個Beryl玩看看,呵呵~真是方便呀!利用apt來安裝真是好用呀~~ 搞定了3D桌面後,便開始安裝各種Applications。
Amule,d4x,gFTP,k3b....都很好裝,跟以往我把RHEL3當桌面,被rpm相依性問題搞爆的痛苦來比真是太美妙了,只是在安裝gcin與stardict時有點小不順,所以先po上來記一下:
-Install stardict
# sudo apt-get install stardict
預設是沒有辭典可以用的唷,這時請到stardict官網抓下辭典,解開後將檔案搬到/usr/share/stardict/dic就可以了。
-Install gcin
# sudo apt-get install gcin
# sudo apt-get install im-switch
# im-switch -s gcin
重新登入,便可使用gcin。
Friday, June 15, 2007
G4Fancontrol
之前Intel base的Mac有出控制風扇的軟體,心想~為何PPC沒有呀!哭~~~難道PPC的使用者就沒有明天了嗎? 哭~~~~ 不過,今天讓我找到了For PPC的風扇控制軟體,哈哈!我的小白出運囉~~ 先測試看看會不會work先。
Website: G4Fancontrol
Thursday, June 07, 2007
Final Fantasy XII:歸來之翼

最近趁有空閒的時候,將NDS上的一款遊戲Final Fantasy XII:歸來之翼破關了,整個遊戲必需使用觸碰筆操作,一開始很不習慣,但玩久了還覺得蠻有趣的!
遊戲的難度不高,幾乎給它來個大軍壓境都能輕鬆獲勝,除了後面幾關之外 :p
雖然我沒玩過PS2的FF12,但這款外傳也帶給我不少樂趣!
官方網站: http://www.square-enix.co.jp/ff12rw/
Wednesday, June 06, 2007
在RHEL5架設DNS Server
01- 安裝system-config-bind這隻套件
02- 到/usr/share/system-config-bind/profiles/下就可以找到named.conf與zone files.
03- 接下來把named.conf copy到 /var/named/chroot/etc/
04- 再把zone files copy到 /var/named/chroot/var/named/
05- 最後把將 /usr/share/doc/bind-*/sample/var/named/named.root copy到/var/named/chroot/var/named/
這樣就大功告成啦!剩下的就是自己改named.conf與新增網域正反解的zone files囉!
Friday, June 01, 2007
Fedora 7 出了!
如果您需要更多的資訊,請參考Fedora Project的官方網站。
Fedora Project
Thursday, May 31, 2007
Linux發行者大收集
http://www.gridter.com/linx/linux.html
Tuesday, May 29, 2007
Partimage & SystemRescueCd
Note: 當您在備份分割區時,記得要先把它umount掉唷!
Partimage: http://www.partimage.org/Main_Page
SystemRescueCd: http://www.sysresccd.org/Main_Page
Monday, May 28, 2007
Chkrootkit
您可以從 http://www.chkrootkit.org/download下載,目前的版本是0.47,如果您是用RHEL,Fedora or SUSE的使用者,到rpmfind.net可以下載到rpm來安裝。
Wednesday, May 23, 2007
在多台Linux Server上同時執行相同的commands
-安裝:
請安裝expect,expect-devel與expectk這三個套件,帽客是RHEL的愛好者,剛好在光碟片中有這三個套件。
-執行:
# multixterm -xc "ssh %n" host1 host2
-這時會跳出三個視窗,其中兩個為host1與host2的console,另一個為multixterm的主視窗,如果你要將命令同時在host1與host2執行的話,請將滑鼠移到stdin window再敲入指令就可以了。
Monday, May 21, 2007
讓使用者暫時無法登入到Linux系統
# touch /etc/nologin
這樣一來只有root可以登入到系統中,待系統維護好了之後,再把這個檔案刪除即可。
Thursday, May 17, 2007
Windows2000下解決抓不到大硬碟容量的方法
在開始->執行中輸入regedit,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \Atapi\Parameters下,建立一個DWORD值,名為EnableBigLba,数值填1。 修改後重啟機器即可。
Tuesday, May 15, 2007
利用shell script大量建立帳號
user1:123456
user2:123456
user3:123456
-撰寫shell script如下:
#!/bin/bash
FILE=$1
for i in `awk -F: '{ print $1 }' $FILE`
do
useradd $i
grep $i $FILE | cut -d":" -f2 | passwd --stdin $i
done
-執行:
# ./mkuser.sh userlist
這樣便可大量建立帳號。
Tuesday, April 17, 2007
Monday, April 16, 2007
架設OpenNMS
OpenNMS安裝指南
Thursday, April 12, 2007
在RHEL5安裝NTOP
[root@new-host-6 tmp]# rpm -ivh ntop-3.2-2.el5.rf.i386.rpm
warning: ntop-3.2-2.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
error: Failed dependencies:
libglib-1.2.so.0 is needed by ntop-3.2-2.el5.rf.i386
[root@new-host-6 tmp]# rpmbuild --rebuild glib-1.2.10-15.src.rpm
Rebuild畫面跳過
[root@new-host-6 tmp]# cd /usr/src/redhat/RPMS/i386/
[root@new-host-6 i386]# ll
total 516
-rw-r--r-- 1 root root 145245 Apr 10 20:08 glib-1.2.10-15.i386.rpm
-rw-r--r-- 1 root root 236817 Apr 10 20:08 glib-debuginfo-1.2.10-15.i386.rpm
-rw-r--r-- 1 root root 129049 Apr 10 20:08 glib-devel-1.2.10-15.i386.rpm
[root@new-host-6 i386]# rpm -ivh *
Preparing... ########################################### [100%]
1:glib ########################################### [ 33%]
2:glib-debuginfo ########################################### [ 67%]
3:glib-devel ########################################### [100%]
[root@new-host-6 tmp]# rpm -ivh ntop-3.2-2.el5.rf.i386.rpm
warning: ntop-3.2-2.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing... ########################################### [100%]
1:ntop ########################################### [100%]
2.備份ntop.conf
[root@new-host-6 tmp]# cp /etc/ntop.conf /etc/ntop.conf.bak
3.建立NTOP儲存db的資料夾:
[root@new-host-6 tmp]# mkdir /var/www/html/ntop
[root@new-host-6 tmp]# chown ntop.ntop /var/www/html/ntop
4.啟動NTOP:
啟動NTOP的方法有兩種,一種是依照/etc/ntop.conf的設定並透過/etc/init.d/ntop start來啟動,另一種則是以命令列的方法啟動NTOP,第一種方法筆者有遇過啟動後一點反應也沒有,用status來看,也沒有任何的訊息,用echo $?才知道指令執行的結果是失敗的,但卻不知原因為何?於是乎,我個人偏愛用命令列的方式啟動NTOP。第一次啟動NTOP時會要求輸入帳號與密碼,請用admin/admin輸入即可。
[root@new-host-6 tmp]# ntop -P /var/www/html/ntop/ -u nobody
啟動畫面跳過,跑到一半時會要求輸入密碼
ntop startup - waiting for user response!
Please enter the password for the admin user:
Please enter the password again:
5.瀏覽NTOP website:
預設的port為3000,如果您要自訂port的話,請在啟動NTOP時,加上一個參數,-w 比如說如果我要把它改成6000的話,可以這樣做: ntop –P /var/www/html/ntop –u nobody –w 6000
接下來開啟瀏覽器,輸入 http://IP address:3000,就可以看到NTOP的流量統計的網頁。
後記:
更多有關於NTOP的參數,請參考man page。
Tuesday, April 10, 2007
在RHEL5下實作LVM
-新增三個LVM的partition,各100M
-新增三個PV
-新增一個VG,size=100M
-新增一個LV,size=50M
-動態放大VG,size+200M
-動態放大LV,size+50M
-新增三個LVM的partition,各100M
root@new-host-6:~^G[root@new-host-6 ~]# fdisk /dev/hda
The number of cylinders for this disk is set to 1044.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
First cylinder (908-1044, default 908):
Using default value 908
Last cylinder or +size or +sizeM or +sizeK (908-1044, default 1044): +100M
Command (m for help): n
First cylinder (921-1044, default 921):
Using default value 921
Last cylinder or +size or +sizeM or +sizeK (921-1044, default 1044): +100M
Command (m for help): n
First cylinder (934-1044, default 934):
Using default value 934
Last cylinder or +size or +sizeM or +sizeK (934-1044, default 1044): +100M
Command (m for help): p
Disk /dev/hda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 778 6144862+ 83 Linux
/dev/hda3 779 843 522112+ 82 Linux swap / Solaris
/dev/hda4 844 1044 1614532+ 5 Extended
/dev/hda5 844 907 514048+ 83 Linux
/dev/hda6 908 920 104391 83 Linux
/dev/hda7 921 933 104391 83 Linux
/dev/hda8 934 946 104391 83 Linux
Command (m for help): t
Partition number (1-8): 6
Hex code (type L to list codes): 8e
Changed system type of partition 6 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-8): 7
Hex code (type L to list codes): 8e
Changed system type of partition 7 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-8): 8
Hex code (type L to list codes): 8e
Changed system type of partition 8 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/hda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 778 6144862+ 83 Linux
/dev/hda3 779 843 522112+ 82 Linux swap / Solaris
/dev/hda4 844 1044 1614532+ 5 Extended
/dev/hda5 844 907 514048+ 83 Linux
/dev/hda6 908 920 104391 8e Linux LVM
/dev/hda7 921 933 104391 8e Linux LVM
/dev/hda8 934 946 104391 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
重新開機,讓它生效!
[root@new-host-6 ~]# reboot
-新增三個PV
[root@new-host-6 ~]# pvcreate /dev/hda6
Physical volume "/dev/hda6" successfully created
[root@new-host-6 ~]# pvcreate /dev/hda7
Physical volume "/dev/hda7" successfully created
[root@new-host-6 ~]# pvcreate /dev/hda8
Physical volume "/dev/hda8" successfully created
驗證一下
[root@new-host-6 ~]# pvdisplay
--- NEW Physical volume ---
PV Name /dev/hda6
VG Name
PV Size 101.94 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID NPXgcU-Pad8-EsG7-gFtI-hK66-8ua8-H0c78U
--- NEW Physical volume ---
PV Name /dev/hda7
VG Name
PV Size 101.94 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID NeXk3q-RKtl-Ias2-TIO0-0gbq-IdU9-XuL5DC
--- NEW Physical volume ---
PV Name /dev/hda8
VG Name
PV Size 101.94 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Y9ERKn-oo61-mWj3-IOIZ-ba2p-QJID-UGzi4Q
-新增一個VG,size=100M
[root@new-host-6 ~]# vgcreate rootvg /dev/hda6
Volume group "rootvg" successfully created
驗證一下
[root@new-host-6 ~]# vgdisplay
--- Volume group ---
VG Name rootvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 100.00 MB
PE Size 4.00 MB
Total PE 25
Alloc PE / Size 0 / 0
Free PE / Size 25 / 100.00 MB
VG UUID 2XpLIi-L1Cp-IbbB-cJ38-id6b-U6Qh-K4j3Gu
-新增一個LV,size=50M
[root@new-host-6 ~]# lvcreate -L +50M -n lv01 rootvg
Rounding up size to full physical extent 52.00 MB
Logical volume "lv01" created
驗證一下
[root@new-host-6 ~]# lvdisplay
--- Logical volume ---
LV Name /dev/rootvg/lv01
VG Name rootvg
LV UUID zWA1PJ-iy4L-PZcG-NgNw-eSue-7xmP-Tw2HNs
LV Write Access read/write
LV Status available
# open 0
LV Size 52.00 MB
Current LE 13
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0
建立一個mount point: /mnt/lvm,並將其格式化成ext3檔案格式,掛載於/mnt/lvm下
[root@new-host-6 ~]# mkdir /mnt/lvm
[root@new-host-6 ~]# mke2fs -j /dev/rootvg/lv01
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
13328 inodes, 53248 blocks
2662 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=54525952
7 block groups
8192 blocks per group, 8192 fragments per group
1904 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@new-host-6 ~]# mount /dev/rootvg/lv01 /mnt/lvm/
[root@new-host-6 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 5.7G 2.9G 2.6G 53% /
/dev/hda1 99M 9.8M 84M 11% /boot
tmpfs 125M 0 125M 0% /dev/shm
/dev/hda5 487M 11M 451M 3% /home
/dev/mapper/rootvg-lv01
51M 4.9M 43M 11% /mnt/lvm
Copy一些檔案到此目錄下,以供等會驗證動態放大檔案系統時,資料不會消失
[root@new-host-6 ~]# cp -r /boot/ /mnt/lvm/
[root@new-host-6 ~]# cd /mnt/lvm/
[root@new-host-6 lvm]# ll
total 13
drwxr-xr-x 4 root root 1024 Apr 10 20:17 boot
drwx------ 2 root root 12288 Apr 10 20:15 lost+found
[root@new-host-6 lvm]#
-動態放大VG,size+200M
[root@new-host-6 lvm]# vgextend rootvg /dev/hda7 /dev/hda8
Volume group "rootvg" successfully extended
驗證一下
[root@new-host-6 lvm]# vgdisplay
--- Volume group ---
VG Name rootvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 300.00 MB
PE Size 4.00 MB
Total PE 75
Alloc PE / Size 13 / 52.00 MB
Free PE / Size 62 / 248.00 MB
VG UUID 2XpLIi-L1Cp-IbbB-cJ38-id6b-U6Qh-K4j3Gu
-動態放大LV,size+50M
[root@new-host-6 lvm]# lvextend -L +50M /dev/rootvg/lv01
Rounding up size to full physical extent 52.00 MB
Extending logical volume lv01 to 104.00 MB
Logical volume lv01 successfully resized
驗證一下
[root@new-host-6 lvm]# lvdisplay
--- Logical volume ---
LV Name /dev/rootvg/lv01
VG Name rootvg
LV UUID zWA1PJ-iy4L-PZcG-NgNw-eSue-7xmP-Tw2HNs
LV Write Access read/write
LV Status available
# open 1
LV Size 104.00 MB
Current LE 26
Segments 2
Allocation inherit
Read ahead sectors 0
Block device 253:0
[root@new-host-6 lvm]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 5.7G 2.9G 2.6G 53% /
/dev/hda1 99M 9.8M 84M 11% /boot
tmpfs 125M 0 125M 0% /dev/shm
/dev/hda5 487M 11M 451M 3% /home
/dev/mapper/rootvg-lv01
51M 9.1M 39M 20% /mnt/lvm
此時因為還沒執行線上更新大小的動作,所以磁區大小還不會放大喔!
這裡跟RHEL4不同,改用resize2fs 來線上更新
[root@new-host-6 lvm]# resize2fs /dev/rootvg/lv01
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/rootvg/lv01 is mounted on /mnt/lvm; on-line resizing required
Performing an on-line resize of /dev/rootvg/lv01 to 106496 (1k) blocks.
The filesystem on /dev/rootvg/lv01 is now 106496 blocks long.
[root@new-host-6 lvm]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 5.7G 2.9G 2.6G 53% /
/dev/hda1 99M 9.8M 84M 11% /boot
tmpfs 125M 0 125M 0% /dev/shm
/dev/hda5 487M 11M 451M 3% /home
/dev/mapper/rootvg-lv01
101M 9.5M 87M 10% /mnt/lvm
[root@new-host-6 lvm]# cd /mnt/lvm/
[root@new-host-6 lvm]# ll
total 13
drwxr-xr-x 4 root root 1024 Apr 10 20:17 boot
drwx------ 2 root root 12288 Apr 10 20:15 lost+found
資料沒有遺失,磁區確成功放大了!
Todos
下載處: http://www.macupdate.com/info.php/id/22275/todos
Mac OS真是桌面環境的領導品牌呀!
Monday, April 09, 2007
Tuesday, April 03, 2007
最近研讀的書籍
Monday, April 02, 2007
透過NTP自動更新系統時間與硬體時間
[root@server1 ~]# cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime
cp: overwrite `/etc/localtime'? y
[root@server1 ~]# vi /etc/sysconfig/clock
ZONE="Asia/Taipei"
UTC=false
ARC=false
2.利用ntpdate更新系統時間:
[root@server1 ~]# date
Mon Apr 2 13:00:05 CST 2007
[root@server1 ~]# ntpdate time.stdtime.gov.tw
2 Apr 16:44:31 ntpdate[2904]: step time server 220.130.158.52 offset 13454.935451 sec
[root@server1 ~]# date
Mon Apr 2 16:44:32 CST 200
3.更新硬體時間:
[root@server1 ~]# hwclock –w
4.利用crontab設定每小時自動更新系統時間與硬體時間:
[root@server1 ~]# crontab –e
01 * * * * /usr/sbin/ntpdate time.stdtime.gov.tw;/sbin/hwclock -w
Monday, March 26, 2007
以SLES10快速架設閘道式防火牆
以Linux架設Firewall算是一個蠻物美價廉的方案,因為筆者在真實的環境中利用PIII這種老機器架設Firewall ,發覺還挺穩定的,使用到現在還沒發現有任何的問題,因此若您手邊有一些退役的機器,不如將它當成Firewall來用,給它個第二春吧!好了,廢話不多說,您可以參考以下的文件,快速建立一台Linux的Firewall。
概念:
這裡要介紹的是所謂的閘道式防火牆,目的在於隔開內外網路的連線,需求如下:
外部主機 -> 防火牆主機 (不可)
內部主機 -> 防火牆主機 (不可)
外部主機 -> 內部主機 (不可)
內部主機 -> 外部主機 (可, 但應只開放某些對外的連線)
事實上這種設定的方法,還說不上真正的安全!因為對內部的主機我採用的是完全信任的方案,但所謂:內賊難防!最好的方法還是要對內部主機採取安全控管,不過因為筆者是在家中自行架設並測試的,所以我就採用了較鬆散的方法,這一點請原諒。
環境:
eth0 外部網路 (10.6.7.0/24)-----Linux Firewall----- eth1內部網(172.17.2.0/24)
開啟ip_forwarding的功能:
# vi /etc/sysctl.conf
net.ipv4.ip_forward=1
# sysctl –p
# vi /etc/init.d/boot.local
sysctl –p
設定iptables的相關規則:
預設阻擋所有連線之基本原則:
# iptables –P INPUT DROP
# iptables –P FORWARD DROP
允許loopback介面的連線:
#iptables –A INPUT –i lo –j ACCEPT
阻擋非loopback介面但確是127.0.0.0/8的IP
# iptables –A INPUT –i ! lo –s 127.0.0.0/8 –j DROP
# iptables –A OUTPUT –o ! lo –s 127.0.0.0/8 –j DROP
允許後續連線:
# iptables –A INPUT –m state --state RELATED,ESTABLISHED –j ACCEPT
# iptables –A FORWARD –m state --state RELATED,ESTABLISHED –j ACCEPT
阻擋可疑的封包:
# iptables –A INPUT –m state --state INVALID –j DROP
# iptables –A FORWARD –m state --state INVALID –j DROP
阻擋TCP第一個連線非SYN類型的封包:
# iptables –A INPUT –p tcp ! –syn –m state --state NEW –j DROP
# iptables –A FORWARD –p tcp ! –syn –m state --state NEW –j DROP
允許內部主機對外的連線:
# iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT
設定NAT規則:
# iptables –t nat –A POSTROUTING –o eth0 –s 172.17.2.0/24 –j MASQUERADE
以上是iptables的相關設定,第一次接觸的iptables的人可能會罵,到底你是在寫什麼東西呀!有看沒有懂,這點也是非常抱歉,網路上已經有許多先進撰寫過很多很棒的iptables規則說明與基本語法了,請您不妨利用google大神,去尋找吧!這裡講求的是快速架設,所以不會多加論述背後的原理。
辛辛苦苦打了這麼多指令,重開機是否會不見呢?答案是會的!如果您沒有將其存起來,當您重開機時是會叫苦連天的,所以請您依照以下的方法,將它先存成一個文字檔,待開機時再將它載入。
# iptables-save > /etc/sysconfig/iptables.save (將iptables的規則存成一文字檔)
# vi /etc/init.d/boot.local
iptables-restore < /etc/sysconfig/iptables.save (開機時將iptables的規則從檔案讀入)
後記:
以上便是快速架設Linux Firewall的方法,強烈建議您先懂原理再來實作將會讓您對於iptables更加了解,用起來也會順手些,畢竟iptables的語法看起來是有那麼一點小複雜。
Thursday, March 22, 2007
OSX Startup keyboard commands help in troubleshooting
When troubleshooting, performing maintenance, or otherwise starting up your Mac OSX computer in an abnormal fashion, there are a few keyboard shortcuts that you may or may not know about that can help you. Below is a list of them with an explanation of what they do:
- X = Force Mac OS X startup
- Option = Brings up a screen with startup volume choices (slow process, may take a while)
- Option+Command+Shift+Delete = Bypass primary startup volume and seek a different startup volume (such as a CD or external disk)
- C = Start up from a CD that has a system folder
- N = Attempt to start up from a compatible network server (NetBoot)
- T = Start up in FireWire Target Disk mode (very handy for plugging your Mac into another as an external hard drive)
- Shift = start up in Safe Boot mode and temporarily disable login items and non-essential kernel extension files (Mac OS X 10.2 and later)
- Command+V = Start up in Verbose mode.
- Command+S = Start up in Single-User mode
- Command+Option+p+r = Zap PRAM. Hold down until second chime.
- Command+Option+n+v = Clear NV RAM. Similar to reset-all in Open Firmware.
- Command+Option+o+f = Boot into open firmware
- Hold mouse button down = Force eject a CD/DVD
調查利用 | (pipe) 連結各指令的執行結果
此時便可以透過PIPESTATUS這個"陣列變數"來得到每一個指令執行的結果是否正確!
看看以下的例子您便能明白:
[root@localhost ~]# cat docu.txt | wc -l
41
[root@localhost ~]# rm docu.txt
rm: remove regular file `docu.txt'? y
[root@localhost ~]# cat docu.txt | wc -l
cat: docu.txt: No such file or directory
0
[root@localhost ~]# echo ${PIPESTATUS[0]}
1
這樣應該瞭解了吧! 從這可知道各指令執行後的結果由0開始, 所以cat docu.txt的執行結果將存在PIPESTATUS[0]中,而wc -l則存放在PIPESTATUS[1]中,如此方便debug用.
Note: 指令若能正確被執行,則$?變數便會是0,非0則代表指令執行有誤,在這個例子中,您並不能以$?來找出那一段的指令執行錯誤,因為利用|(PIPE)所串連起來的指令,$?將會存放最後一個指令執行後的結果.
Note: PIPESTATUS的值將隨著每次指令的執行而異動!
Wednesday, March 21, 2007
建構RHEL5的網路安裝Server
For DVD:
# dd if=/dev/dvd of=/NFS/RHEL5/RHEL5.iso
For CD-ROMs:
# dd if=/dev/cdrom of=/NFS/RHEL5/RHEL5_diskX.iso
Note: X代表第幾片光碟。
設定並啟動NFS Server:
# vi /etc/exports
/NFS/RHEL5 *(ro,sync)
# service nfs start; chkconfig nfs on
Saturday, March 17, 2007
紅帽推出企業Linux 5 賽門鐵克來相挺-旗下儲存管理產品將支援RHEL 5
賽門鐵克表示,他們的Veritas Storage Foundation、Veritas Cluster Server以及Veritas NetBackup產品都將在90內完全支援紅帽最新旗艦Linux作業系統。為了協助紅帽用戶來更佳管理他們的資料中心,賽門鐵克將把開原碼Xen伺服 器虛擬工具列入RHEL 5內一起推出。
此外,賽門鐵克與紅帽也推出共同客戶服務方案,用來提供更快速更周詳的客戶支援。新的共同服務方案乃是藉由給予技術支援來讓工程師可以遠端遙控讀取賽門鐵克與紅帽的測試實驗室環境,結合雙方伺服器及儲存基礎架構來充分傳達客戶支援需求。
出處: CPRO 資傳網 http://cpro.com.tw/channel/news/content/?news_id=54431&cid=A0000
Friday, March 16, 2007
定期檢查系統中SUID的檔案
-首先,在裝完OS後,先執行以下的命令:
find / -path '/proc' -prune -or -perm -u+s -exec ls -l {} \; > /tmp/suidlist-init
簡單的說就是利用find指令將除了/proc目錄外,所有具有suid權限的檔案找出來,並且存到/tmp/suidlist-init中
-撰寫scripr file:
# vi /root/bin/checksuid.sh
#!/bin/bash
LOGFILE="/tmp/suidlist-`date +%Y-%m-%d`"
RESULTFILE="/tmp/suid_check_result-`date +%Y-%m-%d`"
find / -path '/proc' -prune -or -perm -u+s -exec ls -l {} \; > $LOGFILE
diff /tmp/suidlist-init "$LOGFILE" > $RESULTFILE
mutt -s "SUID CHECK RESULT" root < $RESULTFILE
-定期每天AM 3點檢查,並將結果mail給root
#crontab -e
0 3 * * * /root/bin/checksuid.sh
這麼一來,每天收收信就可以知道目前所有具SUID檔案的狀況了!
Thursday, March 15, 2007
bash下array的幾種使用方法
#一舉將變數設定到陣列中
array=(Redhat Novell MicroSoft Sun IBM HP Dell)
#利用for loop將陣列中的變數印出
for i in 0 1 2 3 4 5 6
do
echo "array[$i]=${array[$i]}"
done
#設定間隔符號為: 搭配$*將陣列的值一口氣輸出
IFS=:
echo "${array[*]}"
#設定間隔符號為換行,搭配$*將陣列的值一口氣輸出
IFS=$'\n'
echo "${array[*]}"
#將陣列中的值利用$@一口氣輸出與$*不同的是,不會將值合併成單一字串
echo "${array[@]}"
#印出陣列中有幾筆資料
echo "${#array[@]}"
執行結果:
array[0]=Redhat
array[1]=Novell
array[2]=MicroSoft
array[3]=Sun
array[4]=IBM
array[5]=HP
array[6]=Dell
Redhat:Novell:MicroSoft:Sun:IBM:HP:Dell
Redhat
Novell
MicroSoft
Sun
IBM
HP
Dell
Redhat Novell MicroSoft Sun IBM HP Dell
7
Wednesday, March 14, 2007
半價網
如果真得可以半價買的夢想中的商品,那是多麼地令人興奮呀!! 也因此帽客預約了Apple iMac 2.0Ghz MA590TA/A, 呵~原價42900半價21900, 能成功嗎? 期待中 =)
半價網 http://www.50100.com.tw
Monday, March 12, 2007
Redhat Enterprise Linux 5.0 蓄勢待發!
RHEL 5以連結伺服器虛擬與紅帽的叢集支援來整合Xen架構伺服器與儲存虛擬方案。此外,RHEL 5具有虛擬管理功能,能夠使得安裝及管理Xen虛擬機器變得更容易。新版本RHEL從Linux核心2.6.9版升級至2.6.18版,紅帽更宣稱延伸強 化了作業系統的網路與I/O子系統。
資料來源: CPRO 資傳網 http://cpro.com.tw/channel/news/content/?news_id=54344
Wednesday, March 07, 2007
利用Kickstart安裝Redhat Linux
Note: ks.cfg這個檔案是依據手動安裝時所選取的選項與設定,自行產生的範例檔, 原來的檔名與位置是在 /root/anaconda-ks.cfg.
Monday, March 05, 2007
Linux下的備份利器-cpio
1.首先,先將/etc完整備份到/tmp下:
# cd /etc;find . -print | cpio -oa > /tmp/etc_backup.cpio
2.將*.conf回復到/tmp下:
# cd /tmp; cpio -im "*.conf" < /tmp/etc_backup.cpio
附帶提一下常見的壓縮工具,它們的壓縮比(優到劣)通常是: tar.bz2 > tgz > tar > cpio > dump
Thursday, March 01, 2007
Tuesday, January 30, 2007
誰佔用我的硬碟空間??
PS 其實兇手是我自己 =.=" 趕快改寫一下crontable囉~~~
Friday, January 26, 2007
NTOP
Monday, January 22, 2007
Linux合併頻寬
我選用CentOS搭配iproute2與iptables來做,不過.....我只能說我做對了一半.....對外都沒有問題,但是如果要透過它連到內部的FTP Server,三條線路就時通時不通了!這點就很奇怪了,讓我有點confuse...... 這樣的下法應該是work的呀.....
iptables -t nat -A PREROUTING -s eth1 -p tcp --dport 21 -j DNAT --to 192.168.1.100:21
iptables -t nat -A PREROUTING -s eth2 -p tcp --dport 21 -j DNAT --to 192.168.1.100:21
iptables -t nat -A PREROUTING -s eth3 -p tcp --dport 21 -j DNAT --to 192.168.1.100:21
Friday, January 12, 2007
改變預設smtp port
Add a line to your /etc/services:
smtp2 5000/tcp
Now edit your master.cf so the smtpd line starts with smtp2:
smtp2 inet n - n - - smtpd
service postfix restart
原文網址
Monday, January 08, 2007
小小改造Mac CLI
$ sudo vi /etc/bashrc
alias ll='ls -l -w -G'
alias ls='ls -w -G'
Wednesday, December 27, 2006
Linux Transparent Firewall架設完全攻略
很多時候,在不想變動原本的網路架構下,如果有需要將網路隔離開時,就需用到透通式的防火牆,所謂的透通式的防火牆它是個in-line mode的裝置,你可以把它想成是一個Bridge裝置,但確有可以過濾封包的功能,提醒一下既然是Bridge裝置,當然它就是屬於Layer 2那一層囉!
Environment:
以下是筆者所測試的環境:
Server ---------- Firewall ---------- Client
Server IP address: 192.168.1.100
Client IP address: 192.168.1.200
Firewall IP address: 192.168.1.1
Objective:
只允許Server可以透過網芳將檔案傳送到Client端(單向),Server與Client可互相透過icmp echo request確認彼此間的連線 (雙向) 。
Setup Procedure:
1.Bind兩張網卡成一個bridge interface:
Firewall至少要有兩張網卡,然後只要將它們bind起來,Firewall就可以成了一個Bridge裝置。首先要安裝bridge-utils與bridge-utils-devel這兩個套件,這兩個套件可以把eth0與eth1 bind成一個bridge裝置,正好符合我們以上的需求,筆者是用RHEL4.4架設的,非常方便的是這兩個套件在安裝光碟裡面就有。
# rpm –ivh bridge-utils-*
緊接著將eth0與eth1 bind成bri0 interface.
# ifconfig eth0 0.0.0.0
# ifconfig eth1 0.0.0.0
# brctl addbr bri0
# brctl addif bri0 eth0
# brctl addif bri0 eth1
執行brctl show確認一下:
# brctl show
bridge name bridge id STP enabled interfaces
bri0 8000.00034730c5b3 no eth0
eth1
好了問題來了,既然bri0 interface已經建置好了,那麼是否可以在上面設定IP呢?答案當然是可以的囉~不然怎麼remote control它呢? 至於設定的方法有兩種,一種是設定Static IP,另一種是透過DHCP Server get到IP,以下是設定的方法:
Static IP:
# ifconfig bri0 192.168.1.1 netmask 255.255.255.0 up
DHCP Client:
# dhclient bri0
以上的所有動作您可以把它寫成一個shell script file,並讓它在開機時自動執行,以RHEL的話是放在/etc/rc.local,順便一提SLES是/etc/init.d/boot.local
2. Allow IP forwarding
# vi /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
#sysctl –p
請測試一下,目前Server與Client的網路是相通的。
3. 設定Policy
重頭戲來了,如何設定Policy? 一般來說Linux firewall的設定是透過iptables,iptables預設分為3個table,5個chain,我要把rule設定在那個table及那個chain是一開始該有的認知。先提醒一個觀念,iptables比對的順序為mangle->nat->filter,這是什麼意思?事實上mangle,nat與filter就是預設的三個table,若前面的規則是allow,到了後面的table卻是deny的話,那就是deny! 反之若前面是deny而後面是allow的話,那就是allow! 這是套用於不同table時,規則相互抵觸時的法則,想一想有沒有可能在相同的chain中,設定相互抵觸的規則?當然是有可能的囉!這時是first match! 當hit到規則後,則不在進行比對,這點請特別注意!
可以確定的是,利用filter table就可以設定我們的policy,接下來考慮一下要設定在那個chain? INPUT OUTPUT FORWARD? 答案是 FORWARD,別忘了!它是個Bridge裝置,封包當然是透過eth0到eth1或是eth1到eth0囉!
為了最高安全指導原則,首先要把 FORWARD default policy設定為DROP,只放行SMB protocol與icmp echo request.
# iptables –P FORWARD DROP
測試一下 Server與Client目前應該是完全不通!
設定允許n個封包之後的連線:
# iptables –A FORWARD –m state –state RELATED,ESTABLISHED –j ACCEPT
設定允許icmp echo request:
# iptables –A FORWARD –s 192.168.1.0/24 –p icmp –icmp-type 8 –j ACCEPT
設定只有Server可以透過網芳將檔案傳送到Client:
# iptables –A FORWARD –s 192.168.1.100/32 –d 192.168.1.200/32 –p tcp –dport 139 –j ACCEPT
# iptables –A FORWARD –s 192.168.1.100/32 –d 192.168.1.200/32 –p tcp –dport 445 –j ACCEPT
這樣一來便可達到我們的需求!
歡迎轉載,不過請註明出處唷~ ^^
筆者簡介:
Lawrence Chiu – 已取得RHCE與NCLP認證,曾任職於D-Link testing engineer負責資安產品的測試,現任職於TrendMicro Anti-Spam Lab administrator。
利用Linux架設Transparent Firewall
Tuesday, December 19, 2006
設定DHCP Server只由某張網卡分配出去
- 開啟 /etc/init.d/dhcpd
- 找到 daemon /usr/sbin/dhcpd ${DHCPDARGS} 2>/dev/null 修改為 daemon /usr/sbin/dhcpd eth1 ${DHCPDARGS} 2>/dev/null
- # service dhcpd start; chkconfig dhcpd on
這麼一來DHCP Server就只會從eth1分配IP出去!
至於SLES10,很簡單的囉~ 使用yast2來設定就好了,這裡就不多加詳述了.
Monday, December 18, 2006
Linux iptables SNAT+DNAT+FTP passive mode
如果有需要這篇文章的朋友,請與我連繫. =)
Thursday, December 14, 2006
帽客的iptables設定- 單機篇
# Generated by iptables-save v1.2.11 on Tue Dec 12 23:24:06 2006
*filter
:INPUT DROP [1032:90974]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1758:160527]
:BADPKT - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j DROP
-A INPUT -m state --state INVALID -j BADPKT
-A INPUT -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j BADPKT
-A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW -j ACCEPT
-A INPUT -j LOG --log-prefix "** Firewall INPUT DROP **"
-A BADPKT -j DROP
COMMIT
# Completed on Tue Dec 12 23:24:06 2006
解說:
Create一個新chain名為BADPKT,預設動作為DROP
-A INPUT -i lo -j ACCEPT -> 對於loopback interface的封包是接受的
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j DROP -> 對於127.0.0.1的IP位址,來源的介面必需為loopback,否則DROP
-A INPUT -m state --state INVALID -j BADPKT -> 封包狀態若不正常予以DROP
-A INPUT -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j BADPKT -> 對於tcp的第一個封包必需是SYN,否則DROP
-A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j ACCEPT -> 允許ssh的連線請求,最好加上 -s參數限定那個IP or subnet才可連線
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -> 允許本機第n個封包(自己發出去的嘛! 當然對之後的封包也要允許呀!)
-A INPUT -j LOG --log-prefix "** Firewall INPUT DROP **" -> 將iptables log記錄到/var/log/messages
-A BADPKT -j DROP -> BADPKT預設的policy
Tuesday, December 12, 2006
Install VMware Server on SLES10
xorg-x11-libs
gcc
kernel-source
之後用rpm安裝,並執行vmware-config.pl,
一步一步配置VMware Server的環境.
Thursday, December 07, 2006
帽客桌面
關閉SLES10的firewall
# rcSuSEfirewall2 stop -> 目前關閉,但當系統重新開機後,還是啟動
# chkconfig SuSEfirewall2_setup off
# chkconfig SuSEfirewall2_init off -> 以上兩行設定系統啟動時,不啟動firewall
如果對照到Redhat是這樣子的:
# service iptables stop -> 目前關閉,但當系統重新開機後,還是啟動
# chkconfig iptables off -> 設定系統啟動時,不啟動firewall
Monday, December 04, 2006
Shell Script: 確定user目前是否登入系統
#!/bin/bash
if [ $# -ne 1 ]; then
echo "usage: finduser username"
else
who | grep "$1"
fi
有趣的語法
cmd1
cmd2
cmd3
}
這樣可能看不太懂吧!如果改成這樣呢?
test -f /etc/issue && {
cat /etc/issue
}
如果還不能了解的話,請往下看:
if [ -f /etc/issue ]; then
cat /etc/issue
fi
有趣吧 =)
Tuesday, November 21, 2006
Backup files to remote side
tar -cvf - /tmp/testdir/ | gzip -c | ssh root@192.168.1.34 "cat > /tmp/testdir.tgz"
這樣做可省硬碟空間與時間。
Monday, November 13, 2006
最近真忙
Wednesday, November 01, 2006
Tuesday, October 31, 2006
Build source rpm
- Download *src.rpm (http://rpmfind.net -> 大部份的rpm在這都可以找到)
- # rpmbuild --rebuild *src.rpm
- # Build完後的rpm會放在此目錄下 /usr/src/redhat/RPMS/
Friday, October 27, 2006
在RHEL上架設SLES10的網路安裝伺服器
如果要在RHEL的機器上架設SLES10呢? 似乎不能這樣做.....,今天靈機一動想到了一個方法,或許不是最佳解法,但事後證明它是可以達成我的目地。
Setup Procedure:
- 找台灌有SLES10的機器
- 啟動yast
- 在Misc中執行Installation Server,將光碟片中的檔案copy到某一目錄
- 將此目錄透過scp或其它的方式,copy到RHEL的機器上
- 透過NFS將此目錄分享出來
- 放入SLES10第一片光碟
- 選擇安裝SLES10
- 按下F4,把安裝來源改成NFS
Thursday, October 26, 2006
Redhat釋出Fedora Core 6
這星期計劃將它裝起來看看有啥新東西,目前我的主力還是以Redhat為主SUSE為輔.
下載網址: http://www.redhat.com/fedora/
Tuesday, October 24, 2006
收到NCLP証書了
不過聽說是被郵差大哥丟在地上,天呀!下雨天ㄟ......@#@#$#$%$^$%%^ 好險沒用的很濕......
打開一看,看到了NCLP的證書, NCLP會員卡, 還有一本Novell雜誌. (沒有衣服...殘念..)
不過總算是安全寄到我家了,呼呼~找個時間買個框框,把它框起來放在RHCE證書旁 =)
Friday, October 20, 2006
LPI Level 3 Betas Underway
來源:
http://certcities.com/editorial/news/story.asp?EditorialsID=1112
Wednesday, October 18, 2006
在Mac OSX上閱讀CHM文件
http://chmox.sourceforge.net/
Wednesday, October 11, 2006
SLES10預設的桌面環境
Friday, October 06, 2006
NCLP PASSED
路程中碰上了小塞一下,好險有趕上。。老天保佑!
一進考場,嗯~~~~等了一會與承辦人員辦好手續(交錢啦)就進小房間準備考試囉!!
oh ? 怎麼考試時間只有150分鐘? 不是有180分鐘嗎?? 嗯.....請考場人員確認......嗯....先不管了.....開始考試吧! (記得幫我跟Novell反應一下呀!是180分鐘呀!) 嗯!衝吧!!!!
疑??怎麼不能login? 嗯嗯 好吧 還沒開始就有問題 =.= 工程師troubleshooting中.................
OK! 可以開始考了!還幫我加了些時間唷!呼呼~感謝Novell與考場中心。
呵呵,考試的題目.........嗯嗯~ 算有準備到啦! 考那些呀? 嗯......就胡大那篇文章中,那些打星星的重點!必看必看呀!
考題,老實說並不難,題目也沒有RHCE多,唯一比較可怕的就是.....網路連線速度有點慢,覺得是在考耐心吧!不過180分鐘的時間絕對做得完!我大概花了150鐘的時間來設定並從頭檢查了一遍。
之後就按下了決定我能不能好好過中秋節的 End Exam button,等了漫長的五分鐘.......................................... 嗯~我過了!哈哈740分!感謝老天爺 ^-^
年中時,曾在此留言說年底時要考過NCLP,今天總算達成這個目標。
在此跟大家分享一下我所準備的資料:
- NCLP 3019 課本 (看看就好)
- Alex Lin 老師的筆記與講義 (重要)
- 針對胡Sir 所列的重點,為主要練習目標 (非常重要)
- 柏青哥的SuSE Linux (非常重要,範例要多做)
- SuSE Linux 管理手冊 (季明)(非常重要,書中每個章節的Lab必做)
- RHEL 3, 133與253課本的練習題
- OpenSuSE Blog (http://opensuse.blogspot.com/) (非常重要)
- 聯成電腦認證課程 討論區 (心得分享)
- 鳥哥網站 (心得分享)
以上,感謝我老婆在背後默默地支持我!以家人為持續學習的原動力!
PS. 沒想到我是台北恆逸,第一位參加NCLP的考生。
Wednesday, October 04, 2006
將 geeko的quota policy assing給uid大等於1000的user
for VAR in `cut -d: -f3 /etc/passwd`
do
declare -i VAR
if [ "$VAR" -ge 1000 ]; then
cat /etc/passwd | grep "$VAR" >> /tmp/userlist
fi
done
for VAR2 in `awk -F: '{print $1}' /tmp/userlist`
do
#echo $VAR2
edquota -p geeko "$VAR2"
done
rm /tmp/userlist
PS 雖然可以work,還有點缺點 。
Monday, October 02, 2006
修復MS outlook ost or pst files
如果您將 Microsoft Outlook® 資料保留在電腦中,則您使用的是「個人資料夾」檔案 (.pst) 或「離線資料夾」檔案 (.ost)。若要避免遺失資料,您必須知道如何修復這些檔案。
如果您的 .pst 檔案已損壞,則可使用 Outlook 所包含的一個工具來更正問題,而不需切換至備份。此工具 (收件匣修復工具) 會在您安裝 Outlook 時安裝至您的硬碟中。
如果您的 .ost 檔案已損壞,則可使用 Outlook 所包含的一個工具來更正問題。此工具 (OST 整合工具) 可掃描及修復 .ost 檔案。如果它無法完全解決問題,您可以 關閉 .ost 檔案再建立新的檔案。
修復個人資料夾檔案 (.pst)
如果您開啟 Outlook .pst 檔案並收到下列訊息,則可能需要使用 [電子郵件信箱修復工具]:
無法展開資料夾。無法開啟這組資料夾。在檔案 drive:\Documents and Settings\user\Local Settings\Application Data\Microsoft\Outlook\Outlook.pst 中找到錯誤。請關閉所有郵件功能的應用程式,然後再使用 [電子郵件信箱修復工具] 來更正錯誤。
附註 訊息中指定的檔案路徑可能隨著您電腦使用的作業系統而改變。
- 在 [開始] 功能表,按一下 [執行]。
- 在 [開啟] 方塊中輸入
drive:\Program Files\Common Files\System\Mapi\LocaleID\scanpst.exe
其中,LocaleID 是為您 Microsoft Office 安裝的區域識別碼 (LCID)。例如,美式英文的 LCID 為 1033。如需 LCID 清單,請參閱 Microsoft Office 的 [說明]。
- 按一下 [確定]。
- 在 [所要掃描的檔案名稱] 方塊中,輸入上述錯誤郵件所給定的路徑和檔名。
附註 您可能無法使用 [瀏覽] 按鈕來尋找這個檔案,因為它是位於隱藏的資料夾中。
- 若要為掃描期間的記錄錯誤變更選項,請按一下 [選項]。如果您選擇 [取代原有記錄檔] 或 [附加到記錄檔],則記錄檔會與 .pst 檔儲存至相同的目錄下。
- 按一下 [開始]。
- 完成檔案掃描之後,選取 [修復前先製作掃瞄檔的備份] 核取方塊。
- 按一下 [修復]。
如果成功地修復檔案,您會看到「修復完成」訊息。如果 [電子郵件信箱修復工具] 無法修復檔案,則需要使用檔案的備份。
- 啟動 Outlook。
- 在 [檔案] 功能表上按一下 [資料檔案管理]。
- 選取損壞的 .pst,然後按一下 [移除]。
- 按一下 [新增],選取 [個人資料夾檔案 (.pst)],按一下 [確定],然後選取要作為新主要檔案的 .pst 檔案。
- 按一下 [確定]。
重要事項 您不應該只依賴 [電子郵件信箱修復工具] 來執行緊急復原。用來定期備份 .pst 檔案的系統是防止資料遺失的重要環節。您可使用多種方法來備份檔案,包含將它複製到另一個位置、備份電腦的所有檔案,或使用 Microsoft Office Online 網站的「個人資料夾備份」公用程式。
修復離線資料夾檔案 (.ost)
您可能想在遇到下列狀況時掃描及修復 .ost:
- 遇到大量的衝突項目。
- 離線時無法開啟特定的 Outlook 項目。
- 收到非預期的同步錯誤訊息 (顯示於 [刪除的郵件] 資料夾中的同步化記錄)。
- 收到下列訊息:
無法展開資料夾。無法開啟這組資料夾。在檔案 drive:\Documents and Settings\user\Local Settings\Application Data\Microsoft\Outlook\Outlook.ost 中找到錯誤。請關閉所有郵件功能的應用程式,然後再使用 [電子郵件信箱修復工具] 來更正錯誤。
附註 訊息中指定的檔案路徑可能隨著您電腦使用的作業系統而變。
此外,您或許能在 .ost 中開啟資料夾,卻持續收到同步錯誤訊息。當單一電子郵件損壞,而且同步處理也無法更正它時,即會發生這種情況。您可以使用 [OST 完整性工具] 來修正或移除損壞的郵件,以順利地同步化。
重要事項 如果 [OST 完整性工具] 無法開啟 .ost 檔案,則您可能必須先執行 scanpst.exe (請參閱上述的第一個程序)。
- 關閉 Outlook。
- 在 [查詢] 功能表上,按一下 [執行]。
- 在 [開啟] 方塊中輸入
drive:\Program Files\Common Files\System\Mapi\LocaleID\scanost.exe
其中,LocaleID 是為您 Microsoft Office 安裝的區域識別碼 (LCID)。例如,美式英文的 LCID 為 1033。如需 LCID 清單,請參閱 Microsoft Office 的 [說明]。
- 按一下 [確定]。
- 按一下 [掃描所有資料夾] 或 [選擇要掃描的資料夾]。如果您按一下 [掃描所有資料夾],則此作業可能得花費幾分鐘才能執行完畢。
- 選取 [修復錯誤] 核取方塊。
- 按一下 [開始掃描]。
掃描及修復期間所執行動作的詳細資料,將當作郵件儲存在您的 Outlook [刪除的郵件] 資料夾,而且它的主旨為「OST 完整性檢查」。
如果「離線資料夾」檔案無法修復,您可以停用它並建立新的檔案。
- 在 [工具] 功能表中,按一下 [電子郵件帳號],按一下 [檢視或變更現有的電子郵件帳號],然後按一下 [下一步]。
- 在清單中,按一下 [Microsoft Exchange Server],然後按一下 [變更]。
- 按一下 [其他設定]。
- 按一下 [進階] 索引標籤,然後按一下 [離線資料夾檔設定]。
- 按一下 [停用離線功能]。
- 在 [檔案] 方塊中,輸入要用作 .ost 檔案的檔案之路徑。預設的檔案名稱是 outlook.ost。如果此檔案名稱已存在,系統會提示您建立新名稱。
Wednesday, September 13, 2006
Linux掛載Windows NTFS磁區之方法
最近因為工作的需求,碰到了要在Linux下掛載NTFS的問題,問問Google大神後,找到了解決方法,就貼上來跟大家分享囉:
Setup1. Make sure Linux system can detected your HD. (fdisk –l)
Setup2. Know your kernel version. (uname –r)
Setup3. Reference the following website to get the correct rpm. (Linux-NTFS Project: http://www.linux-ntfs.org/)
Setpu4. rpm –ivh kernel-module-ntfs*
Setup5. Reboot your machine.
Setup6. Create a mount point (mkdir /mnt/ntfs)
Setup7. mount /dev/hda# /mnt/ntfs –t ntfs –o utf8=yes
Wednesday, September 06, 2006
實作NTP Server 與 NTP Client
目的: 架設一台NTP Server並提供時間同步的服務給NTP Client
NTP Server:
# vi /etc/ntp.conf -> NTP Server的設定檔
server time.stdtime.gov.tw prefer -> 加入到此設定檔中
# rcxntpd start; chkconfig xntpd on -> 注意是xntpd唷!
NTP Client:
# ntpdate "NTP Server IP address"
# hwclock -w -> 因為Linux的時間有區分為System time與BIOS time,所以記得要同步一下唷!
PS. NTP Client嘗試要跟NTP Server同步時間時,有時會失敗,這是因為NTP Server套用新的設定檔後,要等一段時間才會生效,為了這個我還查了好久 @@
Tuesday, August 15, 2006
你若不想做,會找到一個藉口;你若想做,會找到一個方法。
"If you don't wanna do it, you find an EXCUSE; if you do, you'll find a WAY."(你若不想做,會找到一個藉口;你若想做,會找到一個方法。)
Friday, August 11, 2006
Shell script之練習
# cd ~
# cd bin/
# vi movefiles.sh
#!/bin/bash
for VAR in `find /nfsdata -iname "*.conf" -exec ls {} \;`
do
mv "$VAR" /tmp
done
# chmod 755 movefiles.sh
# ./movefiles.sh
Saturday, August 05, 2006
Shell script之練習: 將eric的quota policy套用給所有的user
# vi quota.sh
#!/bin/bash
for USER in `awk -F: '{print $1}' /etc/passwd`
do
edquota -p eric "$USER"
done
# chmod 755 quota.sh
# ./quota.sh
Friday, August 04, 2006
Shell script and Cron的練習
# su - eric
$ cd /home/eric/bin
$ vi backup.sh
#!/bin/bash
DATE=`date +%Y-%m-%d-%H-%M`
tar zcvf /tmp/"$DATE".tgz /home/eric
$ chmod 755 backup.sh
$ crontab -e
* * * * * /home/eric/bin/backup.sh
Thursday, August 03, 2006
Enable IP Forwarding function in SLES9
--> modify IP_FORWARD="no" to "yes"
2. # /etc/init.d/boot.ipconfig start
3. Check: cat /proc/sys/net/ipv4/ip_forward是否等於1
4. 重開機後,即自動開啟此功能。
快樂學習SLES
Alex老師上課很認真,跟學生間又沒有距離,人很熱情,跟他聊天總覺得很舒服,我想除了上課考認證外,趁這個機會交朋友也是很棒的!跟老師及同學間多多交流,交換一下工作或是生活上的心得,也算是這次上課的額外的收穫!
Monday, July 31, 2006
Certification
- NCLP
- LPIC level 1
- LPIC level 2
- CCNA
- SCJP
NCLP打算今年取得,明年應該是CCNA了。
Friday, July 28, 2006
Master
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
ATrpms - This is a 3rd party rpm repository.
如果您也有無線網卡想在Linux下使用,不訪來找看看吧!
網址: http://atrpms.net/
Monday, July 24, 2006
Shell練習 from 鳥哥 Linux 私房菜
這個練習題是來自於鳥哥的網站,以下是我自己的寫法:
#!/bin/bash
echo -e "System will create 3 file automatic"
read -p "Please enter your filename: " filename
date1=`date +%Y%m%d --date="-1 day"`
date2=`date +%Y%m%d`
date3=`date +%Y%m%d --date="+1 day"`
filename1="$filename$date1"
filename2="$filename$date2"
filename3="$filename$date3"
touch $filename1
touch $filename2
touch $filename3
Thursday, July 20, 2006
Linux好用的軟體
- Xine: 多媒體撥放軟體
- beep-media-player: mp3撥放軟體 (support big5 and utf8)
- gthumb: 看圖軟體
- 星際譯王: 翻譯軟體 不比Dr. eye差唷!
- Openoffice
- gaim: 即時通軟體
- Real player: 多媒體撥放軟體
- Ethereal: 分析網路封包
- Xchm: 可以閱讀 MS chm的文件
- Amule: 不要懷疑,它就是windows的eMule
- Azureus: 就是BT囉
- AdobeReader: 是的!也有for Linux version
- Rarlinux: 讓linux也可解rar的檔案
.................當然還有很多很多的好軟體!感謝這些默默耕耘的前輩們,因為他們的付出,讓大家有這麼多的好軟體可以使用!
Use Linux to Setup L2TP Server (without IPSec)
測試環境:
L2TP Server -- L2TP Client
L2TP Server:
-OS: CentOS 4.x
- L2TP package: l2tpd
- IP address: 10.10.99.100/24
L2TP Client:
- OS: Windows XP PRO
- IP address: 10.10.99.101/24
步驟:
1. Install l2tpd:
rpm -ivh l2tpd*
2. Create L2TP User:
# vi /etc/l2tpd/l2tp-secrects
l2tpuser * "password"
3. Configure L2TP configure file
# vi /etc/l2tpd/l2tpd.conf
[global]
; listen-addr = 192.168.1.98 // Allow all L2TP Client dial in
auth file = /etc/l2tpd/l2tp-secrets
[lns default]
ip range = 192.168.0.128-192.168.0.150 // L2TP Client scope
local ip = 192.168.0.254 // L2TP Server IP address
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd
length bit = yes
4. Initial L2TP Server:
# service l2tpd start
# chkconfig --level 35 l2tpd on
5. Configure L2TP client (Windows 2000 / XP PRO)
The default Windows 2000/XP does not allow L2TP traffic without IPSec encryption. You can disable default behvior by editing the registry as follow:
- Use the registry editor (regedit) to locate the following key in the registry:
HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ Rasman \ Parameters
- Add the following registry value to this key
Value Name: ProhibitIpSec
Data Type: REG_DWORD
Value: 1
- Reboot Windows 2000/XP
6. Use Windows 2000/XP to setup L2TP client profile.
Thursday, July 13, 2006
VMware Server免費開放下載

這真是個好消息,VMware Server現在開放免費下載,當下載完畢後,在到官方網站申請序號即可!目前只支援Linux與Windows的平台,未來不知是否會支援MAC OSX。
VMware Server 1.0下載處:
http://www.vmware.com/products/server/
Friday, July 07, 2006
Rsync遠端備份+SSH免密碼登入
Monday, July 03, 2006
crontab練習題
解答:
1.先寫個收集記憶體使用狀況的shell script:
# cd ~root/bin
# vi collect.sh
#!/bin/bash
FILE=/var/log/`date +%Y-%m-%d`.log
date >> $FILE
free >> $FILE
echo >> $FILE
# chmod 755 collect.sh -v
2. # crontab -e
*/30 * * * * /root/bin/collect.sh
3. 撰寫每日發信給root的shell script:
# cd ~root/bin
# vi sendinfo.sh
#!/bin/bash
FILE=/var/log/`date +%Y-%m-%d --date="-1 day"`.log
echo "This is memory info" | mutt -s "Memory info" -a $FILE root
# chmod 755 sendinfo.sh -v
4. # crontab -e
0 8 * * * /root/bin/sendinfo.sh
Friday, June 30, 2006
Wednesday, June 28, 2006
Mac OSX 10.4.7 update info
- 防止發生 AFP 死結和連線斷開的情形
- 將 Adobe 和 Quark 文件儲存到 AFP 裝載的卷宗
- Bluetooth 檔案傳送、配對和連接 Bluetooth 滑鼠,以及同步至行動電話
- QuickTime、iTunes、Final Cut Pro 和 Soundtrack 應用程式中的音訊播放功能
- 當在桌面上檢視圖像時,確保圖像的間隔距離正確
- 判斷燒錄檔案夾所需的空間
- iChat 音訊和視訊連線,以及使用 AIM 建立聊天室
- 將檔案輸入到 Keynote 3
- 當使用 iCal 和 iPhoto 時的 PDF 工作流程
- 可靠地使用工作流程中的 Automator 動作
- 在“字體簿”中輸入和移除字體
- 同步位址、書籤、行事曆事件和檔案至 .Mac
- 與協力廠商應用程式和裝置的相容性
- 之前獨立的安全更新項目
如需關於此“更新”的詳細資訊,請參訪此網站:http://www.info.apple.com/kbnum/n303771-yh。
如需關於“安全更新”的詳細資訊,請參訪此網站:http://www.info.apple.com/kbnum/n61798-yh。
Monday, June 26, 2006
在ibook G4安裝FC5,並驅動wireless card
1. Upgrade kernel to version: 2.6.17-1.2139_FC5 by yum.
2. Install bcm43xx-fwcutter by yum.
3. To use the bcm43xx driver which is part of the Fedora kernel, you need to extract the firmware which is part of the official MacOS, Windows, or Linux drivers.
4. Reboot ibook and boot it from Mac OSX.
5. Copy /System/Library/Extensions/AppleAirPort2.kext/Contents/MacOS/AppleAirPort2
6. Back to FC5
7. bcm43xx-fwcutter -w /lib/firmware AppleAirPort2
8. Because the bcm43xx driver is new and experimental, it is not configured to be automatically loaded in the Fedora Core 5 kernel. In order to ensure that the driver is loaded, you may need to copy the 'modprobe.bcm43xx' file into the /etc/modprobe.d directory.
9. Reboot ibook.
Thursday, June 22, 2006
利用Linux架設PPPoE Server
require-pap
require-chap
login
lcp-echo-interval 10
lcp-echo-failure 2
ms-dns 168.95.1.1
02- Edit pap-secrets as following:
Client Server Secret IP address
"username" * "password" *
PS 此User必需存在於本機的account
03- Edit chap-secrets as following:
Client Server Secret IP address
"username" * "password" *
PS 此User必需存在於本機的account
04- Command:
pppoe-server -I eth0 -L 220.10.30.254 -R 220.10.30.1 &
Packages must be install:
ppp-*
rp-pppoe-*
Tuesday, June 20, 2006
Install SLES9 on Mac OS by Virtual PC successfully!
接下來比對一下我在Vmware中常用的功能,Virtual PC是否也有?
1. Bridged to the physical network -> Virtual Switch
2. NAT -> Shared Networking
3. Snapshot -> Undo drives (default: disable), 當直接把Guest OS關掉時,它會幫你save目前Guest OS的狀態,如果你不想儲存此次狀態,是可以discard的,缺點是必須重新reboot OS,這有點花時間.
基本上,我只在virtual console下操作SLES9,所速度上還可接受,但....如果要進入到X window的環境的話......可是要等上一些時間喔! 這時想到尤達大師常對安納金說:[要有耐心.] 嗯嗯!是的要有耐心,不能掉入氣的黑暗面!
Friday, June 16, 2006
Thursday, June 15, 2006
利用MintDNS架起DDNS Server
MintDNS
Tuesday, June 13, 2006
Use Bind9 to setup DDNS Server
1. 利用host查詢mail.example.com所對應的IP address.

2. 在Primary DNS Server產生TSIG供client端使用.

3. 檢查是否成功新增以下兩個檔案.

4. 查看key的內容.

5. 修改/etc/named.conf的內容如下,這樣一來擁有key的client將可以update mail.example.com這筆RR.

6. 重新啟動named.
7. 利用scp將步驟3所產生的兩個檔案copy到client端. (兩個檔案必須在同一目錄下)
DNS client:
1. 在client端執行以下的命令,來更新RR.

2. 重新查詢mail.example.com,檢查是否更新成功.

Note: 如果不能更新成功,請檢查相關目錄的權限是否設定正確.
Monday, June 12, 2006
Setup DDNS Server via CentOS
不過總算是能work了,可是這種方法是先產生一組key來做驗證用,而不是使用username/password的方式來驗證,看來我還要找看看有沒有利用帳號與密碼的方式來加以驗證,您可以至以下的網址了解到架設DNS與DDNS的方法,感謝鳥哥大大的分享.
鳥哥的私房菜
日本東京五日遊
每次去日本都有不同的感覺,日本年年都在進步...反觀台灣....真的需要加油囉!
Note: 拍了許多照片,等整理好了在po上來.
Monday, June 05, 2006
Lenovo宣佈將不會支援Linux
出處: http://hardware.slashdot.org/
心情真是蠻震憾的! 因為家裡的PC與NB都是IBM的居多!
且對於Linux的support真的是不錯,以我的IBM X24來說,安裝CentOS 4.0到今一年多了,一點問題都沒有,當初考RHCE還瘋狂的用它練習安裝RHEL 3不下30次吧! 而DT裝Linux也有兩年之久了.......看來以後買Lenovo的機會是...很小....很小.....
設定SUSE Linux的vim
vi /etc/vimrc
set bs=2 # SUSE預設值是不允許使用backspace,bs=2可讓vim允許使用Backspace.
syntax on # 讓vim具有顏色顯示的功能.
set hlsearch # 將搜尋的字串反白.
Note: 如果嫌麻煩的話,不如把FC or RHEL的vimrc copy到SUSE Linux,一樣是可以用的.
Friday, June 02, 2006
開始準備考NCLP
考認證對我來說是自我實力的測試,加不加薪到無所謂(假的!誰不愛錢呀!)
老婆問我,為何要去考? 不是有RHCE了嗎? 浪費錢跟時間,不如好好來陪我!
唉! 老婆大人,人活著一定要有目標,不然就跟行屍走肉一般!
廢話不多寫了,總而言之,希望年底我可以多加一張Linux認證! 呼呼~~






