- cpio是一個比較古老的備份命令,也是用於磁帶機備份的工具,雖然如此現在許多時侯仍然需要使用這命令,例如定制系統內存映像盤時等。像是系統內存映像盤通常位於/boot中,文件名以initrd開頭。
- 指令選項
- i:使用copy-in模式,還原歸檔文件或列歸檔文件中的文件列表
- o:使用copy-out模式,建立歸檔文件
- p:使用copy-pass模式,將文件直接複制到目的目錄
- c:使用老式的ascii歸檔格式。如果需要跟平台使用,就需要使用
- d:倉建需要的目錄,如果需要文件不處於同一個目錄中,應該使用此選項
- v:顯示處理過程
- t:顯示歸檔文件中的文件列表
- m:保持文件的時間標記
- H:使用指定的格式歸檔文件
- sample
- find /bin -print | cpio -o > bin.bak
- find -print | cpio -o > ../backup.cpio
- find -print | cpio -ov > ../backup.cpio
- find -print | cpio -ov | gzip > ../backup.cpio.gz
- find -print | cpio -ov | bzip2 > ../backup.cpio.bz2
- cpio -t < backup.cpio
- cpio -tv < backup.cpio
- cpio -tv "*.c" < backup.cpio
- cpio -i < ../backup.cpio
- cpio -iv < ../backup.cpio
- 以上2個,使用選項i將文件恢複到當前的目錄
- cpio -idv < ../backup.cpio
- 文件恢複時保持目錄結構
- cpio -imdv < ../backup.cpio
- cpio -idv "*.c" < ../backup.cpio
2013年4月25日 星期四
cpio指令
2013年4月23日 星期二
ntpdate指令,通過網路同步時間
- ntpdate指令,通過網路同步時間
- ntpdate 192.168.11.15
- 從192.168.111.15上同步時間
- hwclock -w
- 將系統的時間同步到硬件時鐘上
- 時間服務器位置
- 中國國家授時中心:210.72.145.44
- CERNET時間服務:www.time.edu.cn/mem.htm
2013年4月22日 星期一
netstat指令,顯示網路的狀態
- 假如想觀察本機網路服務的狀態,或本地端與其他主機貸間的連線狀態等資料,可執行netstat指令查詢相關資訊。
- 範例
- netstat -a
- 顯示本機所有網路服務狀態
- netstat -nt
- 查看所有tcp的連線狀態
- 其他網路上擷取的資訊
如果你覺得你的某個網路服務明明就啟動了,但是就是無法造成連線的話,那麼應該怎麼辦? 首先你應該要查詢一下自己的網路介面所監聽的埠口 (port) 來看看是否真的有啟動,因為有時候螢幕上面顯示的 [OK] 並不一定是 OK 啊! ^_^
netstat 的輸出主要分為兩大部分,分別是 TCP/IP 的網路介面部分,以及傳統的 Unix socket 部分。 還記得我們在基礎篇裡面曾經談到檔案的類型嗎?那個 socket 與 FIFO 檔案還記得吧? 那就是在 Unix 介面用來做為程式資料交流的介面了,也就是上頭表格內看到的 Active Unix domain sockets 的內容囉~
通常鳥哥都是建議加上『 -n 』這個參數的,因為可以避過主機名稱與服務名稱的反查,直接以 IP 及埠口號碼 (port number) 來顯示,顯示的速度上會快很多!至於在輸出的訊息當中, 我們先來談一談關於網路連線狀態的輸出部分,他主要是分為底下幾個大項:
你可以發現很多的網路服務其實僅針對本機的 lo 開放而已,網際網路是連接不到該埠口與服務的。 而由上述的資料我們也可以看到,啟動 port 111 的,其實就是 rpcbind 那隻程式,那如果想要關閉這個埠口, 你可以使用 kill 刪除 PID 969,也可以使用 killall 刪除 rpcbind 這個程序即可。如此一來, 很輕鬆的你就能知道哪個程式啟動了哪些埠口囉!
看到上頭的特殊字體吧?那代表目前已經建立連線的一條網路連線,他是由遠端主機 192.168.1.101 啟動一個大於 1024 的埠口向本地端主機 192.168.1.100 的 port 22 進行的一條連線, 你必須要想起來的是:『Client 端是隨機取一個大於 1024 以上的 port 進行連線』,此外『只有 root 可以啟動小於 1024 以下的 port 』,那就看的懂上頭那條連線囉!如果這條連線你想要砍掉他的話, 看到最右邊的 4716 了沒? kill 會用吧! ^_^
至於傳統的 Unix socket 的資料,記得使用 man netstat 查閱一下吧! 這個 Unix socket 通常是用在一些僅在本機上運作的程式所開啟的插槽介面檔, 例如 X Window 不都是在本機上運作而已嗎?那何必啟動網路的 port 呢?當然可以使用 Unix socket 囉,另外,例如 Postfix 這一類的網路伺服器,由於很多動作都是在本機上頭來完成的, 所以以會佔用很多的 Unix socket 喔!
[root@www ~]# netstat -[rn] <==與路由有關的參數 [root@www ~]# netstat -[antulpc] <==與網路介面有關的參數 選項與參數: 與路由 (route) 有關的參數說明: -r :列出路由表(route table),功能如同 route 這個指令; -n :不使用主機名稱與服務名稱,使用 IP 與 port number ,如同 route -n 與網路介面有關的參數: -a :列出所有的連線狀態,包括 tcp/udp/unix socket 等; -t :僅列出 TCP 封包的連線; -u :僅列出 UDP 封包的連線; -l :僅列出有在 Listen (監聽) 的服務之網路狀態; -p :列出 PID 與 Program 的檔名; -c :可以設定幾秒鐘後自動更新一次,例如 -c 5 每五秒更新一次網路狀態的顯示; # 範例一:列出目前的路由表狀態,且以 IP 及 port number 顯示: [root@www ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0 # 其實這個參數就跟 route -n 一模一樣,對吧!這不是 netstat 的主要功能啦! # 範例二:列出目前的所有網路連線狀態,使用 IP 與 port number [root@www ~]# netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State ....(中間省略).... tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 52 192.168.1.100:22 192.168.1.101:1937 ESTABLISHED tcp 0 0 :::22 :::* LISTEN ....(中間省略).... Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 11075 @/var/run/hald/dbus-uukdg1qMPh unix 2 [ ACC ] STREAM LISTENING 10952 /var/run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 11032 /var/run/acpid.socket ....(底下省略).... |
通常鳥哥都是建議加上『 -n 』這個參數的,因為可以避過主機名稱與服務名稱的反查,直接以 IP 及埠口號碼 (port number) 來顯示,顯示的速度上會快很多!至於在輸出的訊息當中, 我們先來談一談關於網路連線狀態的輸出部分,他主要是分為底下幾個大項:
- Proto:該連線的封包協定,主要為 TCP/UDP 等封包;
- Recv-Q:非由使用者程式連接所複製而來的總 bytes 數;
- Send-Q:由遠端主機所傳送而來,但不具有 ACK 標誌的總 bytes 數, 意指主動連線 SYN 或其他標誌的封包所佔的 bytes 數;
- Local Address:本地端的位址,可以是 IP (-n 參數存在時), 也可以是完整的主機名稱。使用的格是就是『 IP:port 』只是 IP 的格式有 IPv4 及 IPv6 的差異。 如上所示,在 port 22 的介面中,使用的 :::22 就是針對 IPv6 的顯示,事實上他就相同於 0.0.0.0:22 的意思。 至於 port 25 僅針對 lo 介面開放,意指 Internet 基本上是無法連接到我本機的 25 埠口啦!
- Foreign Address:遠端的主機 IP 與 port number
- stat:狀態列,主要的狀態含有:
- ESTABLISED:已建立連線的狀態;
- SYN_SENT:發出主動連線 (SYN 標誌) 的連線封包;
- SYN_RECV:接收到一個要求連線的主動連線封包;
- FIN_WAIT1:該插槽服務(socket)已中斷,該連線正在斷線當中;
- FIN_WAIT2:該連線已掛斷,但正在等待對方主機回應斷線確認的封包;
- TIME_WAIT:該連線已掛斷,但 socket 還在網路上等待結束;
- LISTEN:通常用在服務的監聽 port !可使用『 -l 』參數查閱。
# 範例三:秀出目前已經啟動的網路服務 [root@www ~]# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:34796 0.0.0.0:* LISTEN 987/rpc.statd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 969/rpcbind tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1231/master tcp 0 0 :::22 :::* LISTEN 1155/sshd udp 0 0 0.0.0.0:111 0.0.0.0:* 969/rpcbind ....(底下省略).... # 上面最重要的其實是那個 -l 的參數,因為可以僅列出有在 Listen 的 port |
# 範例四:觀察本機上頭所有的網路連線狀態 [root@www ~]# netstat -atunp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 969/rpcbind tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1155/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1231/master tcp 0 52 192.168.1.100:22 192.168.1.101:1937 ESTABLISHED 4716/0 ....(底下省略).... |
至於傳統的 Unix socket 的資料,記得使用 man netstat 查閱一下吧! 這個 Unix socket 通常是用在一些僅在本機上運作的程式所開啟的插槽介面檔, 例如 X Window 不都是在本機上運作而已嗎?那何必啟動網路的 port 呢?當然可以使用 Unix socket 囉,另外,例如 Postfix 這一類的網路伺服器,由於很多動作都是在本機上頭來完成的, 所以以會佔用很多的 Unix socket 喔!
| 例題:
請說明服務名稱與 port number 的對應在 Linux 當中,是用那個檔案來設定對應的?
答:
/etc/services
|
ifconfig顯示或設定網路的介面
- ifconfig指令
- 查詢目前的網路介面資訊,不加選項時會顯示已安裝的網路卡與封閉迴路(lo,loopback)的資訊。
- 相關的欄位資訊
- inet addr:全名為網際網路位址 ,就是此台的ip位址
- HWaddr:硬體位址;前3碼是網路炩生產廠商的代號;後3碼是該網路卡的生產序號。
- Bcase:這是廣播(broadcast)的位址,用於同時發送訊息給相同網域裡的其他電腦。
- Mask:網路遮罩
- MTU:每個資料封包的最大傳輸單位(Maximun Transmission Unit),用來控制封包的大小,預設值是1500Bytes.
- RX、TX:分別代表已接收(Received)與已輸出(Transmitted)的封包總數,以及傳輸時封包出現流失或碰撞等狀況之數量。
- 網路下設定
- ifconfig eth0 netmask 255.255.0.0
- 設定eth0這張網卡的mask為255.255.0.0
- ifconfig eth0 down
- 關閉eth0這張網卡
- ifconfig eth0 up
- 啟動eth0這張網卡
2013年4月20日 星期六
du指令(追蹤大文件命令)
- 追蹤大文件命令
- 隨著系統運行時間的持續,用戶數越來越多,可能會使文件仦統的可用空間越來越小,直到有一天收到系統磁盤空間告警的消息,這時管理員可能需要查看是哪些文件占用了過多的空間,以清理文件系統上的無用文件。此時du指令就派上用場了
- du指令選項
- h:以更直觀的方式顯示文件大小。
- s:查看當前目錄的大小
- 使用範例:
- du /mnt
- du -h /mnt
- du -sh
2013年4月16日 星期二
關閉、啟動投影密碼(shadow)
- 若要關閉投影密碼功能,可執行pwunconv指令,將使用者的密碼從shadow檔寫回passwd檔。若要再啟動,則執行pwconv指令。
- 在郡組上也有相同的投影密影功能,若要關閉群組的投影密碼功能,則可執行grpunconv指令,將密碼從gshadow檔寫回group檔中,若要啟動,則執行grpconv指令。
Linux軟體整理
- 小弟是一邊看書一邊整理的…所以一開始可能看見一些已經作古的軟件,請別再在意哦!!!會續陸更新的!!
- 辦公室軟體-KOffice
- KWord:文書編輯軟體
- KSpread:試算表軟體
- KPresenter:簡報軟體
- KChart:圖表繪製軟體
- KFormula:公式製作軟體
- Kivio:標程表軟體
- Kontour:向量繪圖軟體
- Kugar:商業數據分析軟體
- OpenOffice:文件編輯軟體
- GhostView:觀看PS,PDF文件
- Xpdf:觀看PS,PDF文件
- 一般軟體
- Electric Eyes:影像編輯
- gimp:影像編輯
- 燒錄軟體
- X-CD-Roast
- 影音軟體
- gtv(Gtk+MPEGPlayer)
- MpegTV Player(mtv)
- Xmms:mp3播放軟體
- Gnome:聽音樂CD
- 虛擬機器軟體
- VMWare
- 系統&管理相關
- xosview
- Webmain(管理)
- GnoRPM
- 模組維護工具
- modutils
- module-init-tools
傳輸檔案的ftp指令
- 在ftp的模式下
- hash :表示為了避免傳輸大檔時,不知道檔案是在傳輸中或斷線了,可讓檔案在每傳送一定大小後顯示一個#號
- binary:指定要傳送的是2進位檔
- ascii:指定要傳送的檔是文字檔
- get:下載一個檔案
- put:上傳一個檔案
- mget:下載多個檔案
- mput:上傳多個檔案
- ?:顯示所有指令
- prompt:可以設定是否要在檔案傳輸前一個一個確定
- !指令:有!打頭的表示這一個指令是下在系統的終端機上的不是ftp本身,如
- !pwd
- !mkdir download
- lcd:在不登出ftp下,切換本機目前的目錄
ssh遠端登入常用的指令&設定
- Red Hat 預設是開啟telnet伺服器,而是以ssh伺服器來代替。因為telnet在資料傳輸時是不加密的,而ssh是有加密的。
- 常用的指令
- ssh canred.com.tw
- ssh 192.168.x.xx
- ssh -l 192.168.x.xx
- 使用l選項,你可以指定要登入遠端主機的帳號
- 設置
- 取消root遠端登入
- Red Hat的ssh伺服器default是允許root帳號登入的;如果你要關掉的話你可以修改/etc/ssh/sshd_config檔
- PermitRootLogin no :表示不允許Root帳號登入系統
- 當設定檔變更時,你必須重新啟動服務
- /etc/rc.d/init.d/sshd restart
2013年4月15日 星期一
建立開機磁片,mkbootdis指令,建立一個軟盤
- 如果你在安裝系統時,並沒有製作開機磁片;或者開機磁片已經損毀,安裝系統後,可利用mkbootdisk指偷建立一張新的開機磁片。
- mkbootdis `runame -r`
- 或是
- mkbootdis --device /dev/fd0 --noprompt 2.6.18
2013年4月10日 星期三
gunzip指令;解壓gzip檔案
- gzip/gunzip與zip的用法上的不同
- zip指令能將許多檔案壓縮成一個檔案的功能,但gzip不能,所以gzip一般會和tar合併使用。目前大部份可以見到的壓縮檔大都是用tar將所有檔案打包成一個檔案,再用gzip做壓縮,所以當我們看到副檔名為.tar.gz或.tgz者,大多就是這類型的檔案。
- gzip指令
- 選項(大致於zip的選項大同小異)
- -S:指定副檔名
- gzip -S .gzip data01.txt
- 注意:使用-S的選項壓縮檔案時在解壓的時侯也要加上-S的選項
- gzip -S .gzip -d data01*
- -f:解壓時強迫覆蓋輸出檔案,不要提示user訊息。
- gzip -d -f data02.txt.gz
- 常用的範例:
- gzip data.txt
- 壓縮data.txt檔案,並產出一個data.txt.gz的檔
- gzip -d data.txt.gz
- 解縮動作
- gunzip指令
- 基本是就是gzip只是負責解壓行為;另外可以用gunzip來解zip或compress所壓縮的檔案。
zip 指令 , unzip 指令
- zip 指令
- 常用的選項
- g:將新的檔案附加到一個已存在的zip檔中
- zip -g test *.txt
- j:只壓縮檔案,但是不儲存目錄的結構;default是有目錄結構的
- zip -j test *.text /data2/*.txt
- r:遞廻方式壓縮
- zip -r test *
- -f:更新壓縮檔中的檔案
- zip -f test *.txt *.doc
- -u:可又新修改過的檔案並加入新檔
- 常見的範列:
- 將所有*.txt的檔案壓成一個myfiles.zip檔
- zip myfiles *.txt
- zip myfiles *.txt *.doc
- unzip 解壓zip檔
- 選項
- d:指定解壓的目的目錄
- u:在解壓時,如果目的目錄已經存在此檔案就不解壓;若不存在時才解壓。
- unzip -u test.zip
- j:用法跟zip的j選項雷同;有j選項時只解壓檔案出來不含目錄的結構。
- unzip -j test.zip
- 常見的用法
- unzip test.zip
- unzip test.zip -d mydir
2013年4月9日 星期二
tar 打包檔案以及壓縮/解壓
- tar指令是讓使用者所指定的檔案或目錄打包成一個檔案,不過它並不做壓縮。一般unix上常用的壓縮方式是先用tar將許多檔案打包成一個檔案,再以gzip等壓縮指令壓縮成xxx.tar.gz
- tar常用的選項
- c:建新一個新的tar檔
- v:顯示運作過程的資訊
- f:指定一個檔案的名稱通常與c,x,z選項一起使用(指定打包的文件檔)
- z:呼叫gzip壓縮指令執行壓縮
- Z:使用compress解壓縮/壓縮
- tar -cZvf test.tar.Z *.txt
- t:檢視壓縮檔案的內容
- x:解開tar檔
- --atime-preserve:壓縮後的檔案以原來的檔案時間為主
- --checkpoint:讀取壓縮檔時顯示目錄名稱
- h:儲存符號連結(symbolic link)所連結的檔案,而不是符號連結本身
- --delete:刪除.tar檔中的檔案
- tar --delete -vf text.tar test.txt
- r:將新的檔案附加到tar後
- tar -rvf text.tar newfile.new
- u:更新tar檔案的內容
- tar -uvf test.tar t.txt
- k:在解包的時侯不要覆蓋已存在的檔案
- tar -xkvf test.tar
- --remove-files:將檔案移入tar檔中,並移除原檔案。
- tar --remove-files -cvf test.tar *.txt
- W:可在寫入時,檢查 tar檔
- tar -Wcvf text.tar *.txt
- --use-compress-program:指定壓縮程式
- tar --cvf test.tar --use-compress-program zip *.txt
- --totals:會顯示寫入的bytes數
- tar --total -cvf text.tar *.txt
- j:通過bzip2處理歸檔的文件
- tar 範例
- tar -cvf data.tar *
- 將所有檔案打包成為一個data.tar檔
- tar -cvzf data.tar.gz *
- 與上例相同但是多了壓縮
- tar -tvf data.tar
- 檢視data.tar檔中包含那些檔案
- tar -xvf data.tar
- 將data.tar檔解開
- tar -xzvf bin.tar.gz
- 用gzip格式解包解縮
2013年4月8日 星期一
fg,bg,&指令,將指令放到後台執行;nohup指令可讓使用者登出系統後,程序繼續執行
- 使用者有時侯執行的程序可能要花很多時間,如果將它放在前景執行,將導致無法繼續做其他事情,最好的方法就是將它放在背景執行,甚至可能還希望使用者登出系統後,程序還可以繼續執行。
- 在背景執行程序的&,bg指令
- 格式:指令 &
- sample 1 :
- netscape &
- sample 2:
- updatedb
- 按下Ctrl+Z中斷動作
- bg
- 將更新動作放到背景執行
- sample 3:
- sleep 300 &
- ps
- 後台執行時,並將輸出重定向到指定文件中
- mv /mnt/sdd5/test /root/ &>message &
- 上例,使用重定向將命產生的輸出和錯誤信息寫入文件message中,這樣命令執行過程中就不會有消息發送到控制台了。
- 在前景執行程序的fg指令
- fg
- nohup指令可讓使用者登出系統後,程序繼續執行
- nohup myserver &
- 2013/4/23:
- 新增:
- 背景執行範例程式 sample 3 、重定向
2013年4月7日 星期日
/etc/inittab 設定錯誤,導致無法開機!
- 若修改了/etc/inittab後無法正常開機,則可以在開機時採用單人模式進入系統,重新修改inittab設定檔以解決此問題。
- 使用LILO為開機管理程式時,只要在開機顯示LILO選單畫面時,按下Ctrl+x鍵,切換到文字模式的LILO的登入畫面,並輸入以下參數即可:
- linux s
- 若使用GRUB為開機管理程式時,同樣在開機顯示選單畫面時,按 Ctrl+x鍵,接著按p鍵,再輸入GRUB密碼,最後按a鍵,並在指令列輸入以下參數以進入單人模式
- ro root=/dev/hda2 s
2013年3月24日 星期日
磁碟和文件系統管理
- 分區類型的標識【重要觀念】
- 主分區:可以直接掛載並存取數據。一個礎盤上最多只有4個主分區(即一個磁盤最多只有4個可用的主分區)
- 擴展分區:特殊的主分區(占用一個主分區)。要使用擴展分區,必須先將擴展分區劃分為可以直接掛載並存取數據的邏輯分區,也就是說一開始建立的擴展分區是不可以直接使用的,而一個邏輯分區一定是由擴展分區廷伸出來的。
- 邏輯分區:從擴展分區中劃分出來一類分區。邏輯分可以直接掛載並存取數據,一個擴展分區可以被劃分為屬個邏輯分區。
- 從上面的內容可以看出,一個磁盤最多可以劃分為4個可以直接掛載並存取數據的主分區。如果需要劃分為4個以上的分區,可以將一部分磁盤空間劃分為擴展分區,然後再將擴展分區劃分為多個邏輯分區;以磁盤sda為例,sda的4個主分區標識分別為sda1,sda2,sda3,sda4(最多4個),而邏輯分區則使用sda5,sda6,sda7(一定由5開始)…這樣的形式表示。
- 查看磁碟設備列表指令fdisk
- 指令格式 fdisk [option] device
- 常用的option只有一個 l : 其作用是列出當前系統中的磁碟設備及分區詳情。
- fdisk -l
- 其主要的功能在對磁盤進行分區。
- fdisk /dev/sdb
- command(m for help):m
- 常用的fdisk功能有
- d:刪除分區,使用此命令時,磁盤上必須有可供刪除的磁盤分區
- l:查看分區類型列表
- n:增加新分區。使用此命令時,磁盤上必須有空閒的磁盤空間或者還有未被分配的擴展分區空間。
- p:打印當前分區表。
- q:不保存已更改的內容並退出。
- t:修改分區類型。
- v:驗証分區表
- w:保存所做的更改並退出。
- 利用fdisk工具對磁盤進行分區(我們要對sdb進行分區,將其分成2個主分區;第1個是sdb1大小為40g,第2個主分區為使用全部剩餘空間的擴展分區。最後將擴展分區的所有空間劃分為邏輯分區sdb5)
- fdisk /dev/sdb
- command(m for help): p
- command(m for help): n
- p
- ...
- Partition number(1-4):1
- First sylinder (1-10443,default:1):
- Last cylinder or +size ... : +40G
- command(m for help):n
- e
- Partition number(1-4):2
- command(m for help):n
- l
- p
- w
- 執行完以上操作後,分區工作就已經完成了。但有時內核會無法識別新增加的分區,這個問題主要在於一些移動硬盤、u盤等。主要現像為設備目錄/dev中,沒有相應的分區文件或分區文件不完全等,這時可以使用指令partprobe讓內核重新讀取分區表
- fdisk 的 l 選項可以列出所有的設備
- fdisk -l
- 注意:在linux系統中,所有的設備都被放在目錄/dev/中,對顧磁盤等存儲設備而言,sd通表示scsi磁盤、stat磁盤、u盤;hd通常表示ide磁盤,而軟盤通常使用fd表示,光驅則使用hdc或cdrom表示
- 查看磁盤設備指令hdparm
- hdparm命令主要用於查看ide硬盤的工作參數。還可以使用此指令設置ide硬盤的工作模式。
- 指令格式: hdparm [option] device
- 常用的option
- I:顯示硬盤提供的硬件信息。
- T:評估硬盤從快速存中讀取資料的速度。
- t:評估硬盤從湲沖區中取資料的速度。
- hdparam -I /dev/sha
- hdparm -tT /dev/sba
- 用來評做硬盤sda的性能,評估效能的指令可以用於ide設備、scsi設備、raid設備等。
2013年3月23日 星期六
POSIX ACL權限系統及其管理命令
- POSIX是protable Operating System Interface的縮寫,含義是移植操作系統接口。POSIX ACL權限在linux的內核2.6版之後就正式支持了,一般的文件系統ext2,ext3,JFS等都支持POSIX ACL。
- POSIX ACL仍然使用傳統權限中的讀寫、執行作為管理的核心,不同的是可以為文件增加多個用戶或組的權限細則 。為文件增加acl權限可以使用setfacl命令,而getfacl命令是取得文件的posix ACL的權限清冊。
- ACL權限管理命令setfacl
- setfacl命令主要用於增加、刪除acl權限。與傳統文件權限管理的命令一樣,只有root用戶和文件屬主才能畢setfacl命令。
- 命令格式
- setfacl [option] 權限表達式 文件名
- 常用的option
- b:刪除所有擴展ACL權限
- k:刪除default的ACL權限
- d:設定default的ACL權限
- R:遞迴的設置目錄及目錄中的所有文件
- m:修改、增加已有的ACL權限
- 設定acl權限時的權限表達式與chmod的權限表達式是不同的。其ACL的權限表達式基本格式
- [對象類型]:[對象]:[權限列表]
- 對象類型:可以使用的對象類型有4種。
- u:使用者/用戶
- g:群組
- m:表示ACL權限的安全值
- o:其他用戶
- 對象:當然就是用戶或組的名稱
- 權限:以w,r,x的組合
- 如果一條指令中要使用多個權限表達式,可以使用","將這些權限表達式分隔開。
- 範例:
- setfacl -m u:canred:rw a.txt
- 設定用戶canred 可讀可寫 a.txt的文件
- getfacl指令用來查看acl權限。
- 使用getfacl命令查看文件的acl權限時,通常不需要使用任何選項,直接將要查看的文件作為其參數即可
- 範例:
- getfacl a.txt
- 文件系統可能default不支持acl,可以通過重新掛載的方式,讓這些文件系統支持acl,命令為mount -o remonut,acl /dev/sda3。
- ACL權限列表中還有一個特殊的條目,其對象類型為mask,其主要作用是限制ACL條目的最大權限,當設置的acl權限超過權限上限時,超過的權限將會被系統屏蔽
- setfacl -m m::r,g:admin:rwx aFolder
- 刪除acl權限
- setfacl -b aFolder
- 遞迴的增加ACL權限
- setfacl -Rm u:canred:rw,g:admin:rw test
- 預設ACL權限
- setfacl -dm u:canred:rw,g:admin:rw file
- 上面的命令為目錄設置了預設的acl權限,在目錄中建立的新文件將會自動繼承預設的acl權限。
- 刪除預設acl權限
- setfacl -k file
權限掩碼命令umask
- 當戶戶建立件時,系統會自動為文件增加一個default的權限。如果用戶忘記修改文件的default權限就可能會引發一些安全隱患。為避免此類問題,通常建議用戶修改創建立件時的default權限,即將創建文件的default權限修改為一個相對安全的值。
- 在Linux系統中,使用umask值確定用戶創建文件的default權限,可以使用修改umask值的方法修改用戶創建文件時的default權限。由予mask有掩碼的意思,也稱為權限掩碼。而權限掩碼在用戶登錄系統時就已經被初始化,umask值使用3位8進制數表示default權限。其對於文件而且:每一位的最高值為6,對於一個目錄而言,每一位最高值是7
- 查看umask值
- 使用umask的指令即可
- 修改權限掩碼
- umask 022
- 設定其他人員、郡組都可以有read的權限
- 保存修改後的umask的值
- 使用umask命令設置的權限掩碼將會在系統重啟後失效,如果希望保存umask值,通常將其寫入用戶初始化文件 ~/.bash_profile中。
- echo "umask 022" >> ~/.bash_profile
2013年3月19日 星期二
rndc指令用來管理控制nameserver用的。以及dns補助指令nslookup,host,dig
- rndc指令是讓系統管理者控制nameserve之用的,其語法如下:
- rndc [-c config] [-s server] [-p port] [-y key] command
- config,server,port,key均可省略,而要注意的是command的語法
- reload:重新啟動設定以及所有的zones
- reload zone:重新啟動給定的zone。
- reconfig:重新啟動新的zones,這個參數並不會去啟動已存在的zones。
- stats:將統計資料寫到紀錄檔中 named.stats;
- stop:停止服務,並將最新的變更對檔案做更新。
- halt:立即停止服務,並不會對最近變更的檔案更新。
- flush:更新server的暫存區。
- status:顯示server的狀態。
- nslookup
- 這是最常用來查詢domain name與ip address之間的對應關系的指令,您可以指定使用某台DNS Server,也可以設定要查詢的種類。
- nslookup
- www.yahoo.com
- .....
- set type=mx
- www.yahoo.com
- host
- 這也是常用來做查詢DNS紀錄的指偷
- host -a hinet.net
- dig
- DNS查詢工具
- dig hinet.net mx
2013年3月18日 星期一
XINETD--啟動內建的TCP服務;XINETD的設定說明:
- XINETD是為了安全性而取代原有的INETD的一項產品,事實上不只是安全性,還包括了許多超越inetd的功能設定。底下將其特微做些說明:
- 權限的控管
- 它可以限制些ip address可以建立連線,哪些不行。
- 對於DOS(Denial of Service)的防範
- 它可以針對特定的電腦限制連線的速率,以及建立連線的數目。如果有某台電腦試圖建立很多連線,使用特定的服務,我們就可以限制某電腦同時的連線數。
- 記錄檔的延伸性
- 可以利用syslog去紀錄不同的服務,讀者也可以把特定的服務紀錄在特定的檔案內。
- 服務的重新導向
- 可以將連線重新導向到另一個特定IP Address的特定port,這裡的ip address不一定是外部的ip。如果你的電腦是nat server,當然可以導向到內部的ip。比如說a電腦是有一個外部ip及內部ip(是一個nat);b電腦是smtp服務用的電腦;c電腦是http服務器。當外部連線到a電腦,提出smtp服務時,將自動轉到b電腦,提出http服務,當就是轉到c電腦啦。
- IPv6的支援
- 在版本2.1.8.8之後,就有支援IPv6了。
- XINETD所包含的服務
- 有telnet,ftp,pop0,daytime,echo,finger...etc.它的預設的目錄在/etc/xinetd.d之下。當然,這是預設的部分,你當然可以新增自訂服務或是將既有的(非xinet所提供的服務)透過xinetd啟動(如sendmail)。此外,亦可單純的做重新導向的工作。
- 範例:
- 開啟telnet服務
- vi /etc/xinetd.d/telnet
- disable = no
- service telnet
- {
- flags = REUSE
- socket_type=stream
- wait=no
- user=root
- server=/usr/sbin/in.telnetd
- log_on_failure +=USERID
- disable=no
- }
- 重新啟動xinetd服務
- /sbin/service xinetd restart
- 或 /etc/init.d/xinetd reload 指令重新載入說設定檔,將立即啟用telnet服務,另外說明一下有關telnet預設是不可以用root登入的哦。
- 在使用telnet連接時可以出現中文亂碼,你可以使用telnet -8 bbs.ncku.edu.tw來啟動telnet;加上"-8"的選項便可正常輸入中文了,小弟我是沒有試過啦^ ^
- 如果你真的要讓root帳戶可以使用telnet的話…你可這樣做(但不建意)
- 更改/etc/securetty檔案內容
- /etc/securetty檔案內的設定值,是用來限定root帳號可從哪一個終端機登入。在Linux中遠端登入是使用pts/0,pts/1...等終端機。而實際上使用者登入時,到底是採用第幾號pts終端機,則視您是目前系統中第幾個遠端登入的使用者而異,例如,系統目前已有2個使用者,此時您登入時,系統就會自動指定pts/2給你也就是3號終端機。所以如果要讓root帳號能遠端登入,只要利vim修改/etc/securetty檔的設定值即可,以讓root帳號能遠端登入。如果覺得麻煩也可以把/etc/securetty更名或刪除也可…但不意見哦!!!
- 開啟pop3服務
- vi /etc/xinetd.d/ipop3
- disable = no
- service telnet
- {
- socket_type=stream
- wait=no
- user=root
- server=/usr/sbin/ipop3d
- log_on_success += HOST DURATION
- log_on_failure +=HOST
- disable = no
- }
- 重新啟動xinetd服務
- /sbin/service xinetd restart
- 開啟另一個telnet服務走1234port
- 複制原/etc/xinetd.d/telnet 到 telnet2
- vi /etc/xinetd.d/telnet2
- disable = no
- service telnet2
- {
- flags = REUSE
- socket_type=stream
- wait=no
- user=root
- server=/usr/sbin/in.telnetd
- log_on_failure +=USERID
- disable=no
- }
- vi /etc/services並在telnet 23/tcp,udp下加入一行
- telnet2 1234/tcp
- telnet2 1234/udp
- 重新啟動xinetd服務
- /sbin/service xinetd restart
- 接著我們要限制服務的ip範圍
- vi /etc/xinetd.d/telnet2
- 新增一行
- only_from = 10.1.1.0/24 192.168.10.1
- 10.1.1.1~10.1.1.255
- 192.168.10.1
- 接著我們要限制使用的系統資源
- 限制記憶使用量
- rlimit_as=16M
- 限制CPU用量
- rlimit_cp=20
- 限制服務時間
- access_times=03:00-6:00 9:00-15:00
- 限制telnet服務的總數為5
- 新增
- instances=5
- cps= 15 10
- 以上2行的功能。instances代表的是提供服務的總數,而cps後面代的2個數值,cps代表的是每秒只提供15個client同時連線,超過的話則ftp會暫停服務,過10秒後才會再度提供服務
- 新增一個port為10000的http服務並重新導向到http://www.yahoo.com.tw
- 在/etc/xinetd.d/下新增一個檔案uuu,內容如下:
- service uuu
- {
- flag=REUSE
- socket_type=stream
- wait=no
- user=root
- server=/usr/sbin/in.telnetd
- port=10000
- redirect=www.yahoo.com.tw 80
- log_on_failure+=USERID
- disable=no
- }
- XINETD設定檔說明
- /etc/xinetd.conf
- defaults
- {
- instances=60
- log_type=SYSLOG authpriv
- log_on_success=HOST PID
- log_on_failure=HOST
- cps= 25 30
- }
- 說明:
- instances:表示一項服務同時提供的連線數目
- log_type:表示紀錄的方式,在這邊syslog表示會記錄到系統紀錄中,再根據/etc/syslog.conf紀錄到特定的檔案,由於authpriv在syslog.conf是紀錄到/var/log/secure,所以預設值就會紀錄到/var/log/serure中
- log_on_success:是表示連線成功所紀錄的檔案
- log_on_failure:是log_on_success的反之
- cps:代表的是每秒只提供25個client同時連線,超過的話則ftp會暫停服務,過30秒後才會再度提供服務
- includedir:表示其他的設定檔放在/etc/xinetd.d之中,如果沒特別指定,則所有的設定檔均會套用上述的設定。
- /etc/xineted.d的通用格式如下:
- service <service_name>{
- <A> <B> <參數><參數>…
- 其中的<B>為指派的運算符號,有3種=,+=,-=
- <A>為屬性,列出一些較常用的
- id:用來確認服務的唯一性,特別是相同名稱的服務,但卻使用不甸的通訊協定
- type:包含下列三種
- RPC:Remote Procedure Call,遠端程序呼叫
- INTERNAL:本身包含在xinetd中的服務
- UNLISTED:此項服務未包含在/etc/services中
- disable:
- yes表停止服務;no表正常運作
- socket_type:
- 包含下列3種
- stream:stream-based的服務,也就是TCP Service。
- dgram:datagram-based的服務,也就是UDP Service。
- raw:需要直接使用IP的服務
- wait:yes表single-thread,僅提供單一連線,no表示multi-thread,表示持續提供服務。
- user:使用特定的人員來執行這個應用程式,但若是這個使用者沒有特殊使用者的權限可以會無執行
- group:使用特定的郡組來執行這個應用程式,但若是這個群組沒有特殊使用者的權限,可能會無法執行
- instance:同時間連線的數目;UNLIMITED表示不限制
- server:決定這個服務所使用的應用程式
- server_args:這個服務所需的應用程式後面所需要加的參數
- only_from:限制某些特定來源IP Address,才提供連線服務,其他的圾不得建立連線
- no_access:限制某些特定來源ip address不提供服務
- access_time:可提供服務的時間
- log_type:紀錄檔的格式 SYSLOG syslog_facility [level]:
- 透過syslog.conf的設定紀錄到特定的檔案,syslog_facility有daemon,auth,authpriv,user等,你可以在syslog.conf中定義這樣的紀錄要寫而哪個檔案中。那麼[level]包含emerg,alert,crit,err,warning,notice,info,debug.
- FILE file:將紀錄到特定的 檔案,file為檔案名稱,後面可加參數。
- log_on_success:連線成功時所要紀錄的資訊
- log_on_failure:連線失敗時所要紀錄的資訊。
- banner:成功連線時歐出現的標題,可以是某個檔案的內容
- cps:後面接著M,N是表示每秒僅能建立M個連線,超過的話,服務會暫時停止,等N秒後再度提供服務
- rlimit_as:限制記憶體的資源,如rlimit_as=16M表示只能使用16M Bytes的記憶體,UNLIMITED表示不限。
- rlimit_cpu:限制子程序最多能使用的CPU seconds,UNLIMITED表示不限
- port:指定這項服務所使用的port number.
訂閱:
文章 (Atom)