Linux權限管理系統
Linux作為一個多用戶操作系統,其權限管理系統是保障系統安全的重要組成部分。通過合理設置文件和目錄的權限,可以有效控制用戶對系統資源的訪問。
一、基本權限概念
Linux系統中的權限分為三類:
- 讀權限(r):允許讀取文件內容或列出目錄內容
- 寫權限(w):允許修改文件內容或在目錄中創建、刪除文件
- 執行權限(x):允許執行文件或進入目錄
這些權限分別應用于三種用戶類型:
- 文件所有者(u):創建文件的用戶
- 用戶組(g):與文件關聯的用戶組
- 其他用戶(o):既不是所有者也不在用戶組中的用戶
二、查看文件權限
使用ls -l命令可以查看文件的詳細信息,包括權限:
$?ls?-l-rwxr-xr--?1?user?group?4096?Jan?1?10:00?file.txt
權限部分解析:
- 第一個字符:文件類型(-表示普通文件,d表示目錄,l表示符號鏈接等)
- 接下來的9個字符分為3組,每組3個字符:
- 第1-3位:所有者權限(rwx)
- 第4-6位:用戶組權限(r-x)
- 第7-9位:其他用戶權限(r--)
三、權限的數字表示
權限也可以用數字表示:
- r (讀) = 4
- w (寫) = 2
- x (執行) = 1
通過將每組權限的數字相加,可以得到一個三位數:
- 例如:rwxr-xr-- = 754
- 所有者:rwx = 4+2+1 = 7
- 用戶組:r-x = 4+0+1 = 5
- 其他用戶:r-- = 4+0+0 = 4
四、修改文件權限
1. chmod命令
chmod命令用于修改文件或目錄的權限。有兩種使用方式:
符號模式:
chmod?[用戶類型][操作符][權限]?文件名
- 用戶類型:u(所有者)、g(用戶組)、o(其他用戶)、a(所有用戶)
- 操作符:+(添加權限)、-(移除權限)、=(設置權限)
- 權限:r(讀)、w(寫)、x(執行)
例如:
chmod u+x file.txt # 給所有者添加執行權限
chmod go-w file.txt # 移除用戶組和其他用戶的寫權限
chmod a=r file.txt # 設置所有用戶只有讀權限
數字模式:
chmod?權限數字?文件名
例如:
chmod?755?file.txt??#?設置權限為rwxr-xr-xchmod?644?file.txt??#?設置權限為rw-r--r--
2. chown命令
chown命令用于修改文件的所有者和用戶組:
chown?用戶[:組]?文件名
例如:
chown?user1?file.txt??#?修改所有者為user1chown?user1:group1?file.txt??#?修改所有者為user1,用戶組為group1
3. chgrp命令
chgrp命令用于修改文件的用戶組:
chgrp?組名?文件名
例如:
chgrp?group1?file.txt??#?修改用戶組為group1
五、特殊權限
除了基本的rwx權限外,Linux還有三種特殊權限:
-
SUID (Set User ID):當文件被執行時,進程的有效用戶ID會被設置為文件所有者的ID
- 數字表示:4000
- 符號表示:s (替代所有者的x位置)
-
SGID (Set Group ID):當文件被執行時,進程的有效用戶組ID會被設置為文件用戶組的ID
- 數字表示:2000
- 符號表示:s (替代用戶組的x位置)
-
Sticky Bit:主要用于目錄,只有文件的所有者、目錄的所有者或root用戶才能刪除或重命名目錄中的文件
- 數字表示:1000
- 符號表示:t (替代其他用戶的x位置)
設置特殊權限的例子:
chmod?u+s?file??#?設置SUIDchmod?g+s?directory??#?設置SGIDchmod?+t?directory??#?設置Sticky?Bitchmod?4755?file??#?設置SUID和rwxr-xr-x權限
六、默認權限與umask
新創建文件和目錄的默認權限由系統的umask值決定:
- 文件的最大默認權限是666 (rw-rw-rw-)
- 目錄的最大默認權限是777 (rwxrwxrwx)
- 實際默認權限 = 最大默認權限 - umask值
查看當前umask值:
umask
設置umask值:
umask?022??#?設置umask為022
常見的umask值:
- 022:文件默認權限為644 (rw-r--r--),目錄默認權限為755 (rwxr-xr-x)
- 002:文件默認權限為664 (rw-rw-r--),目錄默認權限為775 (rwxrwxr-x)
七、訪問控制列表(ACL)
當基本權限不足以滿足需求時,可以使用訪問控制列表(ACL)提供更精細的權限控制:
查看文件的ACL:
getfacl?文件名
設置文件的ACL:
setfacl?-m?u:用戶名:權限?文件名??#?為指定用戶設置權限setfacl?-m?g:組名:權限?文件名??#?為指定用戶組設置權限
例如:
setfacl?-m?u:john:rw?file.txt??#?給用戶john添加讀寫權限setfacl?-m?g:developers:rx?file.txt??#?給developers組添加讀和執行權限
總結
Linux的權限管理系統是保障系統安全的重要組成部分。通過合理設置文件和目錄的權限,可以有效控制用戶對系統資源的訪問。掌握權限管理的基本概念和操作方法,對于系統管理和安全維護至關重要。