Linux中的賬號許可權管理
一、使用者賬號和組賬號概述
Linux基於使用者身份對資源訪問進行控制
1.1、使用者賬號
超級使用者:root使用者是 Linux 作業系統中預設的超級使用者賬號,對本主機擁有最高的許可權。系統中超級使用者是唯一的。
普通使用者:由root使用者或其他管理員使用者建立,擁有的許可權會受到限制,一般只在使用者自己的宿主目錄中擁有完整許可權。
程式使用者∶在安裝Linux作業系統及部分應用程式時,會新增一些特定的低許可權使用者賬號,這些使用者一般不允許登入到系統,僅用於維持系統或某個程式的正常執行,如bin、daemon、ftp、mail等。
1.2、組賬號
基本組 (私有組)∶基本組賬號只有一個,一般為建立使用者時指定的組。在/etc/passwd檔案中第4欄位記錄的即為該使用者的基本組 GID 號。
附加組 (公共組)∶ 使用者除了基本組以外,額外新增指定的組。
可以理解為基本組在建立系統時使用者自帶的組,附加組為使用者自己加入的組。
UID∶ 使用者標識號
GID∶ 組標識號
root 使用者賬號的 UID和GID 號為固定值 0
程式使用者賬號的 UID和GID 號預設為 Centos5,6∶ 1~499,Centos7∶1~999
普通使用者的 UID和GID 號預設為 Centos5,6∶ 500~60000,Centos7∶ 1000~60000
二、使用者賬號設定操作
2.1、使用者賬號檔案/etc/passwd
儲存使用者名稱稱、宿主目錄、登入Shell等基本資訊
檔案位置在/etc/passwd中,每一行對應一個使用者的賬號記錄,多項操作命令都可進行檢視,我們以vim /etc/passwd為例
欄位分析:
欄位一(root):使用者賬號的名稱
欄位二(x):使用者密碼佔位符“x”
欄位三(0):使用者賬號的UID號
欄位四(0):所屬基本組賬號的GID號
欄位五(root):使用者全名
欄位六(/root):宿主目錄(家目錄)
欄位七(/bin/bash):登入shell資訊(/bin/bash為可登入系統,/sbin/nologin和/bin/false為禁止使用者登入系統)
2.2、使用者賬號檔案/etc/shadow
儲存使用者的密碼、賬號有效期等資訊
檔案位置在/etc/shadow,每一行對應一個使用者的密碼記錄,多項操作命令都可進行檢視,我們以vim /etc/shadow為例
欄位分析:
欄位一(root):使用者帳號的名稱
欄位二(密碼):使用MD5加密的密碼字串資訊,當為"*"或"!!"時表示此使用者不能登入到系統。若該欄位內容為空,則該使用者無須密碼即可登入系統
欄位三:上次修改密碼的時間,表示從1970年01月01日算起到最近一次修改密碼時間隔的天數
欄位四(0):密碼的最短有效天數,自本次修改密碼後,必須至少經過該天數才能再次修改密碼。預設值為0,表示不進行限制
欄位五(99999):密碼的最長有效天數,自本次修改密碼後,經過該天數以後必須再次修改密碼。預設值為99999,表示不進行限制
欄位六(7):提前多少天警告使用者密碼將過期,預設值為7
欄位七:在密碼過期之後多少天禁用此使用者
欄位八:帳號失效時間,此欄位指定了使用者作廢的天數(從1970年01月01日起計算),預設值為空,表示賬號永久可用
欄位九:保留欄位(未使用)
2.3、新增使用者賬號
新增使用者賬號useradd或者adduser,在/etc/passwd檔案和/etc/shadow檔案的末尾增加該使用者賬號的記錄。
若未明確指定使用者的宿主目錄,則在/home目錄下自動建立與該使用者賬號同名的宿主目錄,並在該目錄中建立使用者的各種初始配置檔案。若沒有明確指定使用者所屬的組,則自動建立與該使用者賬號同名的基本組賬號,組賬號的記錄資訊將儲存到/etc/qroup 和/etc/qshadow檔案中。
例如我想建立一個名稱為abc,UID號為3000,基本組GID號為1000,失效時間在今年年底,且可以登入系統的賬戶
操作命令應該為:useradd -d /home/abc -u 3000 -g 1000 -e 2021-12-31 -s /bin/bash abc
注:此時還不能登入作業系統,還需配置密碼才可
2.4、設定/更改使用者口令passwd
root使用者可以指定使用者名稱作為引數,對指定賬號的密碼進行管理;不指定使用者名稱時,修改當前賬號的密碼。普通使用者卻只能執行單獨的"passwd"命令修改自己的密碼。
例如上面建立的abc使用者,如果進行passwd—l操作就會鎖定賬戶,登入介面就不會顯現
2.5、修改使用者賬號的屬性usermod
-u -d -e -g -G -s選項意義和useradd選項意義相同
-U與passwd-u意義相同
-L與passwd-l意義相同
例如將abc使用者登入名改為123,操作命令應該是:usermod -l 123 abc
2.6、刪除使用者賬號userdel
userdel +使用者名稱只刪除使用者名稱
userdel -r +使用者名稱表示連使用者的宿主目錄一起刪除
2.7、使用者賬號的初始配置檔案
useradd命令新增一個新的使用者賬號後會在該使用者的宿主目錄中建立一些初始配置檔案,一般為隱藏檔案
這些檔案來自於賬號模板目錄/etc/skel/,基本上都是隱藏檔案
主要的使用者初始配置檔案有:~/.bash-profile ~/.bashrc ~/.bash-plogout
使用者宿主目錄下的初始配置檔案 只對當前使用者有效
~/.bash profile:此檔案中的命令將在該使用者每次登入時被執行,它會設定一些環境變數,並且會呼叫該使用者的~/.bashrc檔案
~/.bashrc:此檔案中的命令會在每次開啟新的bash shell時(也包括登入系統)被執行,並且會呼叫/etc/bashrc(全域性系統配置)檔案
~/.bash logout:此檔案中的命令將在使用者每次退出登入或退出bash shell時執行
全域性配置檔案對所有使用者有效
/etc/profile:這個檔案是為系統全域性變數配置檔案,可通過重啟系統或者執行source /etc/profile命令使profile檔案被讀取
/etc/profile.d/:這個檔案實際上.是/etc/profile的子目錄,存放的是一些應用程式所需的啟動指令碼
/etc/bashrc:每一個執行bash shell的使用者都會執行此檔案,可通過執行bash 命令開啟一個新的bash shell時,使 bashrc檔案被讀取
當有些配置想在每個bash環境中都執行,可以寫進/etc/bashrc中,或者寫進~/.bash profile中,不過需要加上export來使它每次啟動都生效
三、組賬號檔案
與使用者賬號檔案相類似
/etc/group:儲存組賬號基本資訊
/etc/gshdow:儲存組賬號的密碼資訊
欄位分析:
欄位一(root):組賬號的名稱
欄位二(x):佔位符“x”
欄位三(0):組賬號的GID號
欄位四:組賬號包含的使用者成員(一般不包括基本組對應的使用者賬號,包含的是附加組成員),多個成員之間用逗號分割
3.1、新增組賬號groupadd
goupadd [-g GID] 組賬號名
例如新增一個GID號為1234,名字為111的組賬號:groupadd -g 1234 111
3.2、新增刪除組成員
gpasswd命令:設定組賬號密碼(極少用)、新增/刪除組成員
例如將abc使用者新增到111組內:gpasswd -a abc 111
3.3、刪除組賬號groupdel
操作命令:groupdel 組賬號名
四、檔案/目錄的許可權和歸屬
4.1、查詢賬號資訊
查詢使用者所屬組:groups 【使用者名稱】
查詢使用者身份標識:id 【使用者名稱】
查詢使用者賬號的登入資訊:finger 【使用者名稱】(注:需要先安裝finger軟體包)
查詢已登入到主機使用者資訊:w、who、users命令
此命令還可以查詢到cpu的負載情況等
4.2、檔案/目錄的許可權和歸屬
訪問許可權
讀取r:允許檢視檔案內容、顯示目錄列表
寫入w:允許修改檔案內容,允許在目錄中新建、移動、刪除檔案或子目錄
可執行x:允許執行程式、切換目錄
歸屬(所有權)
屬主:擁有改檔案或目錄的使用者賬號
屬組:擁有改檔案或目錄的組賬號
注:檔案預設許可權是沒有x的,即檔案的最大預設許可權為666(-rw-rw-rw)
目錄預設有x許可權,故目錄的最大預設許可權為777(drwxrwxrwx)
這裡的數值都是8進位制數值
4.3、設定檔案和目錄的預設許可權umask
umask作用
控制新建的檔案或目錄的許可權
預設許可權去除umask的許可權為新建的檔案或目錄的許可權(預設許可權666或777-umask值=新建檔案或目錄的許可權)
可以通過umask操作命令來檢視或修改umask值,預設值為022
小實驗:設定umask值為111,建立名稱000的txt檔案,檢視其許可權
根據預設許可權666相減可得新建的檔案許可權為555,因檔案預設沒有x許可權,所以遇到單數111,333,555需向前進一位變成222,444,666
4.4、設定檔案和目錄的許可權chmod
chmod命令:chmod 【ugoa】 【+-=】 【rwx】 檔案或目錄
u代表屬主、g代表屬組、o代表其他使用者、a代表所有使用者
+代表增加、-代表去除、=代表設定許可權
r代表讀、w代表寫、x代表執行許可權
或者是chmod nnn 檔案或目錄
nnn代表三個許可權的八進位制
常用選項-R:遞迴修改指定目錄下所有子項的許可權
4.5、設定檔案和目錄的歸屬chown
chown命令
修改屬主:chown 屬主 檔案或目錄
修改屬組:chown :屬組 檔案或目錄
修改屬主和屬組:chown 屬主:屬組 檔案或目錄
常用選項-R:遞迴修改指定目錄下所有檔案、子目錄的歸屬
例如將123.txt檔案的屬主和屬組改為abc和111
chown abc:111 123.txt