Linux 使用者及許可權深入理解
Linux 使用者及許可權深入理解
使用者組的管理
當我們使用Linux時,我們需要以一個使用者的身份登入,一個程序也需要以一個使用者身份執行,使用者限制使用者或程序可以使用或不可以使用哪些資源
組用來方便組織管理使用者
使用者ID為32位,從0開始,但是為了和老式系統相容,使用者ID限制在60000以下
使用者分為以下三種
- root使用者(ID為0的使用者為root)
- 系統使用者(1-499)
- 普通使用者(500以上)
系統中的檔案都有一個所屬使用者及所屬組
使用id命令可以顯示當前使用者的資訊
使用passwd
命令可以修改當前使用者密碼
- 每個使用者擁有一個UserID,作業系統實際使用的是使用者ID,而非使用者名稱
- 每個使用者屬於一個主組,屬於一個或多個附屬組(一個使用者最多有31個附屬組)
- 每個組擁有一個GroupID
- 每個程序以一個使用者身份執行,並受該使用者可訪問的資源限制
- 每個可登入使用者擁有一個指定的shell
相關檔案
/etc/passwd 儲存使用者的資訊
/etc/shadow 儲存使用者密碼(以加密的形式儲存)
/etc/group 儲存資訊
/etc/login.defs
/etc/default/useradd
徹底刪除一個使用者的資訊可以使用
userdel -r 使用者名稱
[[email protected] ~]# useradd chen //加使用者chen
[[email protected] ~]# passwd chen //改密碼
更改使用者 chen 的密碼 。
新的 密碼:
無效的密碼: 密碼少於 8 個字元
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[[email protected] ~]# tail -1 /etc/passwd //檢視是否存在普通使用者chen
chen:x:1000:1000::/home/chen:/bin/bash
[[email protected] ~]# tail -1 /etc/shadow //檢視密碼檔案
chen:$6$67uXhtso$1s9N7IxoZduO1ssKeBn/cJSNRcMYjJ53nR2cpMfECI. p7oyZaiboDwP8Wk0gq05OX2735IHYttXqAjVCwzfwl/:18605:0:99999:7:::
[[email protected] ~]#
新建一個使用者(useradd chen
)
這個命令執行以下操作
- 在/etc/passwd中新增使用者資訊
- 如果用passwd命令建立密碼,則將密碼加密儲存在/etc/shadow中
- 為使用者建立一個新的家目錄/home/chen
- 將/etc/skel中的檔案複製到使用者的家目錄中
- 建立一個與使用者名稱相同的組,新建使用者預設屬於這個同名組
命令useradd
支援以下引數:
-d 指定家目錄
-s 登入shell
-u 指定UID
-g 主組
-G 附屬組(最多31個,用“,”分割)
[[email protected] ~]# useradd chen //加使用者chen
[[email protected] skel]# su chen
[[email protected] skel]$ su root
密碼:
[[email protected] skel]# cd /home
[[email protected] home]# ls
1.txt 2.txt abc chen
[[email protected] home]# cd chen
[[email protected] chen]# ls -a
. .. .bash_logout .bash_profile .bashrc
[[email protected] chen]# rm -rf .bash*
[[email protected] chen]# ll
總用量 0
[[email protected] chen]# su chen
bash-4.2$
bash-4.2$
bash-4.2$ ^C
bash-4.2$ su root
密碼:
[[email protected] chen]# cp /etc/skel/.bash* /home/chen/ -a //etc/skel是模板檔案的目錄
[[email protected] chen]# su chen
修改使用者資訊
命令usermod
用來修改使用者資訊
usermod 引數 username
支援引數
如下:
-l 新使用者名稱
-u 新userID
-d 使用者家目錄位置
-g 使用者所屬主組
-G 使用者所屬附屬組
-L 鎖定使用者使其不能登入
-U 解除鎖定
建立使用者的時候指定使用者屬於那個使用者組:
usermod -g group_name user_name
把chen這個使用者的組改成abc組
修改使用者名稱稱:
usermod -l new_user_name old_user_name
將使用者加入組:
usermod -G group_name user_name
更改使用者的使用者組:
usermod -g group_name user_name
組的管理
幾乎所有的OS都有組的概念,通過組我們可以更加方便的歸類,管理使用者,一般來講,我們會使用部門,職能或地域的分類方式來建立使用組
- 每個組有一個組ID
- 組資訊儲存在/etc/group中
- 每個使用者擁有一個主組,同時還可以擁有31個附屬組
許可權的管理
許可權是OS用來限制對資源訪問的機制,許可權一般分為讀寫執行
。系統中每個檔案都擁有特定的許可權,所屬使用者及所屬組,通過這樣的機制來限制哪些使用者或使用者組可以對待定檔案進行怎樣的操作
每個程序都是以某個使用者身份執行,所以程序的許可權與該使用者的許可權的一樣,所以使用者的許可權越大,該程序擁有的許可權就大
檔案許可權
linux中,每個檔案擁有三種許可權詳情如下:
r
(讀取):可讀取檔案內容,可列出目錄內容
w
(寫入):可修改檔案內容,可在目錄中建立刪除內容
x
(執行):可作為命令執行,可訪問目錄內容
目錄必須擁有x許可權
,否則無法檢視其他內容
UGO
Linux許可權基於UGO模型進行控制:
- U代表User,G代表Group,O代表Other
- 每一個檔案的許可權都基於UGO進行設定
- 許可權三個一組(rwx),對應UGO分別設定
- 每個檔案擁有一個所屬使用者和所屬組,對應UGO,不屬於該檔案所屬使用者或所屬組使用O許可權
命令ls -l
可以檢視當前目錄下檔案的詳細資訊
命令chown
用來改變檔案的所屬使用者
修改許可權
命令chmod
用以修改檔案的許可權
chmod 模式 檔案
模式格式:
- u,g,o分別代表使用者,組和其他
- a可以代指ugo
- +,-,=代表加入,刪除和等於對應許可權
命令chmod也支援以數字方式修改許可權,三個許可權由數字表示為:
- -r=4
- -w=2
- -x=1
使用數字表示許可權時,每組許可權分別對應數字之和
rw=4+2=6
rwx=4+2+1=7
rx=4+1=5
預設許可權
每一個終端都擁有 一個umask
屬性,來確定新建檔案、目錄的預設許可權
umask使用數字許可權方式表示,如: 022
目錄的預設許可權是 : 77-umask
檔案的預設許可權是: 666-umask
一般,普通使用者的預設umask是022 , root使用者的預設umask是022
也就是說對於普通使用者來說
新建檔案的許可權是: 666-022 = 644
新建目錄的許可權是: 777-022 = 755
命令 umask用以檢視設定umask值
umask 022