1. 程式人生 > >鳥哥的Linux私房菜習題與解析(二)

鳥哥的Linux私房菜習題與解析(二)

第二部分 Linux檔案、目錄與磁碟格式

第六章 Linux的檔案許可權與目錄配置

1、/bin和/usr/bin及/sbin目錄所放置的執行檔案有什麼不同 /bin目錄下放置的是在單使用者維護模式下還能夠被操作的命令,這些命令都可以被root和普通使用者所使,如 cat chmod chown date mv mkdir cp 等常用命令。 /sbin 表示system binary,該目錄下放置的是一些只有超級使用者(root)才能使用的系統設定命令,包括開機,修復,還原系統所需要的命令。如fdisk, ifconfig, init, mkfs。 /usr/bin 放置的是絕大多數的普通使用者可以使用的命令(與開機無關)

2、哪幾個目錄不能夠與根目錄(/)放置到不同的分割槽中?並請說明該目錄所放置的資料是什麼?

因為根目錄與開機有關,開機過程中僅有根目錄會被掛載,其它分割槽則是在開機完成之後才會持續進行掛載的行為。就是因為如此,因此根目錄下與開機過程有關的目錄就不能夠與根目錄放到不同的分割槽去。

/etc : 配置檔案 系統主要的配置檔案幾乎都放置在這個目錄內,例如人員的賬號密碼檔案、各種服務的起始檔案等。一般來說,這個目錄下的個檔案屬性是可以讓一般使用者查閱的,但是隻有root有權利修改。不要放置可執行檔案在這個目錄中。比較重要的檔案有/etc/inittab,/etc/init.d/,/etc/modprobe.conf,/etc/X11,/etc/fstab,/etc/sysconfig等。

 /etc/init.d/:所有服務的預設啟動指令碼都是放在這裡的,例如要啟動或者關閉iptables的話:"/etc/init.d/iptables start"、“/etc/init.d/iptables stop” /etc/xinetd.d/:這就是所謂的super daemon管理的各項服務的配置檔案目錄。

/etc(配置檔案), 

/bin(一般身份可用的重要執行檔案), 

/dev(裝置檔案), 

/lib(執行檔案所需的函式庫與核心模組等), 

/sbin(重要的系統執行檔案,只有系統管理員可用) 

3、試說明為何根目錄小一點比較好。另外在分割槽時,為什麼/home,/usr,/var,/tmp最好與根目錄放到不同的分割槽?試說明可能的原因為何(由目錄放置資料的內容談起)。

根目錄是整個系統最重要的一個目錄,因為不但所有的目錄都是由根目錄衍生出來的,同時根目錄與開機、還原、修復系統等操作有關。由於系統開機時需要特定的開機軟體、核心檔案、開機所需程式、函式庫等檔案資料,若系統出現錯誤時,根目錄也必須要包含有能夠修復檔案系統的程式才行。因為根目錄這麼重要,所以在FHS的要求方面,系統根目錄不要放置在非常大的分割槽內,因為越大的分割槽你會放入越多的資料,如此一來根目錄所在分割槽就可能會有較多發生錯誤的機會。 因此FSH標註建議:根目錄(/)所在分割槽應該越小越好,且應用程式所安裝的軟體最好不要與根目錄放在同一個分割槽內,保持根目錄越小越好。如此不但效能較好,根目錄所在的檔案系統也較不容易發生問題。

/home 這是系統預設的使用者主資料夾。在你建立一個一般使用者賬號時,預設的使用者主資料夾都會規範到這裡來。

/usr 所有系統預設的軟體都會放置到/usr下面。

/var 如果/usr是安裝是會佔用較大的硬碟容量的目錄,那麼/var就是在系統執行後才會漸漸佔用硬碟容量的目錄。因為/var目錄主要針對常態性變動的檔案,包括快取(cache)、登入檔案(log file)以及某些軟體執行所產生的檔案,包括程式檔案(lock file,run file),或則例如MySQL資料庫的檔案等

/tmp 這是讓一般使用者或者是正在執行的程式暫時放置檔案的地方。這個目錄是任何人都能夠訪問的,所以你需要定期清理一下。當然,重要資料不可放置在此目錄。因為FHS甚至建議在開機時,應該要將/tmp下的資料都刪除

4、早期的UNIX系統檔案最多允許14個字元,而新的UNIX與LINUX系統中,檔名最多可以容許幾個字元?

單一檔案或目錄的最大容許檔名為255個字元

包含完整路徑名稱及目錄(/)的完整檔名可為4096個字元。

5、當一個檔案許可權為-rwxrwxrwx,則表示這個檔案的意義是什麼?

擁有者,同用戶組,其他使用者的許可權都為可讀、可寫、可執行

6、我需要將一個檔案許可權改為-rwxr-xr--,請問該如何執行命令

chmod 754 filename或 chmod u=rwx,g=rx,o=r filename

7、若我需要更改一個檔案的所有者與使用者組,該用什麼命令?

chown, chgrp 

8、請問下面的目錄主要放置什麼資料? /etc、/etc/init.d/、/boot,、/usr/bin、/bin、/usr/sbin、/sbin、/dev、/var/log

/etc 各種軟體與系統的配置檔案

/etc/init.d 各種軟體與啟動指令碼

/etc/:系統主要的配置檔案幾乎都放置在這個目錄內,例如人員的賬號密碼檔案、各種服務的起始檔案等;

/etc/init.d:所有服務的預設啟動指令碼都是放在這個目錄中;

/boot:主要放置在開機會使用到的檔案,包括Linux核心檔案以及開機選單與開機所需配置檔案等;

/usr/bin:絕大部分的使用者可使用命令都在這裡,與/bin不同的是這些命令與開機過程無關;/bin:主要放置在開機時,以及進入單使用者維護模式後還能夠被操作的命令;

/usr/sbin:非系統正常執行所需要的系統命令,最常見的就是某些網路伺服器軟體的服務命令;

/sbin:主要放置開機過程中所需要的命令,裡面包括了開機、修復、還原系統所需要的命令,只有系統管理員能使用;

/dev:在Linux系統上,任何裝置與介面裝置都是以檔案的形式存在與這個目錄當中;

/var/log:主要放置登入檔案,記錄登入資訊。

9、若一個檔案的檔名開頭為“.”,例如.bashrc這個檔案,代表什麼?另外如何顯示出這個檔名與它的相關屬性?

有“.”為開頭的為隱藏檔案,需要使用 ls -a這個 -a的選項才能顯示出隱藏檔案的內容,而使用 ls -al才能顯示出屬性。

第7章 Linux檔案與目錄管理

1、什麼是絕對路徑與相對路徑

答:對於Linux,絕對路徑的寫法為由 /開始寫,相對路徑則不由 /開始寫。此外,相對路徑為相對於目前工作目錄的路徑。

2、如何更改一個目錄的名稱?例如由/home/test變為/home/test2。

答:mv /home/test /home/test2 

3、PATH這個環境變數的意義是什麼?

答:這個是用來指定執行檔執行的時候,命令搜尋的目錄路徑。 

4、umask有什麼用處與優點?

答:umask用來指定目前使用者在新建檔案或目錄時候的許可權預設值,因此它可以增減一些許可權,因此,適當的定義 umask有助於系統的安全,因為他可以用來建立預設的目錄或檔案的許可權。 

5、當一個使用者的umask分別為033與044,他所建立的檔案與目錄的許可權是什麼?

答:在 umask為 033時,則預設是拿掉 group與 other的 w(2)x(1)許可權,因此許可權就成為“檔案 -rw-r--r--,目錄 drwxr--r-- ”而當 umask 044時,則拿掉 r的屬性,因此就成為“檔案 -rw--w--w-,目錄 drwx-wx-wx”。 

6、什麼是SUID?

答:SUID是一種檔案特殊許可權,SUID有這樣的限制於功能:SUID許可權僅對二進位制程式有效;執行者對於該程式需要具有x的可執行許可權;本許可權僅在執行改程式的過程中有效;執行者將具有該程式所有者的許可權。

7、當我要查詢/usr/bin/passwd這個檔案的傳統許可權、檔案型別與檔案的隱藏屬性,可以使用什麼命令來查詢?

答:ls -alfilelsattr嘗試用find找出目前Linux系統中所有具有SUID的檔案有哪些。

find / -perm +4000 -print 

8、找出/etc下面,檔案大小介於50KB到60KB之間的檔案,並且將許可權完整地列出(ls-l)。

答:find /etc -size +50k -a -size -60k -exec ls -l {} \;

9、找出/etc下面,檔案容量大於50KB且檔案所有者不是root的檔名,且將許可權完整地列出(ls-l)。

答:find /etc -size +50k -a ! -user root -exec ls -ld {} \;

10、找出/etc下面,容量大於1500KB以及容量等於0的檔案。

答:find /etc -size +1500k -o -size 0

第8章 Linux磁碟與檔案系統管理

1、如果由於你的主機磁碟容量不夠大,你想要增加一塊新磁碟,並將該磁碟分割槽成單一分割槽,且將該分割槽掛載到/home目錄,你該如何處置?

答:安裝硬碟:關掉 Linux主機電源,將硬碟放入主機後插好硬碟的扁平電纜與電源線,重新啟動電源;磁碟分割槽:將整個磁碟分割槽成單一主要分割槽,類似 /dev/sdb1佔有全部容量;格式化:透過 mkfs -t ext3 來格式化;資料遷移:由於原本的 /home還會有資料存在,因此你可以 mount /dev/sdb1 /mnt,再將 /home 的資料複製到 /mnt/中,例如:“cp -a /home/* /mnt ”即可。複製完畢後卸除 /home以及 /mnt;重新掛載:編輯 /etc/fstab,將 /home所在的 filesystem裝置改為 /dev/sdb1之類的新分割槽,然後 mount -a測試看看是否正確,如果正確的話,才是順利結束了這次的動作。

2、如果扇區/dev/hda3有問題,偏偏它是被掛載上的,請我我要如何修理此扇區?

答:先將扇區解掛再檢修。即先執行umount /dev/hda3再執行fsck /dev/hda3 

3、我們經常說,開機的時候發現硬碟有問題,請問,這個問題的產生是檔案系統的損壞還是硬碟的損壞?

答:如果某個 filesystem裡面,由於操作不當,可能會造成 Superblock資料的損毀,或者是 inode的架構損毀,或者是 block area的記錄遺失等等,這些問題當中,其實硬碟還是好好的,不過,在硬碟上面的檔案系統則已經無法再使用。一般來說,我們的 Linux很少會造成 filesystem的損毀,所以,發生問題時,很可能整個硬碟都損毀了。但是,如果您的主機常常不正常斷電,那麼,很可能硬碟是沒問題的,但是,檔案系統則有可能損毀。此時,重建檔案系統 (reinstall)即可,不需要換掉硬碟。

4、當我有兩個檔案,分別是file1與file 2,這兩個檔案互為hard link的檔案,請問,若我將file 1刪除,然後再以類似vi的方式重新新建一個名為file 1的檔案,則file 2的內容是否會被改動?

答:當我刪除 file1之後, file2 則為一個正規檔案,並不會與他人共同分享同一個 inode與 block ,因此,當我重新建立一個檔名為 file1時,他所利用的 inode 與 block都是由我們的 filesystem 主動去搜尋 meta data,找到空的 inode 與 block來建立的, 與原本的 file1並沒有任何關聯性。所以,新建的 file1 並不會影響 file2。