1. 程式人生 > 實用技巧 >linux操作指南-02

linux操作指南-02

目錄

1.1 使用者與群組

在我們Linux系統當中,預設的情況下,所有的系統上的賬號與一般身份使用者,還有那個root的相關資訊, 都是記錄在/etc/passwd這個檔案內的。至於個人的密碼則是記錄在/etc/shadow這個檔案下。 此外,Linux所有的組名都紀錄在/etc/group內!這三個檔案可以說是Linux系統裡面賬號、密碼、群組資訊的集中地.

總結:root天人!!!群組許可權<=使用者 ,other與使用者組互斥

2.1 Linux 檔案許可權概念

鳥哥這張圖很棒,言簡意賅!(偷偷拿過來當字典用,哇哈哈哈哈!!!

第一個字元代表這個檔案是『目錄、檔案或連結檔案等等』:

  • 當為[ d ]則是目錄,例如上表檔名為『.gconf』的那一行;
  • 當為[ - ]則是檔案,例如上表檔名為『install.log』那一行;
  • 若是[ l ]則表示為連結檔(link file);
  • 若是[ b ]則表示為裝置檔案裡面的可供儲存的介面裝置(可隨機存取裝置);
  • 若是[ c ]則表示為裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)。

接下來的字元中,以三個為一組,且均為『rwx』 的三個引數的組合。其中,[ r ]代表可讀(read)、[ w ]代表可寫(write)、[ x ]代表可執行(execute)。 要注意的是,這三個許可權的位置不會改變,如果沒有許可權,就會出現減號[ - ]而已。

  • 第一組為『檔案擁有者的許可權』,以『install.log』那個檔案為例, 該檔案的擁有者可以讀寫,但不可執行;
  • 第二組為『同群組的許可權』;
  • 第三組為『其他非本群組的許可權』。

如果檔名之前多一個『 . 』,則代表這個檔案為『隱藏檔』

2.1.1 如何改變檔案屬性與許可權

  • chgrp:
[root@www ~]# chgrp [-R] dirname/filename ...
選項與引數:
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案、目錄
     都更新成為這個群組之意。常常用在變更某一目錄內所有的檔案之情況。
範例:
[root@www ~]# chgrp users install.log
[root@www ~]# ls -l
-rw-r--r--  1 root users 68495 Jun 25 08:53 install.log
[root@www ~]# chgrp testing install.log
chgrp: invalid group name `testing'
  • chown:
[root@www ~]# chown [-R] 賬號名稱 檔案或目錄
[root@www ~]# chown [-R] 賬號名稱:組名 檔案或目錄
選項與引數:
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都變更

範例:將install.log的擁有者改為bin這個賬號:
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

範例:將install.log的擁有者與群組改回為root:
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log
  • 真正強大的chmod(上面兩我基本沒怎麼用過!):

各許可權的分數對照表如下:

  • r:4
  • w:2
  • x:1
    每種身份(owner/group/others)各自的三個許可權(r/w/x)分數是需要累加的,例如當權限為: [-rwxrwx---] 分數則是:
  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0
[root@www ~]# chmod [-R] xyz 檔案或目錄
選項與引數:
xyz : 就是剛剛提到的數字型別的許可權屬性,為 rwx 屬性數值的相加。
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更

2.1.2 符號型別改變檔案許可權

a 則代表 all 亦即全部的身份

[root@www ~]# chmod  u=rwx,go=rx  .bashrc
# 注意喔!那個 u=rwx,go=rx 是連在一起的,中間並沒有任何空格!
[root@www ~]# ls -al .bashrc
-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# ls -al .bashrc
-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# chmod  a+w  .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# chmod  a-x  .bashrc
[root@www ~]# ls -al .bashrc
-rw-rw-rw-  1 root root 395 Jul  4 11:45 .bashrc

3.1 Linux目錄配置的依據--FHS

下面兩張表無比重要!!!第一張表最為主要!!(這種規範不是說必須遵循,是因為業界的人大多數都是按照這個規範來的。)

目錄 應放置檔案內容
/bin 系統有很多放置執行檔案的目錄,但/bin比較特殊。因為/bin放置的是在單人維護模式下還能夠被操作的指令。 在/bin底下的指令可以被root與一般賬號所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。
/boot 這個目錄主要在放置開機會使用到的檔案,包括Linux核心檔案以及開機選單與開機所需配置檔案等等。 Linux kernel常用的檔名為:vmlinuz,如果使用的是grub這個開機管理程式, 則還會存在/boot/grub/這個目錄喔!
/dev 在Linux系統上,任何裝置與介面裝置都是以檔案的型態存在於這個目錄當中的。 你只要透過存取這個目錄底下的某個檔案,就等於存取某個裝置囉~ 比要重要的檔案有/dev/null, /dev/zero, /dev/tty, /dev/lp, /dev/hd, /dev/sd*等等
/etc 系統主要的配置檔案幾乎都放置在這個目錄內,例如人員的賬號密碼檔案、 各種服務的啟始檔等等。一般來說,這個目錄下的各檔案屬性是可以讓一般使用者查閱的, 但是隻有root有權力修改。FHS建議不要放置可執行檔案(binary)在這個目錄中喔。比較重要的檔案有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等。另外,其下重要的目錄有:/etc/init.d/:所有服務的預設啟動 script 都是放在這裡的,例如要啟動或者關閉 iptables 的話:『 /etc/init.d/iptables start』、『/etc/init.d/iptables stop』/etc/xinetd.d/:這就是所謂的super daemon管理的各項服務的配置檔案目錄。/etc/X11/:與 X Window 有關的各種配置檔案都在這裡,尤其是 xorg.conf 這個 X Server 的配置檔案。
/home 這是系統預設的使用者家目錄(home directory)。在你新增一個一般使用者賬號時, 預設的使用者家目錄都會規範到這裡來。比較重要的是,家目錄有兩種代號喔::代表目前這個使用者的家目錄,而dmtsai :則代表 dmtsai 的家目錄!
/lib 系統的函式庫非常的多,而/lib放置的則是在開機時會用到的函式庫, 以及在/bin或/sbin底下的指令會呼叫的函式庫而已。 什麼是函式庫呢?妳可以將他想成是『外掛』,某些指令必須要有這些『外掛』才能夠順利完成程式的執行之意。 尤其重要的是/lib/modules/這個目錄, 因為該目錄會放置核心相關的模組(驅動程式)喔!
/media media是『媒體』的英文,顧名思義,這個/media底下放置的就是可移除的裝置啦! 包括軟盤、光碟、DVD等等裝置都暫時掛載於此。常見的檔名有:/media/floppy, /media/cdrom等等。
/mnt 如果妳想要暫時掛載某些額外的裝置,一般建議妳可以放置到這個目錄中。 在古早時候,這個目錄的用途與/media相同啦!只是有了/media之後,這個目錄就用來暫時掛載用了。
/opt 這個是給第三方協力軟體放置的目錄。什麼是第三方協力軟體啊? 舉例來說,KDE這個桌面管理系統是一個獨立的計劃,不過他可以安裝到Linux系統中,因此KDE的軟體就建議放置到此目錄下了。 另外,如果妳想要自行安裝額外的軟體(非原本的distribution提供的),那麼也能夠將你的軟體安裝到這裡來。 不過,以前的Linux系統中,我們還是習慣放置在/usr/local目錄下呢!
/root 系統管理員(root)的家目錄。之所以放在這裡,是因為如果進入單人維護模式而僅掛載根目錄時, 該目錄就能夠擁有root的家目錄,所以我們會希望root的家目錄與根目錄放置在同一個分割槽中。
/sbin Linux有非常多指令是用來設定系統環境的,這些指令只有root才能夠利用來『設定』系統,其他使用者最多隻能用來『查詢』而已。 放在/sbin底下的為開機過程中所需要的,裡面包括了開機、修復、還原系統所需要的指令。 至於某些伺服器軟體程式,一般則放置到/usr/sbin/當中。至於本機自行安裝的軟體所產生的系統執行檔案(system binary), 則放置到/usr/local/sbin/當中了。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。
/srv srv可以視為『service』的縮寫,是一些網路服務啟動之後,這些服務所需要取用的資料目錄。 常見的服務例如WWW, FTP等等。舉例來說,WWW伺服器需要的網頁資料就可以放置在/srv/www/裡面。
/tmp 這是讓一般使用者或者是正在執行的程式暫時放置檔案的地方。 這個目錄是任何人都能夠存取的,所以你需要定期的清理一下。當然,重要資料不可放置在此目錄啊! 因為FHS甚至建議在開機時,應該要將/tmp下的資料都刪除唷!

除了這些目錄的內容之外,另外要注意的是,因為根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分割槽則是在開機完成之後才會持續的進行掛載的行為。就是因為如此,因此根目錄下與開機過程有關的目錄, 就不能夠與根目錄放到不同的分割槽去!那哪些目錄不可與根目錄分開呢?有底下這些:

  • /etc:配置檔案
  • /bin:重要執行檔
  • /dev:所需要的裝置檔案
  • /lib:執行檔所需的函式庫與核心所需的模組
  • /sbin:重要的系統執行檔案

/home是可以單獨掛載的。

4.1 背住這張圖面試再也不怕啦!