虛擬機器
所謂的虛擬機器就是「假的」機器,利用 X86 平台來模擬出其它平台並執行其它平台的程式,我們今天要介紹的虛擬機器是 X86 模擬主機,也就是以 X86 模擬 X86。
要執行虛擬機器,你的硬體要有幾個條件:
1. CPU 為多核心 (四核以上)
2. RAM 為 4GB 以上 (愈大愈好),以便分配給每台虛擬機器獨立的 RAM (至少 512MB)
3. 硬碟愈大愈好
市面常見的虛擬機器程式有三個,最有名的叫 VMware、第二有名叫 VirtualBOX,最沒有名叫 Qemu,今天我們要教 Qemu。
Why ?
1. VMware 要錢,上網申請可以使用免費版本
http://www.vmware.com/tw/
2. VirtualBOX 免費但是某些原始碼未開放,VirtualBOX 有簡單易用的介面,如果各位是使用 Windows 系統可以參考使用 Win 版的 VirtualBOX。
http://www.virtualbox.org/
http://azo-freeware.blogspot.com/2008/09/virtualbox-166.html
3. Qemu 是近幾年發展速度最快的虛擬機器,可以模擬 X86 平台、ARM 平台及其它平台
http://wiki.qemu.org/Main_Page
Qemu 的使用步驟如下:
0. 安裝 Qemu
1. 設定硬碟
2. 下載安裝 ISO 檔
3. 執行
*** 我們執行環境為一般使用者,只安裝套件時要用 root ***
以下將一一說明:
0. 安裝 Qemu
請執行
apt-get install qemu qemu-kvm
來安裝 qemu 套件
1. 設定硬碟映像檔
請建立 ~/qemu/linux.img,檔案大小為 8GB,指令如下:
~$ mkdir qemu
~$ cd qemu
~/qemu$ qemu-img create linux.img 8G
此時會建立一個「空」的 linux.img,當我們執行 ls -l 時,請輸出如下:
herman@pc-29:~/qemu$ ls -l
總計 0
-rw-r--r-- 1 herman herman 8589934592 2011-07-21 19:10 linux.img
但若以 du -sh linux.img 會發現此檔大小為 0,輸出如下:
herman@pc-29:~/qemu$ du -sh linux.img
0 linux.img
Why ? Qemu 在使用硬碟映像檔的策略是:需要時才佔用。
2. 下載安裝 ISO 檔
請將 ftp://163.26.229.6/linux/debian-6.0.3-i386-netinst.iso
下載至 ~/qemu 目錄下
~/qemu$ wget ftp://163.26.229.6/linux/debian-6.0.3-i386-netinst.iso
即可下載
3. 執行
請執行:
kvm -m 512 -hda linux.img -cdrom debian-6.0.3-i386-netinst.iso -boot d
-m 512 -> 給虛擬機器 512 MB 的記憶體
-hda linux.img -> 指定 linux.img 這個檔案為虛擬機器的 hda 硬碟
-cdrom debian- -> 指定 debian iso 檔為光碟機
-boot d -> 指定光碟開機
-boot c -> 指定 hda 開機
kvm 說明 - Linux 核心虛擬技術 - KVM(Kernel-based Virtual Machine)
http://linuxkvm.blogspot.com/2011/04/linux-kvmkernel-based-virtual-machine.html
如果輸出如下,那表示我們要載入 kvm 模組:
herman@pc-29:~/qemu$ kvm -m 512 -hda linux.img -cdrom debian-6.0.2.1-i386-netinst.iso -boot d
open /dev/kvm: No such file or directory
Could not initialize KVM, will disable KVM support
2011年7月21日 星期四
2011年7月14日 星期四
使用者權限管理
Linux 的檔案權限與目錄配置
Q1. 我是 s100 的系統管理員,s100a001 希望他的目錄權限是 rwxr-x---,請問該
如何處理 ? 111101000
7 5 0
A. 此設定的功用:讓其它人無法切換/觀察 s100a001 目錄中的東西,但是群組可以
/home# chmod 750 s100a001
Q2. 我是 s100 的系統管理員,s100a002 正在開發高機密性的專案,他希望他的目錄除了他自己,別人都不能看,請問該如何處理 ?
A. 權限要設為:rwx --- ---
7 0 0
/home# chmod 700 s100a002
Q3. 我們希望建立一個目錄是 /home/s100,此目錄的所有人是 root,群組是 s100 方便我們交換檔案使用,而 s100 群組的人對此目錄都有讀/寫的權限,而且每個檔案的屬性之群組都是 s100,s100 群組以外的人對此目錄將無讀/寫之權限。
A. /home# (以 root 權限在 /home 目錄下)
mkdir s100
ls -l
會看到 s100 之屬性如下:
drwxr-xr-x 2 root root 4096 2011-07-14 20:28 s100
chgrp s100 s100
ls -l
會看到 s100 之屬性如下:
drwxr-xr-x 2 root s100 4096 2011-07-14 20:28 s100
chmod 770 s100
ls -l
會看到 s100 之屬性如下:
drwxrwx--- 2 root s100 4096 2011-07-14 20:28 s100
Q. 我們要新增一個目錄叫 /home/class,其群組為 class,s100axxx 帳號可以使用此目錄讀寫,但是所建立的檔案其群組都是 class,請問該如何處理 ?
A. /home# (以 root 權限在 /home 目錄下)
mkdir class
chgrp class class (將 class 目錄之群組改為 class)
群組 要更改之檔案/目錄
chmod g+s class (讓 class 目錄下的所有檔案繼承 class 目錄的群組)
Q1. 我是 s100 的系統管理員,s100a001 希望他的目錄權限是 rwxr-x---,請問該
如何處理 ? 111101000
7 5 0
A. 此設定的功用:讓其它人無法切換/觀察 s100a001 目錄中的東西,但是群組可以
/home# chmod 750 s100a001
Q2. 我是 s100 的系統管理員,s100a002 正在開發高機密性的專案,他希望他的目錄除了他自己,別人都不能看,請問該如何處理 ?
A. 權限要設為:rwx --- ---
7 0 0
/home# chmod 700 s100a002
Q3. 我們希望建立一個目錄是 /home/s100,此目錄的所有人是 root,群組是 s100 方便我們交換檔案使用,而 s100 群組的人對此目錄都有讀/寫的權限,而且每個檔案的屬性之群組都是 s100,s100 群組以外的人對此目錄將無讀/寫之權限。
A. /home# (以 root 權限在 /home 目錄下)
mkdir s100
ls -l
會看到 s100 之屬性如下:
drwxr-xr-x 2 root root 4096 2011-07-14 20:28 s100
chgrp s100 s100
ls -l
會看到 s100 之屬性如下:
drwxr-xr-x 2 root s100 4096 2011-07-14 20:28 s100
chmod 770 s100
ls -l
會看到 s100 之屬性如下:
drwxrwx--- 2 root s100 4096 2011-07-14 20:28 s100
Q. 我們要新增一個目錄叫 /home/class,其群組為 class,s100axxx 帳號可以使用此目錄讀寫,但是所建立的檔案其群組都是 class,請問該如何處理 ?
A. /home# (以 root 權限在 /home 目錄下)
mkdir class
chgrp class class (將 class 目錄之群組改為 class)
群組 要更改之檔案/目錄
chmod g+s class (讓 class 目錄下的所有檔案繼承 class 目錄的群組)
2011年7月7日 星期四
有關帳號二、三事
1. id 指令 -> 告訴我們目前帳號的資訊,包括 uid, gid 以及 groups,舉例來說,某個使用者的 id 輸出如下:
uid=1000(herman) gid=1000(herman) groups=1000(herman),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),112(netdev)
上述輸出告訴我們,此使用的 uid 為 1000,使用者帳號為 herman,gid 為 1000,群組亦為 herman,至於 groups 是此使用者所屬群組,主群組為 herman,次群組為 cdrom, floopy, auido, dip, video, plugdev, netdev。
uid -> User ID,建帳號時,系統會自動指定一個未使用的 uid 給你要建的帳號
gid -> Group ID,群組 ID,建帳號時,若未指定,系統會自動指定一個未使用的 gid 給你要建的帳號
groups -> 所屬群組,有主群組及次群組
id 帳號 -> 將某帳號的資訊列出來
2. 使用者帳號設定檔
/etc/passwd -> 帳號
/etc/shadow -> 密碼
/etc/group -> 群組
其權限如下:
-rw-r--r-- 1 root root 1546 2011-07-07 19:12 passwd
-rw-r----- 1 root root 1090 2011-07-07 19:14 shadow
^^^^^^*^^
我們可以發現 shadow 的讀取權限受到限制,如上述 * 處,其原因在於防止暴力猜測法以求出密碼。
0000 - 9999
0 - 9
根據離散數學的推導,有一密碼的排列組合為 n 的話,要猜出此密碼的平均次數為 n/2。
PC 上的密碼可能的文字如下所示:
0~9, a~z, A~Z, ~!@#$%^&*()_+{}:"<>?
所謂的暴力猜測法是以電腦幫我們排列組合,來猜測是否與編碼完之密碼一致。
所謂的編碼,是指把 abc123 -> $1$BrhU5/2V$CwKqbD,編碼有一個特性是單向編碼,破解的方式是使用電腦作排列組合再去比對。
3. 新增帳號:
useradd -m 帳號名稱
useradd -m eecs -> 花生省魔術 ?
a. /etc/passwd 加了一行 eecs
b. /etc/shadow 加了一行 eecs
c. /etc/group 加了一行 eecs
d. 系統新增一個 /home/eecs 目錄
Q: 如何手動刪除帳號 ?
4. 給新帳號密碼:
作法一、
root@pc-29:~# passwd eecs
輸入新的 UNIX 密碼:abc123
再次輸入新的 UNIX 密碼:abc123
passwd:密碼已成功地變更
作法二、
# echo 帳號:密碼 | chpasswd
例如:
# echo eecs:password | chpasswd
5. 刪除帳號
userdel eecs
刪除帳號作了那些動作 ?
a. /etc/passwd 刪除一行 eecs
b. /etc/shadow 刪除一行 eecs
c. /etc/group 刪除一行 eecs
d. 系統新增之 /home/eecs 目錄 *** 沒有 *** 刪除,請至 /home 目錄,執行:
rm -rf eecs
手動刪除目錄(要十分確定再作這個動作!!)
5.1 如何「暫時」將帳號鎖起來 ?
假設我們管帳號時發現有某位使用者「疑似」有濫用系統的傾向,例如亂放檔案或是大量傳輸資料導致頻寬不足,這個時候我們可以「暫時」將使用者帳號鎖定。方式如下:在 /etc/shadow 檔中找出該位使用者,在其密碼欄位加上一個星號即可將此帳號鎖起來不讓他登入。
6. 如何新增大量帳號
假設你現在要新增 50 個學生帳號,其學號為:s100a001 ~ s100a050,每個人的群組都是 eecs,家目錄為 /home/s100a001 ~ s100a050,shell 要為 /bin/bash,密碼要為亂數產生,請問要怎麼辦 ?
6.0 新增大量帳號的思維:
a. 新增 001 帳號 (此時無密碼),提示:useradd
b. 修改 001 帳號之密碼,提示:echo 帳號:密碼 | chapasswd
c. 看看我們帳號是否建立完畢,否則帳號編號往上加 1,並回到步驟 a.,提示:for 迴圈
6.1 先從一個帳號開始:s100a001
groupadd eecs -> 新增 eecs 群組
useradd -m -g eecs -s /bin/bash s100a001
-m -> 強制建家目錄
-g eecs -> 設定主群為 eecs
-s /bin/bash -> 設定 shell 為 /bin/bash
6.2 讓系統自動產序號
請將以下片段另存新檔名為 for.sh
for i in `seq 1 50`
do
echo $i
done
然後執行 sh for.sh
我們可以發現此程式列印出 1 ~ 50 的字串
6.3 改善此程式,讓它印出學號
for i in `seq 1 9`
do
echo s100a00$i
done
for i in `seq 10 50`
do
echo s100a0$i
done
7. 如何給亂數密碼
最簡單的亂數密數:date +%N
8. 整個程式:
for i in `seq 1 9`
do
echo "echo Creating user account: s100a00$i"
echo useradd -m -s /bin/bash -g s100 s100a00$i
a=`date +%N`
echo "echo s100a00$i:$a | chpasswd"
done
for i in `seq 10 50`
do
echo "echo Creating user account: s100a0$i"
echo useradd -m -s /bin/bash -g s100 s100a0$i
a=`date +%N`
echo "echo s100a0$i:$a | chpasswd"
done
9. 如何進行上述程式:
sh for.sh > createusr.sh
將大量建帳號之指令轉成 createusr.sh 這個 shell script.
# sh createusr.sh
以 root 權限來新增帳號
10. 如何大量刪除帳號 ?
a. /etc/passwd
b. /etc/shadow
c. 在 /home 目錄下執行 rm -rf s100*
uid=1000(herman) gid=1000(herman) groups=1000(herman),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),112(netdev)
上述輸出告訴我們,此使用的 uid 為 1000,使用者帳號為 herman,gid 為 1000,群組亦為 herman,至於 groups 是此使用者所屬群組,主群組為 herman,次群組為 cdrom, floopy, auido, dip, video, plugdev, netdev。
uid -> User ID,建帳號時,系統會自動指定一個未使用的 uid 給你要建的帳號
gid -> Group ID,群組 ID,建帳號時,若未指定,系統會自動指定一個未使用的 gid 給你要建的帳號
groups -> 所屬群組,有主群組及次群組
id 帳號 -> 將某帳號的資訊列出來
2. 使用者帳號設定檔
/etc/passwd -> 帳號
/etc/shadow -> 密碼
/etc/group -> 群組
其權限如下:
-rw-r--r-- 1 root root 1546 2011-07-07 19:12 passwd
-rw-r----- 1 root root 1090 2011-07-07 19:14 shadow
^^^^^^*^^
我們可以發現 shadow 的讀取權限受到限制,如上述 * 處,其原因在於防止暴力猜測法以求出密碼。
0000 - 9999
0 - 9
根據離散數學的推導,有一密碼的排列組合為 n 的話,要猜出此密碼的平均次數為 n/2。
PC 上的密碼可能的文字如下所示:
0~9, a~z, A~Z, ~!@#$%^&*()_+{}:"<>?
所謂的暴力猜測法是以電腦幫我們排列組合,來猜測是否與編碼完之密碼一致。
所謂的編碼,是指把 abc123 -> $1$BrhU5/2V$CwKqbD,編碼有一個特性是單向編碼,破解的方式是使用電腦作排列組合再去比對。
3. 新增帳號:
useradd -m 帳號名稱
useradd -m eecs -> 花生省魔術 ?
a. /etc/passwd 加了一行 eecs
b. /etc/shadow 加了一行 eecs
c. /etc/group 加了一行 eecs
d. 系統新增一個 /home/eecs 目錄
Q: 如何手動刪除帳號 ?
4. 給新帳號密碼:
作法一、
root@pc-29:~# passwd eecs
輸入新的 UNIX 密碼:abc123
再次輸入新的 UNIX 密碼:abc123
passwd:密碼已成功地變更
作法二、
# echo 帳號:密碼 | chpasswd
例如:
# echo eecs:password | chpasswd
5. 刪除帳號
userdel eecs
刪除帳號作了那些動作 ?
a. /etc/passwd 刪除一行 eecs
b. /etc/shadow 刪除一行 eecs
c. /etc/group 刪除一行 eecs
d. 系統新增之 /home/eecs 目錄 *** 沒有 *** 刪除,請至 /home 目錄,執行:
rm -rf eecs
手動刪除目錄(要十分確定再作這個動作!!)
5.1 如何「暫時」將帳號鎖起來 ?
假設我們管帳號時發現有某位使用者「疑似」有濫用系統的傾向,例如亂放檔案或是大量傳輸資料導致頻寬不足,這個時候我們可以「暫時」將使用者帳號鎖定。方式如下:在 /etc/shadow 檔中找出該位使用者,在其密碼欄位加上一個星號即可將此帳號鎖起來不讓他登入。
6. 如何新增大量帳號
假設你現在要新增 50 個學生帳號,其學號為:s100a001 ~ s100a050,每個人的群組都是 eecs,家目錄為 /home/s100a001 ~ s100a050,shell 要為 /bin/bash,密碼要為亂數產生,請問要怎麼辦 ?
6.0 新增大量帳號的思維:
a. 新增 001 帳號 (此時無密碼),提示:useradd
b. 修改 001 帳號之密碼,提示:echo 帳號:密碼 | chapasswd
c. 看看我們帳號是否建立完畢,否則帳號編號往上加 1,並回到步驟 a.,提示:for 迴圈
6.1 先從一個帳號開始:s100a001
groupadd eecs -> 新增 eecs 群組
useradd -m -g eecs -s /bin/bash s100a001
-m -> 強制建家目錄
-g eecs -> 設定主群為 eecs
-s /bin/bash -> 設定 shell 為 /bin/bash
6.2 讓系統自動產序號
請將以下片段另存新檔名為 for.sh
for i in `seq 1 50`
do
echo $i
done
然後執行 sh for.sh
我們可以發現此程式列印出 1 ~ 50 的字串
6.3 改善此程式,讓它印出學號
for i in `seq 1 9`
do
echo s100a00$i
done
for i in `seq 10 50`
do
echo s100a0$i
done
7. 如何給亂數密碼
最簡單的亂數密數:date +%N
8. 整個程式:
for i in `seq 1 9`
do
echo "echo Creating user account: s100a00$i"
echo useradd -m -s /bin/bash -g s100 s100a00$i
a=`date +%N`
echo "echo s100a00$i:$a | chpasswd"
done
for i in `seq 10 50`
do
echo "echo Creating user account: s100a0$i"
echo useradd -m -s /bin/bash -g s100 s100a0$i
a=`date +%N`
echo "echo s100a0$i:$a | chpasswd"
done
9. 如何進行上述程式:
sh for.sh > createusr.sh
將大量建帳號之指令轉成 createusr.sh 這個 shell script.
# sh createusr.sh
以 root 權限來新增帳號
10. 如何大量刪除帳號 ?
a. /etc/passwd
b. /etc/shadow
c. 在 /home 目錄下執行 rm -rf s100*
訂閱:
文章 (Atom)