網頁

顯示具有 Linux 標籤的文章。 顯示所有文章
顯示具有 Linux 標籤的文章。 顯示所有文章

2013年4月25日 星期四

cpio指令



  • 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月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月16日 星期二

關閉、啟動投影密碼(shadow)


  • 若要關閉投影密碼功能,可執行pwunconv指令,將使用者的密碼從shadow檔寫回passwd檔。若要再啟動,則執行pwconv指令。
  • 在郡組上也有相同的投影密影功能,若要關閉群組的投影密碼功能,則可執行grpunconv指令,將密碼從gshadow檔寫回group檔中,若要啟動,則執行grpconv指令。

單人模式-忘記root密碼的救星


  • 如果你忘了root密碼時
    • 先切換到單人模式
      • 在開機顯示LILO畫面時,按Ctrl+X切換到文字模式的LILO畫面,並輸入
        • linux s
        • passwd root 
          • 重新設定root的密碼

2013年4月15日 星期一

建立開機磁片,mkbootdis指令,建立一個軟盤


  • 如果你在安裝系統時,並沒有製作開機磁片;或者開機磁片已經損毀,安裝系統後,可利用mkbootdisk指偷建立一張新的開機磁片。
    • mkbootdis `runame -r`
    • 或是
    • mkbootdis --device /dev/fd0 --noprompt 2.6.18

2013年4月14日 星期日

創建文件系統指令。mkfs,mke2fs指令


  • 在linux系統中,創建文件系統可以使用mkfs系統指令,按創建的文件系統不同,mkfs系列命令包括:mkfs.ext3、mkfs.ext2和ext.vfat等。利用這些指令可以為分區創建ext3、ext2和fat32等不同的文件系統,也可以直接使用mkfs指令創建不同的文件系統。
    • mkfs 指令,類似dos下的format指令
    • 指令的格式
      • mkfs [option] device
    • 常用的option
      • t:用於指定創建的文件系統類型
      • L:創建文件系統的同時,為文件系統增加卷標
      • c:創建文件系統前,先檢查指定分區的壞道。
      • v:顯示詳細內容
    • 使用方法如下:
      • mkfs -t ext2 -v /dev/sda4
      • mkfs -t ext3 /dev/sdb1
      • mkfs.ext3 -c /dev/sdb1
        • 用mkfs.ext3指令創建文件系統的同時,使用選項c檢查磁盤中的壞道
      • mkfs -t ext3 -L /data /dev/sdb1
        • 創建文件系統的同時,使用選項L為sdb1創建卷標。
  • 查看和修改卷標指令e2label
    • 卷標是用戶對文件系統增加一個別名,通常用于標識文件系統的用途。在linux系統中卷標也可以用於掛載文件系統。
      • 指令格式:e2label device [new_label]
    • e2label /dev/sdb1 /file
      • 為sdb1的磁盤分區設定一個名稱file的卷標
    • e2label /dev/sdb1
      • 查為sdb1的磁盤分區使用的卷標
  • 掛載文件系統
    • 在linux等類unix系統中,創建文件系統後,必須先將文件系統掛載到某個目錄,然後才能使用該文件系統存儲數據。掛載是將文件系統的階區"掛"在某個目錄下,這個目錄就是該分區的訪問點。
    • 在linux系統中,掛載分區使用mount指令,不僅可以掛載分區,還可以掛載光驅、u盤、光盤鏡象等設備和文件。
    • 指令格式
      • mount [option] device directory
        • device:表示要掛載的設備或文件
        • directory表示設備或文件的掛載點。
      • 常用的選項
        • a:掛載所有可以掛載的文件系統,如果不指定,則掛載文件/etc/fstab中列出的文件系統
        • o:指定掛載時使用的參數
          • async:以非同步的方式讀寫文件系統
          • atime:每次存取都更新文件的訪問時間戳記
          • auto:自動掛載。該選項只能用於/etc/fstab文件中,表示用戶使用選項a時,此文件系統將自動掛載。
          • user:允許普通用戶掛載文件系統,此選項還附帶有noexec、nodev等選項(除非掛載時重新指定這些參數,否則default不生效)
          • users:允許所有用戶掛載文件系統,此選項還附帶有noexec、nodev等選項(除非掛載時重新指定這些參數,否則default不生效)
          • dev:提載後可讀取文件系統上的字符設備和塊設備文件。
          • exec:掛載後可執行文件系統上的2進制文件
          • noatime:與atime參數作用相反,不更新訪問時間戳記。此參數通常用於光盤等只讀的文件系統
          • noauto:與auto參數作用相反。
          • nouser:禁止普通用戶掛載文件系統
          • noexec:與exec選項相反,不允許執行文件系統上的2進制文件
          • nodev:與dev選項閜反,不允許讀取文件系統上的字符設備和塊設備文件。
          • remount:試圖重新掛載一個文件系統,通常用於改變文件系統的掛載參數。
          • ro:以只讀方式掛載文件系統。
          • rw:以可讀寫方式掛載文件系統
          • sync:所有對文件系統的讀寫操作者應該立即完成
          • suid:設置用戶id和組id
          • loop:將文件當成文件系統掛載
          • nosuid:與suid功能相反;不設置用戶id和組id
          • bind:將一個子樹掛載到其他地方,即從多個位置訪問一文件系統
          • defaults:default參數,包括:rw,suid,dev,exec,auto,nouser,async
          • 注意:如非必要,不要使用user或users等參數,否則可能會引起系統安全性的問題
        • t:指定文件系統的類型。如果掛載常見的文件系統,一般不必指定文件系統的類型。通常只有光盤鏡像、遠程文件系統等需要指定文件系統類型。
      • 用法示例:
        • mount -t ext3 /dev/sdb1 /mnt/sdb1
        • mount ext3 /dev/sdb1 /mnt/sb1
          • 不使用t選項,表示讓系統自動判斷文件系統並掛載
        • mount 
          • 查看系統掛載的狀況
        • mount -p loop linux.iso /media
          • 使用loop選項掛載光盤鏡像文件
--------------------------------------------------------
badblocks 指令用新檢查硬碟是否有壞塊的存在
使用方法如下:
badblocks -s -v /dev/sda
--------------------------------------------------------

mke2fs 指令,用於創建第2擴展文件系統
使用方法如下:
mke2fs-t ext2 -v /dev/sda4
--------------------------------------------------------

2013年4月11日 星期四

排程指令crond


  • 在使用排程crontab前,你必須確保計劃任務的相關服務已經正確啟動。也就是crond,atd這2個服務
    • chkconfig --level 35 crond on
    • chkconfig --list crond
    • chkconfig --level 35 atd on
    • chkconfig --list atd
    • service crond start
    • service atd start
  • 如果要禁用某些用戶的計劃任務
    • 在/etc/cron.denyt檔中加入需要禁用的用戶名。
  • 電腦在很多的時侯需要週期性的執行某一項目工作,這時侯你就需要使用到crond的排程指令了。
  • 排程設定檔的寫法
    • 在啟動時間格式為:Minute Hour Day Month DayOfWeek Command
    • 如遇到不指定的時間單位你可以用*來表示
      • 1 * * * * program -a -b -c
        • 上列為每分鐘執行某工作
      • 20 4 * * *  program 
        • 上列為每4點20分的時侯執行某工作
      • 1 0 8 sep * program
        • 每年九月8日的0點1分時
      • 9 4 * * sun program
        • 每個星期日的不限日4時9分時執行
      • 20 2 1,15 * * program
        • 每月的1或15日2點20分執行
      • 25 1-4 * * * program
        • 每日的1至4點的25分執行
      • */10 * * * * program
        • 每十分鐘執行一次
      • 35 5 */10 * * program
        • 每隔十日的5點35分執行
  • /etc/contab的檔案內容
    • SHELL =/bin/bash                  #指定執行排程工作所使用的shell
    • PATH=/sbin:/bin:/user/sbin:/usr/bin  #指定指令搜尋的路徑
    • MAILTO=root     #指定輸出的結果,郵寄給root帳號
    • HOME=/        #指定根目錄
    • 01 * * * * root run-parts /ect/cron.hourly
      • 每個小時的第1分鐘以root帳號執行/etc/cron.hourly目錄中的所有執行檔
      • run-parts指令會執行隨後目錄中的所有執行檔
  • crond排程指偷會每小時、每天、每週及每月執行一次/etc/hourly,/etc/daily,/etc/monthly目錄中的所有執行檔
  • 個人的排程工作
    • 你可以透過crontab -e指令來編輯自已的排程設定檔,並在此檔加入要定期執行的工作,以下為canred使用者編輯自已的排程設定檔
      • crontab -u canred
        • 指定查看canred帳號的計劃任務
      • crontab -e
      • crontab -l
        • 查詢自已所有的排程工作
      • crontab -r 
        • 刪除自已所有的排程工作,在使用前一定要特別的注意哦…因為一不小心就全刪除了。
    • 一般狀態下排程工作的設定檔會被儲存在/var/spool/cron目錄下,以帳號名稱為檔名的設定檔。
  • 系統管理員是可以編輯其他人員的排程工作哦…
    • crontab -e -u canred
      • 使用u選項來指定編輯的帳號
    • Default下系統會將用戶提交的計劃任務放在目錄/var/spool/cron/中,並以用戶命名計劃任務文件。
  • 在設定排程的常用輸出結果方式
    • 1 * * * * program >> /home/canred/cron.log
    • 1 * * * * program >> /home/canred/cron.log 2>&1
      • 2>&1表示執行結果及錯誤訊息
    • 1 * * * * program > /dev/null 2>&1
      • /dev/null 是表示不儲存資料,也就是直接放棄啦
  • 備份/還回計劃任務
    • 備份
      • crontab -l > \backup\cron_canred
    • 還原
      • crontabl \backup\cron_canred
  • 系統計劃任務
    • 有4個關鍵的目錄
      • /etc/cron.daily
      • /etc/cron.hourly
      • /etc/cron.monthly
      • /etc/cron.weekly

bzip2,bunzip2和bzip2reconver指令


  • bzip2,bunzip2和bzip2reconver
    • 你可能可以看到*.tar.bz2的壓解檔,這種壓縮檔通常會拿來壓縮統統kernel或path檔
    • bunzip2實際上就是bzip2,你可以用ls -l bzip2 bunzip2 看看
    • 選項:
      • -k:在壓縮和解壓縮的過程中保留原檔
      • -f:強迫產生檔案
      • -d:執行解壓縮行為
    • 範例:
      • *.tar.bz2的解壓縮方法
        • bzip2 -dc linux-2.1.xxx.tar.bz2 | tar xvf -
  • bzip2recover指令;用來修復損毀的.bz2檔案。
    • bzip2recover test.bz2





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所壓縮的檔案。

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月7日 星期日

掛載的儲存媒體看不到中文檔名?


  • 如果掛載的儲存媒體中含有中文檔名,需要在執行mount指令時,再加上"-o iocharset=cp950"參數,如此才能看到此儲存媒體內的中文檔名。例如要掛載光碟片,則執行以下指令。
    • mount -o iocharset=cp950 /dev/cdrom /mnt/cdrom

避免按Ctrl+Alt+Del重新開機的方法


  • 要在Linux底下重新開機,也可以直接按下組合鍵Ctrl+Alt+Del,如果你不希望任何人利用這組合鍵隨意的重新啟動電腦,請修改/etc/initab檔:
    • 將原有的ca::ctrlaltdel:/sbin/shutdown -t3 -r now前面加上一個#即可
      • #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

/etc/inittab 設定錯誤,導致無法開機!


  • 若修改了/etc/inittab後無法正常開機,則可以在開機時採用單人模式進入系統,重新修改inittab設定檔以解決此問題。
  • 使用LILO為開機管理程式時,只要在開機顯示LILO選單畫面時,按下Ctrl+x鍵,切換到文字模式的LILO的登入畫面,並輸入以下參數即可:  
    • linux s
  • 若使用GRUB為開機管理程式時,同樣在開機顯示選單畫面時,按 Ctrl+x鍵,接著按p鍵,再輸入GRUB密碼,最後按a鍵,並在指令列輸入以下參數以進入單人模式
    • ro root=/dev/hda2 s 


2013年4月1日 星期一

設定GRUB開機管理程式


  • GRUB(GRand Unified Bootloader)為多重開機管理程式的後起之秀,這套多重開機程式最初由Erich Stefan Boleyn所設計及實作出來,目前由GNU所維護。GRUB可以取代LILO,同時功能更強大,目前已有許多Linux發行版內附GRUB的程式。
  • 如何改新開機設定檔
    • GRUB預設會去讀位於/boot/grub/menu.lst的設定檔,在Red Hat Linux裡的menu.lst為一個連結到/boot/grub/grub.conf的連結檔。並由修改此設定檔可更改GRUB的開機時的相關功能。
    • 若你想更改開機的選單、圖片,可編輯/boot/grub/menu.lst檔案修改。以下簡單的說明一下menu.lst檔案
      • default=0        //此處預設開機的作業系統
      • timeout=10    //GRUB選單的延遲時間
      • splashimage=(hd0,1)/boot/grub/splash.xpm.gz //開機選單的背影圖片
      • title Red Hat Linux (2.x.x)    //選單上所顯示的名稱
      •         root (hd0,1)                //存放系統核心的分割區
      •        kernel /boot/vmlinuz-2.....  ro root=/dev/hda2   //指定要載入的核心及掛載系統的根目錄
      •        initrd /boot/initrd.2......    
      • title DOS       //表Windows分割區
      •       rootnoverify (hd0,0)     //指定開機的磁碟
      •       chainloader +1 //由於microsoft的作業系統屬封閉類型,因此需以chainloader的方式啟動該分割區中第一個磁區裡的開機程式
  • 重新安裝GRUB
    • 修改完設定檔後必須重新安裝GRUB才能生效,請執行下面的指令
      • grub-install /dev/hda

2013年3月25日 星期一

Apache相關設定及說明


  • Appach的相關設定存儲於 /opt/httpd/conf/httpd.conf,若如果你要修改的話,或是廠商有修改的話可能在其他的地方如/etc/httpd/config下的httpd.conf
  • 啟動apache
    • /opt/apache/bin/apachectl start
    • /sbin/service httpd restart
  • 你的預設的www目錄可能在/var/www/html
  • 注意:若是你有新增page到/var/www/html中的話,記得要修改一下權限
    • chmod 755 /var/www/html/yourfile.html
  • 在httpd.conf常設定的選項
    • Listen : 是設定apache使用到的port 
      • Listen 80
    • ServerRoot "/usr/local/apache"      : 設定apache的伺服器所在的根目錄
    • <IfModule !mpm_netware.c>
    • PidFile logs/httpd.pid                    :執行http這個服務的程序號碼
    • </ifModule>
    • Timeout 300          :在傳陝五與接收之前的逾時的秒數
    • KeepAlive On     :是否保持連線
    • MaxKeepAliveRequest  100     : 建立連線時所允許的最大回應數,而0表不限
    • KeepAliveTimeout 15   :在相同的client,相同的連線中,等待下一個請求的秒數,起過即算逾時。
    • <IfModule prefork.c>
    •     StartServers 5         :server啟動時的程予數目
    •     MinSpareServers   5 :server備援程序的最小直
    •     MaxSpareServers  5 : 上行的最大值
    •     MaxClient 150 : client端的最大連線數
    •     MaxRequestsPerChild 0 : 一個server程式最大回應的子程序數目;0表不限
    • </IfModule>
    • ExtendedStatus On :這個控制是否紀錄完整的狀態(on),或是基本的資訊(off),default是關閉的。
    • User Apache
    • Group Apache 以上2行是定義執行httpd的使用者與群組,預設是apache
    • ServerAdmin admin@test.com 當系統出現問題的時侯所出現的聯絡email
    • ServerName new.host.name:80 是否認證自已的domain name
    • UseCanonicalName off 是否使用別名
    • DocumentRoot "/usr/local/apache/htdocs" 網頁根目錄所放的路徑
    • 對於apache而言,每一個目錄都可以設相關的權限,以下的default值使用嚴格的限制
      • <Directory>
      •     Options FollowSymLinks
      •     AllowOverride None    
      • </Directory>
    • DirectoryIndex index.html index.htm  頁設開啟的檔案
    • AccessFileName .htaccess 每個目錄錄中權限控管的檔案
    • 以下是設定避免.htaccess以及.htpasswd被web client看到
      • <Files ~"^\.ht">
      •     Order allow , deny
      •     Deny from all
      • </Files>
    • HostnameLookups Off 紀錄檔中的ip address是否要做反查
    • EnableMMAP off 記憶體對應的控制
    • ErrorLog logs/error_log 錯誤檔案的紀錄位置
    • LogLevel warm 紀錄檔的等級
    • CustomLog logs/access_log common 全部的紀錄都到一個紀錄檔中
    • ServerSignature On 在一些網頁中是否要出現Admin 的email的連結
    • Alias /haha "/usr/local/apache/manual" 建立別名
    • LanguagePriority tw en da ...語言的優先順序


  • 設定apache的認證登入
    • 新增一個Apache所認的id,supermain,以及密碼為abc123,並將密碼檔置於/opt/passwords。要注意…這一個密碼檔必須要能夠被apache帳號讀取到,並且最好放在瀏覽器無法存取到的位置。
      • htpasswd -c /opt/passwords superman
      • new password:abc123
      • re-type ......
    •  首外將/opt/passwords給予一孺使用者閱讀的權限,否則認正的功能將無法啟動。由於apache除了port 80 的程序由root執行之外,其他的程序由apache這個使用者執行,所以必須開放根目錄可閱讀的權限
    • chmod 644 /opt/passwords
    • chmod 755 /home/newrpm
    • 在httpd.conf加入以下四行
      • <Directory /home/*/www>
      • AuthType Basic
      • AuthName "Restricted Files"
      • AuthUserFile /opt/passwords
      • require user supermain
      • ... 
  • apache的虛擬主機:一台pc多個domain name
    • 假設pc a 的ip 為10.1.1.1 而有2個domain name,分別是www.one.com以及www.two.com,我們希望client端在browser輸入不同的domain name,則會連到不同的目錄。
      • 修改httpd.conf
        • NameVirtualHost  10.1.1.1
        • <VirtualHost www.one.com>
        •     DocumentRoot /home/one/www
        •     ServerName www.one.com
        •     ErrorLog logs/error_one_log
        •     CustomLog logs/access_log1 common
        • </VirtualHost>

        • <VirtualHost www.two.com>
        •     DocumentRoot /home/two/www
        •     ServerName www.tow.com
        •     ErrorLog logs/error_tow_log
        •     CustomLog logs/access_log2 common
        • </VirtualHost>
  • appache的分散流量
    • 實做方法有2個;1為在DNS server設定,將同一個domain name對應到多個Ip Address,另一個為iptables的設定。
  • httpd指令說明
    • -d serverroot : 設定server root的起始目錄
    • -f config :使用特定的設定檔案,預設值是conf/httpd.conf
    • -t :執行httpd.conf的語法測試,
    • -v :顯示apache的版本
    • -V:顯示apache的版本以及httpd用的參數
  • htpasswd指令
    • -c:新增密碼檔案,如果此檔案已經存在,會被覆蓋
    • -d:不使用交談方式,直接將密碼置於指令之後
      • htpasswd /usr/local/etc/apache/.htpasswd-users tom
        • 新增或是更改tom的密碼
      • htpasswd -c /home/doe/mywwww/.htpasswd jane
        • 新增一個帳號並記錄它
      • htpasswd -mb /usr/web/.htpasswd-all john HappyDays
        • HappyDays是密碼哦
  • apachectl指令
    • start:啟動apache server
    • Stop:停止apache server
    • Restart:重新啟動
    • Fullstatus:顯示完整的狀態
    • Status:顯示簡單的狀態
    • Configtest:執行語法測試
    • Help:help 這就不用說了吧…

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.