linux用户权限

在我們 Linux 系統當中,預設的情況下,所有的系統上的帳號與一般身份使用者,還有那個 root 的相關資訊,都是記錄在 /etc/passwd 這個檔案內的。至於密碼則是記錄在 /etc/shadow 這個檔案下。 此外, Linux 所有的群組名稱都紀錄在 /etc/group 內!這三個檔案可以說是 Linux 系統裡面帳號、密碼、群組資訊的集中地囉!不要隨便刪除這三個檔案啊! ^_^
 ls 是『list』的意思,與在早期的 DOS 年代的指令 dir 類似功能。 而參數『-al』則表示列出所有的檔案 ( 包含隱藏檔,就是檔名前面第一個字元為 . 的那種檔案 ) 。如上所示,在你第一次以 root 身份登入 Linux 時,如果你輸入指令後,應該有上列的幾個東西, 先解釋一下上面七個欄位個別的意思:

檔案屬性的示意圖
圖二、檔案屬性的示意圖

  1. 第一欄代表這個檔案的屬性: 這個地方最需要注意了!仔細看的話,你應該可以發現這一欄其實共有十個屬性:
    檔案的十個屬性內容
    圖三、檔案的十個屬性內容

    • 第一個屬性代表這個檔案是『目錄、檔案或連結檔等等』:
      • 當為[ d ]則是目錄,例如上表的第 11 行;
      • 當為[ - ]則是檔案,例如上表的第 5 行;
      • 若是[ l ]則表示為連結檔(link file);
      • 若是[ b ]則表示為裝置檔裡面的可供儲存的周邊設備;

如何改變檔案權限

好了,我們已經知道檔案權限對於一個系統的安全重要性了,也知道檔案的權限對於使用者與群組的相關性了, 好了,那麼如何修改一個檔案的權限呢?又!有多少檔案的權限我們可以修改呢? 其實一個檔案的權限很多嘛!大致上我們先介紹幾個簡單的,例如:群組、擁有者、各種身份的權限等等。

    • chgrp :改變檔案所屬群組
    • chown :改變檔案所屬人
    • chmod :改變檔案的屬性、 SUID 、等等的特性
    若是[ c ]則表示為裝置檔裡面的序列埠設備,例如鍵盤、滑鼠。

[root@linux ~]# chmod [-R] xyz 檔案或目錄
參數:
xyz : 就是剛剛提到的數字類型的權限屬性,為 rwx 屬性數值的相加。
-R : 進行遞迴( recursive )的持續變更,亦即連同次目錄下的所有檔案、目錄
     都更新成為這個群組之意。常常用在變更某一目錄的情況。

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

 

何改變檔案權限

好了,我們已經知道檔案權限對於一個系統的安全重要性了,也知道檔案的權限對於使用者與群組的相關性了, 好了,那麼如何修改一個檔案的權限呢?又!有多少檔案的權限我們可以修改呢? 其實一個檔案的權限很多嘛!大致上我們先介紹幾個簡單的,例如:群組、擁有者、各種身份的權限等等。
    • chgrp :改變檔案所屬群組
    • chown :改變檔案所屬人
    • chmod :改變檔案的屬性、 SUID 、等等的特性

數字類型改變檔案權限

Linux 檔案的基本屬性就有九個,分別是 owner/group/others 組別的 read/write/execute 屬性, 先複習一下剛剛上面提到的資料:
  • -rwxrwxrwx
這九個屬性是三個三個一組的!其中,我們可以使用數字來代表各個屬性,各屬性的對照表如下:
  • 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
所以等一下我們設定屬性的變更時,該屬性的數字就是 770 啦!變更屬性的指令 chmod 的語法是這樣的:
[root@linux ~]# chmod [-R] xyz 檔案或目錄
參數:
xyz : 就是剛剛提到的數字類型的權限屬性,為 rwx 屬性數值的相加。
-R : 進行遞迴( recursive )的持續變更,亦即連同次目錄下的所有檔案、目錄
     都更新成為這個群組之意。常常用在變更某一目錄的情況。
例題三:將剛剛您的 .bashrc 這個檔案的屬性改回原來的 -rw-r--r--
答:
  • chmod 644 .bashrc
目錄屬性的意義:
剛剛上面我們提到的屬性幾乎都是針對一般檔案的特性在說明,那麼如果是針對目錄時, 那個 r, w, x 對目錄是什麼意義呢?簡單的說:
  • r (read contents in directory): 表示具有讀取目錄結構清單的權限,所以當您具有讀取 (r) 一個目錄的權限時, 您就可以利用 ls 這個指令將該目錄的內容列表顯示出來!

  • w (modify contents of directory): 這個可寫入的權限對目錄來說,是很了不起的! 因為他表示您將具有異動該目錄結構清單的權限,也就是底下這些權限:

      • 建立新的檔案與目錄;
      • 刪除已經存在的檔案與目錄(不論該檔案是屬於誰的!)
      • 將已存在的檔案或目錄進行更名;
      • 搬移該目錄內的檔案、目錄位置。
      所以說,如果您是一般身份使用者,例如鳥哥的帳號 dmtsai ,那麼在 /home/dmtsai 這個家目錄內, 無論是誰 (包括 root) 建立的檔案,無論該檔案屬於誰,無論該檔案的屬性是什麼, dmtsai 這個使用者都『有權力將該檔案刪除』的喔!


  • x (access directory): 這個在上頭我們已經稍微提過了,這個 x 與能否進入該目錄有關呢!
好了,那麼我們來簡單的做個測試看看,底下可能會有很多您沒有見過的指令, 不要擔心,先照著作看看,等到未來提到該指令時,您自然就會瞭解了。
[root@linux ~]# cd /tmp
[root@linux tmp]# mkdir testing
[root@linux tmp]# chmod 744 testing
[root@linux tmp]# touch testing/testing
[root@linux tmp]# chmod 600 testing/testing
# 這個 mkdir 是在建立目錄用的指令!是 make directory 的縮寫。
# 我們用 root 的身份在 /tmp 底下建立一個名為 testing 的目錄,
# 並且將該目錄的權限變為 744 ,該目錄的擁有者為 root 喔!
# 另外, touch 可以用來建立一個沒有內容的檔案,因此, touch testing/testing
# 可以建立一個空的 /tmp/testing/testing 檔案喔!
[root@linux tmp]# ls -al
drwxr--r--   2 root root 4096 Jul 14 01:05 testing
# 仔細看一下,目錄的權限是 744 ,且所屬群組與使用者均是 root 喔!
# 接下來,我們將 root 的身份切換成為一般身份使用者。
# 鳥哥的系統裡面有個 dmtsai 的一般身份使用者帳號,所以切換身份成為 dmtsai 
[root@linux tmp]# su dmtsai
# 那個 su 的指令是用來『變換身份』的一個指令,我們未來會詳細介紹。
# 注意看,底下這一行中,發現使用者變為 dmtsai 了,而且提示字元變成 $ 了!
# 也就是說,現在操作系統的人變成 dmtsai 了!那麼 dmtsai 這個人對於 
# /tmp/testing 是屬於 others 的權限,那他可以對 /tmp/testing 幹嘛?
[dmtsai@linux tmp]$ ls -l testing   <== 此時身份為 dmtsai
total 0
?---------  ? ? ? ?           ? testing
# 可以查閱裡面的資訊喔!因為dmtsai 具有 r 的權限,不過,畢竟權限不夠,
# 很多資料竟然是問號 (?) 來的~怪怪的緊~
[dmtsai@linux tmp]$ cd testing  <== 此時身份為 dmtsai
bash: cd: testing/: Permission denied
# 發現了嗎?即使我們具有 r 的權限,但是沒有 x ,所以 
# dmtsai 無法進入 /tmp/testing 喔!
[dmtsai@linux tmp]$ exit
[root@linux tmp]# chown dmtsai testing
# 使用 exit 就可以離開 su 的功能了。我們將這個 testing 目錄的擁有者設定為
# dmtsai ,此時 dmtsai 就成為 owner 了,那麼這個使用者又能幹麻呢?
[root@linux tmp]# su dmtsai
[dmtsai@linux tmp]$ cd testing  <== 此時身份為 dmtsai
[dmtsai@linux testing]$ ls -l  <== 此時身份為 dmtsai
-rw-------  1 root root 0 Jul 14 01:13 testing
# 再切換身份成為 dmtsai ,此時就能夠進入 testing 了!查閱一下內容。
# 發現了 testing 這個檔案存在喔!權限是只有 root 才能夠存取~
# 那我們測試一下能否刪除呢?
[dmtsai@linux testing]$ rm testing  <== 此時身份為 dmtsai
rm: remove write-protected regular empty file `testing'? y
# 竟然可以刪除!這樣理解了嗎?!
從屬性的角度來看,上面的檔名每個都是『目錄名稱』,較為特殊的是 root ,由於 root 這個目錄是管理員 root 的家目錄,這個家目錄可重要了! 所以一定要設定成較為嚴密的 700 ( rwx------ )這個屬性才行吶!如果以較為完整的樹狀目錄來視察的話, 可以將整個 Linux 的樹狀目錄繪製成下圖:

根據 FHS 定義的各層目錄相關性
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值