1. 程式人生 > 其它 >linux學習筆記之使用者身份與許可權

linux學習筆記之使用者身份與許可權

使用者身份與檔案許可權

管理員UID為0:系統的管理員使用者。

系統使用者UID為1~999:Linux系統為了避免因某個服務程式出現漏洞而被黑客提權至整臺伺服器,預設服務程式會由獨立的系統使用者負責執行,進而有效控制被破壞範圍。

普通使用者UID從1000開始:是由管理員建立的用於日常工作的使用者。

通過使用使用者組號碼(GID,Group IDentification),可以把多個使用者加入到同一個組中,從而方便為組中的使用者統一規劃許可權或指定任務(在/etc/group裡檢視)

另外,在Linux系統中建立每個使用者時,將自動建立一個與其同名的基本使用者組,而且這個基本使用者組只有該使用者一個人。如果該使用者以後被歸納到其他使用者組,則這個其他使用者組稱之為擴充套件使用者組

。一個使用者只有一個基本使用者組,但是可以有多個擴充套件使用者組,從而滿足日常的工作需要。

Tips

基本使用者組就像是原生家庭,是在建立賬號(出生)時就自動生成的;而擴充套件使用者組則像工作單位,為了完成工作,需要加入到各個不同的群體中,這是需要手動新增的。

命令

id命令用於顯示使用者的詳細資訊,語法格式為“id使用者名稱” useradd命令用於建立新的使用者賬戶,語法格式為“useradd [引數]使用者名稱”。

useradd命令中的引數以及作用

引數 作用
-d 指定使用者的家目錄(預設為/home/username)
-e 賬戶的到期時間,格式為YYYY-MM-DD.
-u 指定該使用者的預設UID
-g 指定一個初始的使用者基本組(必須已存在)
-G 指定一個或多個擴充套件使用者組
-N 不建立與使用者同名的基本使用者組
-s 指定該使用者的預設Shell直譯器
groupadd命令用於建立新的使用者組,語法格式為“groupadd [引數]群組名”。 usermod命令用於修改使用者的屬性,語法格式為“usermod [引數]使用者名稱”

usermod命令中的引數以及作用

引數 作用
-c 填寫使用者賬戶的備註資訊
-d -m 引數-m與引數-d連用,可重新指定使用者的家目錄並自動把舊的資料轉移過去
-e 賬戶的到期時間,格式為YYYY-MM-DD
-g 變更所屬使用者組
-G 變更擴充套件使用者組
-L 鎖定使用者禁止其登入系統
-U 解鎖使用者,允許其登入系統
-s 變更預設終端
-u 修改使用者的UID
passwd命令用於修改使用者的密碼、過期時間等資訊
引數 作用
-l 鎖定使用者,禁止其登入
-u 解除鎖定,允許使用者登入
--stdin 允許通過標準輸入修改使用者密碼,如echo "NewPassWord" | passwd --stdin Username
serdel命令用於刪除已有的使用者賬戶 在執行刪除操作時,該使用者的家目錄預設會保留下來,此時可以使用-r引數將其刪除
引數 作用
-f 強制刪除使用者
-r 同時刪除使用者及使用者家目錄

檔案許可權(一般、特殊、隱藏)與歸屬
可讀(r)、可寫(w)、可執行(x)等許可權。對於一般檔案來說,“可讀”表示能夠讀取檔案的實際內容;“可寫”表示能夠編輯、新增、修改、刪除檔案的實際內容;“可執行”則表示能夠執行一個指令碼程式。但是,對於目錄檔案來說,“可讀”表示能夠讀取目錄內的檔案列表;“可寫”表示能夠在目錄內新增、刪除、重新命名檔案;而“可執行”則表示能夠進入該目錄

檔案許可權的字元與數字表示

若某個檔案的許可權為7,則代表可讀、可寫、可執行(4+2+1) 減號是佔位符,代表這裡沒有許可權,在數字表示法中用0表示 常見的檔案型別包括普通檔案(-)、目錄檔案(d)、連結檔案(l)、管道檔案(p)、塊裝置檔案(b)以及字元裝置檔案(c)
檔案的特殊許可權
SUID是一種對二進位制程式進行設定的特殊許可權,能夠讓二進位制程式的執行者臨時擁有所有者的許可權(僅對擁有執行許可權的二進位制程式有效) [root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 33600 Apr 7 2020/usr/bin/passwd SGID特殊許可權有兩種應用場景:當對二進位制程式進行設定時,能夠讓執行者臨時獲取檔案所屬組的許可權;當對目錄進行設定時,則是讓目錄內新建立的檔案自動繼承該目錄原有使用者組的名稱 SBIT特殊許可權位可確保使用者只能刪除自己的檔案,而不能刪除其他使用者的檔案。換句話說,當對某個目錄設定了SBIT粘滯位許可權後(只能改目錄許可權),那麼該目錄中的檔案就只能被其所有者執行刪除操作了,比如/tmp [root@localhost ~]# ll -d /tmp
drwxrwxrwt. 10 root root 4096 Oct 22 19:45 /tmp

原有x執行許可權,特殊許可權是小寫,沒有則是大寫,如s/S, t/T

SUID、SGID、SBIT特殊許可權的設定引數

引數 作用
u+s 設定SUID許可權
u-s 取消SUID許可權
g+s 設定SGID許可權
g-s 取消SGID許可權
o+t 設定SBIT許可權
o-t 取消SBIT許可權
其實,SUID、SGID與SBIT也有對應的數字表示法,分別為4、2、1。也就是說777還不是最大許可權,最大許可權應該是7777,其中第1個數字代表的是特殊許可權位
[root@localhost ~]# chmod7534anaconda-ks.cfg
[root@localhost ~]# ll anaconda-ks.cfg
-r-s-wsr-T. 1 root root 1037 Aug 20 15:45 anaconda-ks.cfg

更改許可權和歸屬命令 chmod 許可權 檔案 (許可權用數字,或u/g/o/a+/-r/w/x) chown 所有者:所屬組 檔案 或chown 所有者.所屬組 檔案
針對目錄要加-R引數,不加子檔案不會變
檔案的隱藏屬性

chattr命令用於設定檔案的隱藏許可權,語法格式為“chattr [引數]檔名稱”。

如果想要把某個隱藏功能新增到檔案上,則需要在命令後面追加“+引數”,如果想要把某個隱藏功能移出檔案,則需要追加“-引數”

引數 作用
i 無法對檔案進行修改;若對目錄設定了該引數,則僅能修改其中的子檔案內容而不能新建或刪除檔案
a 僅允許補充(追加)內容,無法覆蓋/刪除內容(Append Only)
s 徹底從硬碟中刪除,不可恢復(用0填充原檔案所在硬碟區域),xfs檔案系統不支援
[root@localhost ~]# chattr+ianaconda-ks.cfg
[root@localhost ~]# lsattr anaconda-ks.cfg
----i--------------- anaconda-ks.cfg
lsattr命令用於檢視檔案的隱藏許可權
檔案訪問控制列表

setfacl命令用於管理檔案的ACL許可權規則,英文全稱為“set files ACL”,語法格式為“setfacl [引數]檔名稱”。

setfacl命令中的引數以及作用

引數 作用
-m 修改許可權
-M 從檔案中讀取許可權
-x 刪除某個許可權
-b 刪除全部許可權
-R 遞迴子目錄

ACL許可權提供的是在所有者、所屬組、其他人的讀/寫/執行許可權之外的特殊許可權控制。使用setfacl命令可以針對單一使用者或使用者組、單一檔案或目錄來進行讀/寫/執行許可權的控制。其中,針對目錄檔案需要使用-R遞迴引數;針對普通檔案則使用-m引數;如果想要刪除某個檔案的ACL,則可以使用-b引數,要刪除某一條指定的許可權,就用-x引數

[root@linuxprobe ~]# setfacl -Rm u:linuxprobe:rwx /root
u使用者(g組):使用者名稱:許可權 檔案
[root@linuxprobe ~]# setfacl -x g:linuxprobe /etc/fstab
常用的ls命令是看不到ACL資訊的,但是卻可以看到檔案許可權的最後一個點(.)變成了加號(+),這就意味著該檔案已經設定了ACL getfacl命令用於檢視檔案的ACL許可權規則,英文全稱為“get files ACL”,語法格式為“getfacl [引數]檔名稱” 在備份/home目錄上的ACL許可權時,可使用-R遞迴引數,這樣不僅能夠把目錄本身的許可權進行備份,還能將裡面的檔案許可權也自動備份
[root@linuxprobe /]# getfacl -R home > backup.acl
ACL許可權的恢復也很簡單,使用的是--restore引數
[root@linuxprobe /]# setfacl --restore backup.acl