鳥哥linux私房菜 基礎篇 筆記2

使用者與羣組

這個『使用者與羣組』的功能可是相當健全而好用的一個安全防護!


權限圖:


  • 第一個屬性代表這個檔案是『目錄、檔案或連結文件』:
    • 當爲[ ]則是目錄,例如上表的第 11 行;
    • 爲[ ]則是檔案,例如上表的第  5 行;
    • 若是[ ]則表示爲連結檔(link file);
    • 若是[ b ]則表示爲裝置文件裏面的可供儲存的接口設備;
    • 若是[ c ]則表示爲裝置文件裏面的串行端口設備,例如鍵盤、鼠標。
  • 除此之外,需要特別留意的是 x 這個標號!若文件名爲一個目錄的時候,例如上表中的 .ssh 這個目錄:   
    drwx------    2 root     root         4096 Feb 10 00:44 .ssh 
     
可以看到這是一個目錄,而且只有 root 可以讀寫與執行。但是若爲底下的樣式時,請問非 root 的其它人是否可以進入該目錄呢?   
drwxr--r--    2 root     root         4096 Feb 10 00:44 .ssh 
  咦!似乎好像是可以喔!因爲有可讀[ r ]存在嘛!『錯!』答案是非 root 這個賬號的其它使用者均不可進入 .ssh 這個目錄,爲什麼呢?因爲 x 與 目錄 的關係相當的重要,如果您在該目錄底下不能執行任何指令的話,那麼自然也就無法執行 ls, cd 等指令,所以囉,也就無法進入了,因此,請特別留意的是,如果您想要開放某個目錄讓一些人進來的話,請記得將該目錄的 x 屬性給開放呦!(僅針對目錄,對文件沒有這個要求) 
  • example:
drwxr-xr--   1 test1    testgroup    5238 Jun 19 10:25 groups/ 
請問 testgroup 這個羣組的成員與其它人( others )是否可以進入本目錄? 
答:
  • 檔案擁有者 test1 可以在本目錄中進行任何工作;
  • 而 testgroup 這個羣組的賬號,例如 test2, test3 亦可以進入本目錄進行工作,但是不能在本目錄下進行寫入的動作;
  • 至於 other 的權限中雖然有 r ,但是由於沒有 x 的權限,因此 others 的使用者,並不能進入此目錄!

  另外,你也必須要更加的小心的是,在 Windows 底下一個檔案是否具有執行的能力是藉由『附檔名』來執行的,例如:.exe, .bat, .com 等等,但是在 Linux 底下,我們的檔案是否能執行,則是藉由是否具有 x 這個屬性來決定的!所以,跟檔名是沒有絕對的關係的!這點還請特別留意呢!第二欄表示爲連結佔用的節點 (i-node) ( 若爲目錄時,通常與該目錄底下還有多少目錄有關 )

第三欄表示這個檔案(或目錄)的『擁有人

第四欄表示擁有人的羣組

第五欄爲這個檔案的大小

第六欄爲這個檔案的建檔日期或者是最近的修改日期,如果亂碼,請修改一下 /etc/sysconfig/i18n 這個檔案,裏面的『 LC_TIME 』修改爲:『 LC_TIME=en 』再儲存離開,再登入一次,就可以得到英文字形顯示的日期了

第七欄爲這個檔案的檔名,如果檔名之前多一個『 . 』,則代表這個檔案爲『隱藏檔』,例如上表第 6 行的『.bashrc_history』檔名即是隱藏檔,由於我們有下一個參數爲 ls -al,所以連隱藏檔都列出來,如果你只輸入 ls 則檔名有加『 . 』的檔案就不會被顯示出來!




如何改變檔案權限?

chgrp :改變檔案所屬羣組   
chown :改變檔案所屬人 
chmod :改變檔案的屬性、 SUID 、等等的特性chgrp   change group的縮寫。
  • 要改變成爲的羣組名稱必須要在
 /etc/group 裏面存在的名字才行,否則就會顯示錯誤!
  • example:
語法: 
chgrp 羣組名稱 檔案或目錄

範例: 
[root@test root]# chgrp users tmp 
[root@test root]# ls –l 
drwx------    2 root     root         4096 Oct 19 11:43 drakx/ 
drwx------    2 root     users        4096 Oct 19 21:24 tmp/ 
[root@test root]# chgrp testing tmp 
chgrp: invalid group name `testing'   <==發生錯誤訊息囉!


chower : change ower的縮寫

  • 要注意的是,使用者必須是已經存在系統中的,也就是在 
/etc/passwd 這個檔案中有紀錄的使用者名稱才行改變。
  • 還可以順便直接修改羣組的名稱呢!此外,如
果要連目錄下的所有次目錄或檔案同時更改檔案擁有者的話,直接加上 –R 的參數即可語法: 
chown [ -R ] 賬號名稱 檔案或目錄 
chown [ -R ] 賬號名稱:羣組名稱 檔案或目錄

範例: 
[root@test root]# chown test tmp 
[root@test root]# ls -l 
total 28 
drwx------    2 root     root         4096 Oct 19 11:43 drakx/ 
drwx------    2 test     users        4096 Oct 19 21:24 tmp/ 
[root@test root]# chown –R root:root tmp  
[root@test root]# ls –l 
drwx------    2 root     root         4096 Oct 19 11:43 drakx/ 
drwx------    2 root     root         4096 Oct 19 21:24 tmp/


拷貝目錄時,副本的目錄的權限和所有者是不會改變的,這個時候就需要chower命令了

example:

[root@test root]# cp .bashrc .bashrc_test 
[root@test root]# ls –al .bashrc* 
-rw-r--r--    1 root     root          226 Feb 16  2002 .bashrc 
-rw-r--r--    1 root     root          226 Oct 21 14:24 .bashrc_test


chmod 改變屬性。 通常是九個 其實linux中不止九個,暫時先學這九個,其餘的以後再學

-rwxrwxrwx 就是這九個屬性 也就是讀寫執行的三個權限
  • 這九個屬性是三個三個一組的!其中,我們可以使用數字來代表各個屬性,各屬性的對照表如下: 
     
r:4 
w:2 
x:1 
  由於同一組的數字是相加的!例如當屬性爲 [ -rwxrwx--- ] 則是: 
  owner  = rwx  = 4+2+1 = 7 
group  = rwx  = 4+2+1 = 7 
others = ---  = 0+0+0 = 0   
所以,這樣的屬性造成的數值就是 770 囉!語法: 
chmod [-R] xyz 檔案或目錄 
xyz 爲同三組 rwx 屬性數值的相加

[root@test root]# ls –al .bashrc 
-rw-r--r--    1 root     root          226 Feb 16  2002 .bashrc 
[root@test root]# chmod 777 .bashrc 
[root@test root]# ls –al .bashrc 
-rwxrwxrwx    1 root     root          226 Feb 16  2002 .bashrc


  • 常常我們以 vi 編輯一個 shell 的文字文件後,他的屬性通常是 -rw-rw-rw- 也就是 666 的屬性
符號類型改變檔案型態 

除了用數字改變屬性 還可以用符號改變

chmod
u 
g 
o 
a
+(加入) 
-(除去) 
=(設定)
r 
w 
x
檔案或目錄

example

[root@test root]# chmod u=rwx,og=rx .bashrc 
[root@test root]# ls –al .bashrc 
-rwxr-xr-x    1 root     root          226 Feb 16  2002 .bashrc

  • 請注意, r=rwx,og=rx 這一段文字之間並沒有空格符隔開呦!

  • 假如是『 -rwxr-xr-- 』?可以使用『 
chmod u=rwx,g=rx,o=r filename 』來設定

  • 如果我不知道原先的檔案屬性,而我只想要增加 .bashrc 這個檔案的每個人均可寫入的權限,那麼我就可以使用:
[root@test root]# ls –al .bashrc 
-rwxr-xr-x    1 root     root          226 Feb 16  2002 .bashrc 
[root@test root]# chmod a+w .bashrc 
[root@test root]# ls –al .bashrc 
-rwxrwxrwx    1 root     root          226 Feb 16  2002 .bashrc*


  • 如果是要將屬性去掉而不更動其它的屬性呢?!例如要拿掉所有人的 x 的屬性,則 
     
[root@test root]# chmod a-x .bashrc 
[root@test root]# ls –al .bashrc 
-rw-rw-rw-    1 root     root          226 Feb 16  2002 .bashrc




Linux 支持的檔案格式與檔案種類

  • 檔案種類:
    !Linux 的檔案種類主要有底下這幾種: 
     
    • 正規檔案( regular file ):就是一般類型的檔案,在由 ls –al 所顯示出來的屬性方面,第一個屬性爲 [ - ]。另外,依照檔案的內容,又大略可以分爲兩種檔案種類:
      • 純文字文件(ascii) :這是 Unix 系統中最多的一種囉,幾乎只要我們可以用來做爲設定的檔案都屬於這一種;
      • 二進制文件(binary) :通常執行檔除了 scripts (文字型批次文件)之外,就是這一種檔案格式;
       
    • 目錄 (directory):第一個屬性爲 [ d ];
     
    • 連結檔 (link):就是類似 Windows 底下的快捷方式啦!第一個屬性爲 [ l ];
     
    • 設備檔 (device):與系統周邊相關的一些檔案,通常都集中在 /dev 這個目錄之下!通常又分爲兩種:
      • 區塊 (block) 設備檔 :就是一些儲存數據,以提供系統存取的接口設備,簡單的說就是硬盤啦!例如你的一號硬盤的代碼是 /dev/hda1 等等的檔案啦!第一個屬性爲 [ b ];
      • 字符 (character) 設備檔 :亦即是一些串行端口的接口設備,例如鍵盤、鼠標等等!第一個屬性爲 [ c ]。
設備文件是我們系統中很重要的檔案,最好不要隨意修改


另一個比較有趣的檔案就是連結檔。如果你常常將應用程序捉到桌面來的話,就是 Windows 底下有所謂的『快捷方式』。同樣的,你可以將 linux 下的連結檔簡單的視爲一個檔案或目錄的快捷方式。但是這兩個東西是不一樣的!在 Windows 系統的快捷方式中,你將無法修改主程序,但是在 Linux 中,連結檔可以直接連結到主程序,因此你只要改了這個連結文件,則主程序亦被改變了!


Linux 檔案附檔名:就是windows下後綴名

  • 批次檔 ( scripts ):通常以 *.sh 來代表,(因爲批次檔爲使用 shell 寫成的,所以附檔名就編成 .sh 囉);
  • 打包或壓縮檔:通常附檔名爲 *.Z, *.tar, *.tar.gz, *.zip, *.tgz 等等,這是因爲壓縮軟件分別爲 gunzip, tar 等等的,由於不同的壓縮軟件,而取其相關的附檔名囉!
  • 網頁相關檔案:通常使用 *.html 與 *.php 等等的檔案,分別代表 HTML 語法與 PHP 語法的網頁檔案囉!這種檔案可以使用網頁瀏覽器來開啓!
另外,還有程序語言如 perl 的檔案,其附檔名也可能取成 .pl 這種檔名! 基本上, Linux 上面的檔名真的只是讓你瞭解該檔案可能的用途而已,真正的執行與否仍然需要屬性的規範才行! 你在網絡上下載一個可執行檔,但是偏偏在你的 Linux 系統中就是無法執行!呵呵!那麼就是可能檔案的屬性被改變了!不要懷疑,從網絡上傳送到你的 Linux 系統中,檔案的屬性確實是會被改變的喔!  再提個另外!在 Linux 底下,每一個檔案或目錄的文件名最長可以到達 256 的字符,是相當長的檔名喔!


Linux 目錄配置:




每個目錄的大致內容如下表所示: 
 
/bin 這是放例如: ls, mv, rm, mkdir, rmdir, gzip, tar, telnet, 及 ftp 等等常用的執行檔的地方(這些執行檔的執行方法會在後面提到),有時候這個目錄的內容與 /usr/bin 是一樣的(有時候甚至會使用連結檔哩),是給一般使用者使用的執行程序放置的所在!
/boot 沒錯,這裏就是放置你 Linux 核心與開機相關檔案的地方,這個目錄底下的 vmlinuz-xxx 就是 Linux 的 Kernel 啦!粉重要的東西!而如果你的開機管理程序選擇 grub 的話,那麼這個目錄內還有 /boot/grub 這個次目錄呦!
/dev 擺放一些與裝置有關的檔案。基本上 Unix 或 Linux 系統均把裝置當成是一個檔案來看待,例如 /dev/fd0 代表軟盤,亦即 Windows 系統下的 A 槽,而 /dev/cdrom 則代表光盤,等等!而如上所述,在這個目錄底下的檔案型態通常分爲兩種喔,分別是管理磁盤 Input/Output 的 Block 檔案與周邊的 Character 檔案。
/etc 系統在開機過程中需要讀取的檔案均在這個目錄中,例如 Lilo 的參數、人員的賬號與密碼、系統的主要設定、http 架站的參數內容、你所要開啓的服務項目等等都在這個目錄中,所以在這個目錄下工作的時候,請記得一定要備份,否則檔案被改掉了可是很麻煩的!
/etc/rc.d 這個路徑主要在記錄一些開關機過程中的 scripts 檔案, scripts 有點像是 DOS 下的批次檔(.bat檔名)
/etc/rc.d/init.d 所以服務預設的啓動 scripts 都是放在這裏的,例如要啓動與關閉 iptables 的話,可以:  
/etc/rc.d/init.d/iptables start 
/etc/rc.d/init.d/iptables stop
/etc/xinetd.d 這個路徑在較新的 Linux distribution 當中纔有,由於早期的版本用來開啓服務的檔案是 inetd.conf ,但是在較新的版本中,開啓服務的項目已經變成使用 xinetd.conf 這個檔案,因此,你若需要啓動一些額外的服務的話,在 Mandrake 9.0 或者是 Red Hat 7.0 以後就要到 /etc/xinetd.d 這個目錄下了。
/etc/X11 這是與 X windows 有關的設定文件所在的目錄,尤其裏面的 XF86Config-4 更是重要呢!
/home 基本上,這是系統預設的使用者的家目錄( home directory ),在你新增一般使用者賬號的時候,預設的使用者家目錄都在這裏設定好囉!
/lib 在 Linux 執行或編譯一些程序的時候,均會使用到一些函式庫(library),就在這個目錄下
/lost+fount 系統不正常產生錯誤時,會將一些遺失的片段放置於此目錄下,通常這個目錄會自動出現在裝置目錄下。例如你加裝一棵硬盤於 /disk 中,那在這個目錄下就會自動產生一個這樣的目錄 /disk/lost+found
/mnt 這是軟盤與光盤預設掛載點的地方;通常軟盤掛在 /mnt/floppy 下,而光盤掛在 /mnt/cdrom 下,不過也不一定啦!只要你高興,隨便找一個地方來掛載也可以呀!
/proc 系統核心與執行程序的一些信息。例如你的網絡狀態的問題啦!這個目錄將在啓動 Linux 的時候自動的被掛上,而且該目錄底下不會佔去硬盤空間!因爲裏面都是『內存』內的數據啦
/root 系統管理員的家目錄
/sbin 放置一些系統管理常用的程序,例如: fdisk, mke2fs, fsck, mkswap, mount 等等。與 /bin 不太一樣的地方,這個目錄下的程序通常是給 root 等系統管理員使用的程序喔!
/tmp 這是讓一般使用者暫時存放檔案的地方,例如你在安裝 Linux 下的軟件時,可能軟件預設的工作目錄就是 /tmp ,所以你要定期的清理一下,當然,重要數據最好不要放在這裏!
/usr 這是最重要的一個目錄了,裏面含有相當多的系統信息,內有許多目錄,用來存放程序與指令等等。這個目錄有點像是 Windows 底下的『Program Files』那個目錄說~
/usr/bin 放置可執行程序,如前所說,這個目錄的檔案與 /bin 幾乎是相同的。
/usr/include 一些套件的header檔。基本上,當我們在以 tarball 方式( *.tar.gz 的方式安裝軟件)安裝某些數據時,會使用到的一些函式庫都在這個目錄底下喔!
/usr/lib 內含許多程序與子程序所需的函式庫。
/usr/local 在你安裝完了 Linux 之後,基本上所有的配備你都有了,但是軟件總是可以升級的,例如你要升級你的 proxy 服務,則通常軟件預設的安裝地方就是在 /usr/local 中( local 是『當地』的意思),同時,安裝完畢之後所得到的執行文件,爲了與系統原先的執行文件有分別,因此升級後的執行檔通常擺在 /usr/local/bin 這個地方。 

給個建議啦,通常 VBird 都會將後來才安裝上去的軟件放置在這裏,因爲便於管理呦!

/usr/sbin 放置管理者使用程序,與 /sbin 類似的功能
/usr/share/doc 放置一些系統說明文件的地方,例如你安裝了 lilo 了,那麼在該目錄底下找一找,就可以查到 lilo 的說明文件了!很是便利!
/usr/share/man 放置一些程序的說明文件的地方,那是什麼?呵呵!就是你使用 man 的時候,會去查詢的路徑呀!例如你使用 man ls 這個指令時,就會查出 /usr/share/man/man1/ls.1.bz2 這個說明檔的內容囉!
/usr/src 這是放置核心原始碼的預設目錄,未來我們要編譯核心的時候,就必須到這個目錄底下呦!
/usr/X11R6 X Window System存放相關檔案的目錄
/var 這個目錄可就重要了!所有服務的登錄文件或錯誤訊息檔案(log files)都在 /var/log 裏面,此外,一些數據庫如 MySQL 的數據庫則在 /var/lib 裏頭,此外,使用者未讀郵件郵件的預設放置地點爲 /var/spool/mail !呵呵!你說重不重要呀!?


發佈了22 篇原創文章 · 獲贊 1 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章