2011年12月26日 星期一

安裝 openwebmail

安裝前先更新清單
$sudo apt-get update


安裝收信套件 Dovecot
$sudo apt-get install dovecot-pop3d

$sudo apt-get install dovecot-imapd

openwebmail 應該只支援 POP3,但是我這裡還是將 IMAP 也裝起來


安裝寄信套件 Postfix
$sudo apt-get install postfix

安裝中會進行設定
 這裡要選擇監視的介面,選擇第 2 項,從網路來的郵件我都接收

 這裡要輸入你的主機的網域名稱

剩下的暫時都使用預設



libmd5-perlowm 這 2 個套件檔案放進系統內,因為這 2 個套件已經不在 Ubuntu 的更新清單中了,所以要自行另外去尋找

安裝 libmd5-perl ( 此為 openwebmail 必要套件 )
$sudo  dpkg libmd5-perl_2.03-1_all.deb

安裝 openwebmail
$sudo  dpkg owm2.53-2.deb

openwebmail 安裝過程會告訴你還少了幾個檔案,這時再用下列指令
$sudo apt-get -f install

系統會自動從網路清單下載缺少的套件

重新開機後輸入 : http://192.1681.10/openwebmail
便可以看見安裝成功的畫面

郵件登入網址 : http://192.168.1.10/cgi-bin/openwebmail/openwebmail.pl

但網址實在是太長了,所以我們要進行更名

修改網址
$sudo nano /etc/apache2/httpd.conf

ScriptAlias /webmail    /usr/lib/cgi-bin/openwebmail/openwebmail.pl

重新啟動 apache
$sudo /etc/init.d/apache2 restart

之後只要輸入 : http://192.1681.10/webmail  就可以進入登入畫面了

Apache 拒絕連線、認證

拒絕連線
$sudo nano /etc/apache2/httpd.conf
                     :
                     :
<Limit GET POST OPTIONS>
       Order allow,deny
       Allow from all
       Deny from 192.168.10.10           --阻擋此 IP 的連線
</Limit>


Apache 認證 ( 需輸入帳號密碼 )
在家目錄的 www 之下建立 .htaccess
$nano .htaccess

AuthName         "Protect by .htaccess"
AuthType           Basic
AuthUserFile  /home/student/apache.passwd        --紀錄帳號密碼的地方
Require  valid-user

$chmod +x .htaccess

執行
$htpasswd -c ~/apache.passwd student

然後輸入 2 次密碼

~/apache.passwd : 紀錄帳號密碼的地方
student : 網頁登入的帳號

到網頁連線 http://192.168.1.10/~student/ 時,就會要求輸入剛剛設定的帳號密碼

Apache 相關設定

指令 ( 檢視相關設定 )
$/usr/sbin/apache2 -V

/etc/apache2/apache2.conf          --紀錄 apache 設定檔的位置

檢視 apache 相關設定檔的設定
$nano /etc/apache2/apache2.conf

Include /etc/apache2/httpd.conf          --主要設定檔

Include /etc/apache2/sites-enabled/      --只給目錄的話它會將目錄下的設定檔全部都讀取


更改預設首頁位置
$sudo nano /etc/apache2/sites-enabled/000-default

/var/www                --設定預設首頁的目錄位置


Apache 的模組功能
$ls /etc/apache2/mods-available/          --這裡放置的是 apache 裡能使用的全部模組

$ls /etc/apache2/mods-available/          --這裡放置的是啟動中的模組

.conf  --設定檔
.load  --模組檔

要啟動模組功能,只要從 mods-available 下,將要啟動的功能的 2 個檔案複製到 mods-available之下就可以啟動了

或是使用指令
$sudo a2enmod userdir       --增加 userdir 這模組

$sudo a2dismod userdir       --刪除 userdir 這模組

製作程式 (網頁看IP、user)

建立檔案
$nano mkhome.sh


echo "<html><head></head><body>" > /var/www/index.html

echo "<pre>" >> /var/www/index.html

/home/student/ipconfig.sh >> /var/www/index.html

/home/student/ug.sh >> /var/www/index.html

echo "</pre>" >> /var/www/index.html

echo "</body></html>" >> /var/www/index.html


修改權限
$chmod +x mkhome.sh




執行程式
$./mkhome.sh

開啟瀏覽器,並輸入首頁網址

http://192.168.1.10

就可以看見執行程式的結果輸出到網頁



備註:在student家目錄下必須要有 ipconfig.sh 、 ug.sh 此執行檔才會生效

檢視使用者名單

建立檔案
$nano ug.sh
   
            u=$( cat /etc/passwd | cut -d ':' -f1 )
            g=$( cat /etc/group | cut -d ':' -f1 )

            echo '[ user ]'
            echo $u

            echo '[ group ]'
            echo $g

增加執行權限
$chmod +x ug.sh

執行檔案
$./ug.sh

撰寫程式 產生10名使用者

建立使用者名單 users.txt

 $touch users.txt

 $nano users.txt

把10名使用者及密碼寫上(可自行設定)

a001:student
a002:student
a003:student
a004:student
a005:student
a006:student
a007:student
a008:student
a009:student
a010:student


編寫自動產生使用者的程式,名字為 useradd.sh

$touch useradd.sh

$chmod +x useradd.sh

$nano useradd.sh

編寫程式如下:

[ ! -f users.txt ] && echo "file not found" && exit 1
 
 
s=$(cat users.txt)
 
 
for  us  in $s
do
    uname=${us%%:*}
 
 
    upasswd=${us##*:}
 
 
    useradd -m -s /bin/bash $uname
    echo "$uname:$upasswd" | chpasswd

    mkdir  /home/$uname/www
    chown "$uname:$uname" /home/$uname/www

    echo "$uname home" >  /home/$uname/www/index.html
    chown "$uname:$uname"  /home/$uname/www/index.html
 
done


執行程式
$sudo ./useradd.sh

Apache 建置各使用者網頁

啟動 Apache 模組功能
$sudo a2enmod userdir

a2 : apache2
en : enable
mod : module


修改 xml 設定檔
$sudo nano /etc/apache2/httpd.conf

由於檔案時空的,所以貼上以下內容

UserDir www   

<Directory /home/*/www>
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec


    # If GET is used it will also restrict HEAD requests. The TRACE method cannot be limited.
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>


    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

UserDir www                         --表示網頁目錄是在各使用者家目錄的 www 之下

<Directory /home/*/www>     --將設定使用在 home 下的"所有目錄"下的 www


重新啟動 apache2 才會套用設定
$sudo /etc/init.d/apache2 restart

在使用者家目錄下建立網頁,以 student 這使用者為例 :

$cd /home/student                   --切換目錄
    
$mkdir www                             --建立 www 目錄

$nano /www/index.html           --新增首頁並加入內容

內容輸入 : This is a test for student

連線測試,例如主機 IP 為 192.168.1.10,開啟瀏覽器在網址輸入 :
http://192.168.1.10/~student/

有看見剛剛輸入的文字就成功了

設定 DNS

bind9 設定檔位置
$sudo nano /etc/bind/named.conf 

這裡是告訴你 bind9 的設定檔放置的位置



新增 DNS
$sudo nano /etc/bind/named.conf.local

在下面空白處
zone "obf" {                                           --zone 宣告資料庫,obf 為網域名稱
                type master;                          -- 設定為 master ( Primary )
                file "/etc/bind/db.obf";            --儲存 obf 資料的位置
};


設定 obf 資料
$sudo nano /etc/bind/db.obf         --剛剛設定儲存資料的地方

; BIND data file for local loopback interface

$TTL    1800                                                                          --1800 為 cache 存活時間(秒)
@    IN    SOA     dnsserver.obf.    admin.mail.obf.  (              --SOA為管理者資訊,第一段是
                           1            ; Serial                                               主機名稱,第二段是信箱
                           604800          ; Refresh
                           86400            ; Retry
                           2419200        ; Expire
                           604800  )       ; Negative Cache TTL
;
@              IN             NS            dnsserver.obf.      --@代表本機,這裡 NS 是主機名稱+網域
dnsserver      IN         A          192.168.1.10            --前為主機名稱,後面 A 為 主機 IP


重新啟動 DNS
$sudo /etc/init.d/bind9 restart

安裝、檢視 DNS

安裝 DNS
$sudo apt-get install bind9

安裝完畢後
$netstat -an

會看見 udp 53tcp 53 這兩個 port 已經開啟


檢視 DNS
$nslookup
>server

檢視我們的 DNS server 是哪台

詢問 DNS
$nslookup
>set type=soa                --資料的型態
>edu.tw.                          --向 DNS 詢問 edu.tw. 的資料


檢視 Cache  ( DNS 暫存檔 )
$sudo rndc dumpdb -cache                           --將 cache 輸出至檔案
$nl /var/cache/bind/named_dump.db            --檢視輸出檔

裡面可以看到電腦名稱、資料存活時間、型態、IP或網址


清除 cache
$sudo rndc flush

當重新設定完 DNS 後,舊的資料還存留在 cache 中,所以要清除 cache ,讓資料重新抓取

Port Number ( 埠號碼 )

這裡寫一些常用的 Port Number

port   description

 20   : FTP
 21   : FTP
 22   : SSH
 23   : telnet
 25   : SMTP ( 寄 e-mail )
 53   : DNS
 80   : HTTP
110  : POP3 ( 收 e-mail )
443  : HTTPS

2011年12月13日 星期二

檢視檔案內容相關指令 nl、cat、grep...

這裡存放一些用來可以檢視檔案內容的命令

echo
$echo hello                   --在螢幕上顯示 hello

echo 這個指令是將之後的字串顯示在螢幕上,所以並沒有辦法直接看見檔案的內容,不過在編輯檔案時,在檔案裡加上 echo hello 的話,執行檔案時畫面上就會直接顯示出 hello 這個字

nl
$nl abc                       --顯示內容並加上行號

$nl -b a -n rz abc       --以6位數顯示行號如 : 000001、000002

參數:
-b :指定行號指定的方式,主要有兩種:

           -b a :表示不論是否為空行,也同樣列出行號
           -b t  :如果有空行,空的那一行不要列出行號

-n :列出行號表示的方法,主要有三種:

          -n ln :行號在螢幕的最左方顯示
          -n rn :行號在自己欄位的最右方顯示,且不加 0
          -n rz :行號在自己欄位的最右方顯示,且加 0

cat
$cat abc                         --顯示 abc 這個檔案的內容

$cat -n abc                     --顯示出來的內容會加上行號

head
$head -n 10 /var/log/syslog             --只顯示檔案的頭 10 行

$head -n -100 /var/log/syslog          --檔案的後 100 行都不顯示

netstat -an | head -n 10                   --進階用法,顯示 port | 並只顯示前10行

tail
$tail /var/log/messages                   --從檔案的末端開始顯示內容 ( 預設顯示 10 行 )

$tail -n 30 /var/log/messages          --從檔案的末端開始顯示 30 行的內容

grep
$grep 'test' abc                   --將 abc 這個文件裡有 test 這個字的整行顯示出來

$grep 'test' aa bb cc           --從 aa、bb、cc 這三個檔案裡將有 test 這個字的整行顯示出來

基本參數
-i :忽略大小寫的不同,所以大小寫視為相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字串' 內容的那一行
--color=auto : 將找到的關鍵字部分加上顏色的顯示
進階用法
-A :後面可加數字,為 after 的意思,除了列出該行外,後續的 n 行也列出來
-B :後面可加數字,為 befer 的意思,除了列出該行外,前面的 n 行也列出來
--color=auto 可將正確的那個擷取資料列出顏色
 
$ifconfig -a | grep -A1 eth0       --抓取 eth0 那行並將後面一行也顯示出來 

cut
$cat abc | cut -d -f ':' 2,3          --顯示 abc 的內容並以 : 號為分界只抓取第二段及第三段


-d :後面接分隔字元。與 -f 一起使用
-f :依據 -d 的分隔字元將一段訊息分割成為數段,用 -f 取出第幾段的意思
-c :以字元 (characters) 的單位取出固定字元區間

變數處裡
${  }          --專門用在處理變數上

$user = a01 : a02 : a03
$echo ${user#*:}             --從左至右尋找第一個 : 字號並刪除 : 字前面的字元 ( * 為萬用字元 )
a02 : a03                        --顯示結果

$user = a01 : a02 : a03

$echo ${user##*:}           --從左至右尋找最後一個 : 字號並刪除 : 字前面的字元
a03                                 --顯示結果

$user = a01 : a02 : a03
$echo ${user%:*}            --從右至左尋找第一個 : 字號並刪除 : 字後面的字元 ( * 為萬用字元 )
a01 : a02                         --顯示結果

$user = a01 : a02 : a03
$echo ${user%%:*}         --從右至左尋找最後一個 : 字號並刪除 : 字後面的字元
a01                                  --顯示結果

範例 : 
$name = $(cat /etc/passwd | grep student)      --顯示帳號檔案並只抓取有 student 的行列放進
                                                                             name 這個變數中
$() : 是變數中用來處理命令的方式

$n1 = ${name%%:*}     --從 name 變數中從右至左尋找最後一個 : 字號並刪除 : 字後面的字

$echo $n1                    --顯示 n1 裡的內容
student                         --顯示結果,這行只剩下 student ,其他的都被刪除了

遠端登入 SSH

下載 SSH
$sudo apt-get update
$sudo apt-get install ssh

一般 Ubuntu 剛裝好時服務預設都是關閉的,所以要安裝 SSH 的相關套件才行,連線及被連線的主機都要有安裝 SSH 才能正常連線

SSH 連線
$ssh student@192.168.1.10

student : 對方的使用者帳號

192.168.1.10 : 對方主機的 IP

目標IP轉換 DNAT

NAT (Network Address Translation) ,是一種在IP封包在通過路由器時,重新設定 IP 來源或 IP 目的地的技術,通常使用在有多台主機,但是卻只有一、兩個公有 IP 的私有網路中

跟 SNAT 相反,SNAT 是內部要連接到外部是做轉換,而 DNAT 則是外部要連接要內部的私有 IP 時做轉換

SNAT ( 目的地 IP 轉換 )
iptables -t nat -A POSTROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to 192.168.1.10:80

--dport 8080 : 當使用 8080 這個 port 進來時

--to 192.168.1.10:80 : 引導到此 IP


這行指令時指,當有人連線到這台主機的 8080 這個 port 時,會經由 DNAT 轉送到 192.168.1.10:80 這個地方去

來源IP轉換 SNAT

NAT (Network Address Translation) ,是一種在IP封包在通過路由器時,重新設定 IP 來源或 IP 目的地的技術,通常使用在有多台主機,但是卻只有一、兩個公有 IP 的私有網路中

SNAT ( 來源IP轉換 ) 
$sudo nano /etc/rc.local            -- Ubuntu 的防火牆

列表的最下面 ~~ exit 0 的上面,中間空白處加上下列指令


動態轉換
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

-o eth0 : 這裡設定的是要對外連線的網路卡,也就是使用公有 IP 的網路卡

MASQUERADE : IP偽裝

使用這指令的話,不管內部的私有網路設定的IP是哪種,通通都會經過 NAT 轉換



指定來源 IP 轉換
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.1.1 -o eth0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.1.1-192.168.1.10 -o eth0 -j MASQUERADE

-s 192.168.1.0/24 : 指定要轉換的來源 IP

使用這指令的話,只有來源是 192.168.1.0/24 的 IP 會進行 NAT 的轉換,第二條跟第三條指令則是指定轉換的範圍 ( 2.3 尚未實驗過... )



指定轉換後的 IP
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.254

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.200-192.168.1.254

-j SNAT --to-source 192.168.1.254 : 指定轉換後的IP

使用第一個指令的話,所有的經過 NAT 的 IP 都會轉換成 192.168.1.254,第二個指令則是會隨機使用 200 ~ 254 之間的IP



指定來源 IP 及轉換後的 IP
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 192.168.1.254

同時應用上面的方式,指定來源 IP 的範圍及轉換後的 IP


NAT 中文 WIKI : 網路地址轉換
NAT 英文 WIKI : Network Address Translation

2011年12月12日 星期一

設定靜態路由

加入靜態路由
$sudo nano /etc/network/interfaces

在最下面加入
up route add -net 192.168.2.0/24 gw 192.168.2.254 dev eth0

192.168.2.0/24 : 前面這段為對方的網段

192.168.2.254 : 此IP為封包從這台主機出去後,下一台接收到此封包的主機的接收端的IP

eth0 : 從這台主機將封包傳遞出去的網路卡

啟動封包繞送

修改設定
$sudo nano /etc/sysctl.conf

尋找此行
#net.ipv4.ip_forward=1

然後將前面的 # 字去掉變成
net.ipv4.ip_forward=1

存檔離開

設定檔案執行不需加上路徑

檢視環境變數
$echo $PATH

接著會顯示一串的目錄,這些都是存放各種命令的目錄區,平常輸入命令時不需要加上路徑就是因為變數裡已經儲存了各命令的目錄,當輸入命令時,系統會從這些目錄中去搜尋指令並執行,所以我們要把存放我們自己程式或檔案的目錄加進變數裡,這樣執行檔案時就不需要再加上絕對路徑

將目錄加進變數
PATH=$PATH:/home/student

PATH :環境變數

$PATH : 將變數解開時,需要一個容器來承裝,所以前面加 $ 表示要將變數裡的資料展開

:/home/student : 中間的分號是要將後面的目錄區跟前面的目錄區分隔開來,要是沒加的話當字
                           串加入變數後,會跟原本內存的目錄路徑混在一起,有可能導致原本能使用的
                           命令無法使用

**注意** : 輸入此命令時要特別注意不要打錯字,要是不小心造成原本變數裡的路徑混亂的話,
                有可能造成原本能使用的指令如 : sudo 、 shutdown ... 之類的指令無法使用

新增、刪除多重目錄

$nano dir.sh

if [ -d ./test1 ] ; then                            --條件式,如果 test1 此目錄存在

      rm -r ./test1                                  --則刪除 test1

else                                                    --否則

      mkdir -p test1/test2/test3              --建立多重目錄

fi                                                        --條件式 if 的結尾

$chmod +x dir.sh
$./dir.sh

檢視網路設定

$nano ipconfig.sh                          --編輯檔案

ifconfig -a | grep -A1 eth0              --只檢視 eth0 的前段
ifconfig -a | grep -A1 eth1              --只檢視 eth1 的前段
netstat -rn                                      --檢視預設閘道
cat /etc/resolv.conf                        --檢視DNS

$chmod +x ipconfig.sh                  --修改權限為可執行檔
$./ipconfig.sh                                --執行檔案

安裝套件

線上安裝套件指令
$sudo apt-get install apache2

記得確定網路能正常連線

線上更新套件清單

修改線上下載的更新網站
$sudo nano /etc/apt/sources.list

在這裡面將所有網址裡有 tw. 的部分都刪除,因為臺灣的 Ubuntu 線上網站常常當機,所以把 tw.去掉後就變成美國主機的網址,改成從美國下載更新

例如 : http://tw.archive.ubuntu.com  -->  http://archive.ubuntu.com

記得要把全部的網址都改掉 (大約有10個),不然更新會有錯誤


線上更新套件清單
$sudo apt-get update

重新啟動、清除網路設定

重新啟動網路
$sudo /etc/init.d/networking restart

restart : 重新啟動
start : 啟動
stop : 停止


清除網路設定
$sudo rm /etc/udev/rules.d/70-persistent-net.rules

$sudo reboot (重新開機)

有時候修改完網路設定後,Ubuntu 還是記住之前的網路設定,這時就要用這指令清除 Ubuntu 自動記憶的設定,重新開機後就會套用新的設定了

相關指令

檢視網路設定的指令

$ifconfig -a : 檢視IP

$netstat -rn : 檢視 Default Gateway

$netstat -an : 檢視目前有開啟的 port

$cat /etc/resolv.conf :檢視 DNS

$traceroute 168.95.1.1 : 追蹤封包(只會顯示接收端)

$ping 168.95.1.1 -R : 追蹤封包(顯示發送端、接收端)(最多顯示9組IP)

修改主機名稱

修改檔案
$sudo /etc/hosts
$sudo /etc/hostname

將這兩個檔案裡的名稱修改後,重新開機即可

修改語系

檢視目前系統使用的語系編碼
$echo $LANG

LANG 為變數,所以在呼叫時要加上 $ 字號


加入英文語系的編碼
$sudo local-gen en_US.UTF-8
$sudo local-gen en_US


修改設定檔
$sudo nano /etc/profile

在最下面加入
export LANG=en_US.UTF-8
export LANGUAGE=en_US

改為中文則是
export LANG=zh_TW.UTF-8
export LANGUAGE=zh_TW




進階使用
$sudo nano /etc/profile

在最下面加入

if [ -z $SSH_TTY ] ; then
   export LANG='en_US.UTF-8'
   export LANGUAGE='en_US'
fi

if : 條件式,用來判斷並執行不同的指令

-z : 如果後面的檔案或變數無內容,則條件成立

SSH_TTY : 使用 putty (SSH連線)登入時才會產生的變數

當我使用本機直接連線時,並不會產生 SSH_TTY 這個變數,-z 判斷其內容為無,條件成立,所以會執行修改成英文語系的編碼,當我使用 SSH 的方式連線時,由於 SSH_TTY 這個變數裡面產生了資料,所以條件不成立,就不會修改語系編碼了

2011年12月11日 星期日

檔案的複製、刪除、移動及更名 cp、rm、mv

複製檔案
$cp abc /home/student

cp :為 copy ,複製檔案,後接要複製的檔名,再後面接要複製過去的目錄區

複製目錄
$cp -r /tmp/test1 /home/student

cp -r : 加上 -r 後面接要複製的目錄,再後面接要複製過去的目錄區

**注意** : 這裡的目錄輸入的都是絕對路徑


刪除檔案
$rm abc

rm : remove

刪除目錄
$rm -r /tmp/test1

這會將整個目錄,包含裡面的所有檔案刪除


移動檔案
$mv /tmp/abc /home/student

前面是要移動的檔案,後面是要移動過去的目錄區

檔案更名
$mv /tmp/abc /tmp/xyz

將 /tmp 下的 abc 移動到 /tmp 下(同目錄)的xyz

建立檔案 touch

建立新檔案
$touch abc

建立目錄 mkdir

建立新目錄
$mkdir abc

建立多重目錄
$mkdir -p test1/test2/test3

-p : 加上後會自動建立 test1 ,並在其中建立 test2 ,test2 之下再建立 test3 的多重目錄結構

刪除空白目錄
$rmdir abc

只能刪除空白的目錄,很少使用到的指令

執行程式 .sh

執行在家目錄下程式
$./hello.sh

./ : 單獨一個點表示為家目錄的縮寫,加上 / 表示為 : /home/student/ 之下的 hello.sh 這個檔案

如果程式在目前使用者所在的目錄下,則
$hello.sh

否則就要加上絕對路徑
$/home/student/hello.sh

執行檔 .sh

修改檔案權限為可執行檔
$chmod +x hello.sh 

chmod : 修改檔案權限

+x : 增加可執行的權限 (變成執行檔)

編輯文件 nano

編輯文件
$nano hello

ctrl + o : 存檔
ctrl + x : 離開
ctrl + k : 剪下整行
ctrl + u : 貼上整行

使用 Ubuntu 時建議使用 nano ,而不要使用 vi 來編輯文件

關機指令 shutdown

關機指令:
$sudo shutdown -h now

sudo : 由於 Ubuntu 不建議使用 root 帳號,所以在平時使用一般使用者時,執行需要 root 權限
           的指令時要加上 sudo 提升權限

shutdown : 關機指令

-h : 表示要立即關機

now : 這裡可以設定秒數來規定等待多久關機,如:30表示30秒後關機,輸入now則表示為0秒



$sudo shutdown -k 'this system will reboot'

-k : 送出關機的警告訊息,但是不會真的關機,後面單引號內接要發送的訊息

Ubuntu 文章列表

工具篇
    Linux 簡介

基本指令
    檢視檔案內容相關指令 nl、cat、grep...
    關機指令 shutdown
    編輯文件 nano 
    建立執行檔 .sh
    執行程式 .sh
    建立目錄 mkdir
    建立檔案 touch
    檔案的複製、刪除、移動及更名 cp、rm、mv
   
基本設定
    修改語系
    修改主機名稱
    新增使用者帳號
    設定檔案執行不需加上路徑

網路設定 
    相關指令
    設定固定IP
    設定DHCP
    設定PPPoE (ADSL)
    重新啟動、清除網路設定
    啟動封包繞送
    設定靜態路由
    Port Number ( 埠號碼 )

安裝套件
    線上更新清單
    安裝套件

服務設定
     安裝Apache
     Apache 建置各使用者網頁
     Apache 拒絕連線、認證
     Apache 相關設定
     安裝、檢視 DNS
     設定 DNS
     來源IP轉換 SNAT
     目標IP轉換 DNAT
     遠端登入 SSH
     安裝 openwebmail

Bash Script
     檢視網路設定
     檢視使用者名單
     製作程式 (網頁看IP、user)
     新增、刪除多重目錄
     撰寫程式 產生10名使用者

2011年11月14日 星期一

設定上網之 " PPPoE " ( ADSL 連線 )

大部分的人家裡應該都是用ADSL連線來上網的 , 所以在這裡介紹一下方法

PPPoE ( ADSL 連線 )
直接在畫面輸入 :
$sudo pppoeconf            --設定PPPoE

接下來他會偵測網卡 , 還有設定一些上網的設定 , 這裡都直接按 yes 就好
再來會要你輸入連線用帳號、密碼 , 接著也都按 yes 就好 , 中間會問你是否要開機就自動連線 , 這裡也選 yes ( 反正看不懂的話就從頭 yes 到尾 >_< ) , 結束後就會直接啟動 , 如果沒有順利取得IP的話再重新開機 , 由於剛剛有設定開機自動連線 , 所以一開機用 ifconfig 就可以確認是否有正確連線了

設定上網之 " DHCP "

考慮了一下後決定還是跟固定IP分兩篇了 , 會這麼說是因為 DHCP 設定實在太簡單了
設定 DHCP
首先要有一台 IP分享器 , 或是家裡的網路使用的是開機自動上網的

進入
$sudo nano /etc/network/interfaces

然後將網卡設定成
auto eth0                                     -- 這裡是啟動你的網路卡 , 沒有的話網路卡開機時不會啟動
iface eth0 inet dhcp                     -- 將後面改成 dhcp , 就是使用自動取得IP

然後輸入 :
$sudo /etc/init.d/networking restart         --重新啟動網路

之後就可以自動取得IP了

**附註:有時候重新啟動網路後 , 電腦還是會怪怪的無法取得IP , 這時候建議先 sudo reboot ( 重新開機 )試試看

工具篇 - FSCapture

在這裡稍微介紹我平常上課時愛用的畫面抓圖軟體 FSCapture
它最大的優點之一就是免安裝 , 在官方網站就能抓到免安裝的檔案 , 而且只有 1.8 MB , 隨時都能帶著跑。

使用上也非常方便 , 當你抓取畫面時 , 能選擇抓取全螢幕 , 或是用滑鼠選擇你想抓取的視窗 , 在抓取後 , 能夠立即對圖片作簡單的編輯 , 剪裁圖片就不用說了 , 還能立即為圖片加上有顏色的框框、箭頭、文字說明之類的功能

平常上課時我都用這軟體抓取練習的畫面 , 然後立刻將重點處用紅框框起並加上文字說明 , 相當好用。

官方網站:http://www.faststone.org/index.htm
免費免安裝版:Download

2011年11月8日 星期二

設定上網之 " 固定IP "

設定固定 IP
首先當然要先取得一組可以用的 IP , 然後
$sudo nano /etc/network/interfaces


在這個檔案裡可以為我們的上網方式進行設定 , 輸入 :

auto eth0                                     -- 這裡是啟動你的網路卡 , 沒有的話網路卡開機時不會啟動
iface eth0 inet static                     -- 將後面改成 static , 就是使用固定 IP

address 192.168.1.100                -- 設定你的電腦所使用的 IP (這裡輸入的是範例)
netmask 255.255.255.0               -- 輸入你的網路遮罩
gateway 192.168.1.1                   -- 設定你的預設閘道
dns-nameservers 168.95.1.1        -- 輸入 DNS server , 這裡範例用的是中華電信的

離開檔案後輸入 :
$sudo /etc/init.d/networking restart

重新啟動網路就OK了


我所使用的系統是 Ubuntu 10.04.3 版 , 在這版本似乎有 BUG 存在 , 在這裡輸入的 DNS
並沒辦法使用 , 所以要在其他地方設定 , 進入
$sudo nano /etc/resolv.conf

其他都刪除 , 只留下
nameservers 168.95.1.1

這行就好了 , 重新啟動網路後就可以上網了

2011年11月7日 星期一

安裝 Apache HTTP Server

從網路安裝 Apache (記得網路要先通) :
$sudo apt-get install apache2


中間會詢問你是否確定要安裝 Apache , 按 y (yes)
然後就安裝完成了!!
就這麼簡單

成功的話就會在 /var 下產生 www 這個資料夾

預設首頁
/var/www/index.html

新增使用者帳號

一:新增一名使用者帳號
$sudo useradd -m -s /bin/bash xman01

-m : 自動建立家目錄 , 這樣就不用手動建立 (預設 : /home/xman01)
-s /bin/bash : -s 為 shell , 後面通常接 /bin/bash (若沒指定則預設也是 /bin/bash ) , 此為使用文字介面
xman01 : 使用者帳號


二:檢視使用者帳號、家目錄
$cat /etc/passwd


三:檢視密碼設定
$sudo cat /etc/shadow

若沒設定密碼 , 則帳號後的第一個冒號後面會顯示 ! (驚嘆號)


四:設定密碼
$sudo passwd xman01

輸入密碼後 , 會要求再次輸入密碼確認
之後回到 /etc/shadow 去 , 就可以看見有顯示密碼了
** ( 密碼本身有加密 , 所以會看見顯示亂碼 )

2011年11月4日 星期五

工具篇 - VMware 簡介

VMware 是一間全球著名的虛擬機器軟體公司 , 它的產品可以讓我們在一台主機上 , 安裝許多虛擬機器。
一台已經安裝 Windows 的主機上, 可以再安裝並同時運作一台 Windows 的系統 , 或者是Linux 的系統 , 對需要管理多個不同系統的人非常方便。

它的產品可以分為 3 大項 :

           VMware Workstation : 這大概是最廣為人知的產品 , 它可以一次開啟多個系統 (當然前提是你的主機要撐得住才行) , 還有提供快照(儲存目前虛擬機器的設定)等許多好用的功能 , 但軟體定價約 NT$9000 ,對窮學生來說是一筆不小的負擔。

           VM Player : 這是上面 Workstation 的免費 (Download)的版本 , 但是也精簡了不少東西 , 虛擬機器只能開一台 , 也少了一些好用的工具 , 不過平時要拿來練習使用已經相當夠用了。



            VMware ESX : 其實就是Workstation 的企業 server 版 , 多了一些遠端操作跟介面管理的功能。

VMware 首頁 : http://www.vmware.com/
VMware 的維基網站 : http://zh.wikipedia.org/wiki/VMware