Linux學習之路(六)用戶身份和文件權限命令

一、用戶身份權限

0、id

小命令,查看用戶及其所屬的組。

root@kali:~# id ss
uid=1001(ss) gid=1001(ss)=1001(ss)

1、useradd

useradd命令用於創建新的用戶,格式爲“useradd [選項] 用戶名”。

使用該命令創建用戶賬戶時,默認的用戶家目錄會被存放在/home目錄中,默認的Shell解釋器爲/bin/bash,而且默認會創建一個與該用戶同名的基本用戶組。不過這些都可以在創建用戶的時候使用參數進行修改。

參數 作用
-d 指定用戶的家目錄(默認爲/home/username)
-e 賬戶的到期時間,格式爲YYYY-MM-DD.
-u 指定該用戶的默認UID
-g 指定一個初始的用戶基本組(必須已存在)
-G 指定一個或多個擴展用戶組
-N 不創建與用戶同名的基本用戶組
-s 指定該用戶的默認Shell解釋器

linux中有UID和GID,也就是用戶ID(用戶名)和組ID(羣組名),分別代表文件所屬的用戶和組。

root@kali:~# useradd ss
root@kali:~# id ss
uid=1001(ss) gid=1001(ss)=1001(ss)

2、groupadd

groupadd命令用於創建用戶組,格式爲“groupadd [選項] 羣組名”。
用戶組的作用和windows上的是一樣的,都是爲了方便權限的管理和分配。

一般直接添加羣組,不經常用到參數選項:

groupadd sea

3、usermod

usermod命令用於修改用戶的屬性,格式爲“usermod [選項] 用戶名”。

參數 作用
-c 填寫用戶賬戶的備註信息
-d -m 參數-m與參數-d連用,可重新指定用戶的家目錄並自動把舊的數據轉移過去
-e 賬戶的到期時間,格式爲YYYY-MM-DD
-g 變更所屬用戶組
-G 變更擴展用戶組
-L 鎖定用戶禁止其登錄系統
-U 解鎖用戶,允許其登錄系統
-s 變更默認終端
-u 修改用戶的UID
//把用戶ss添加到root用戶組中
usermod -G root ss

//修改用戶ss的UID號碼爲1234
usermod -u 1234 ss

用戶的信息保存在/etc/passwd文件中,也可以直接對文件進行修改,和usermod命令等效。

4、passwd

passwd命令用於修改用戶密碼、過期時間、認證信息等,格式爲“passwd [選項] [用戶名]”

參數 作用
-l 鎖定用戶,禁止其登錄
-u 解除鎖定,允許用戶登錄
–stdin 允許通過標準輸入修改用戶密碼,如echo “NewPassWord”
-d 使該用戶可用空密碼登錄系統
-e 強制用戶在下次登錄時修改密碼
-S 顯示用戶的密碼是否被鎖定,以及密碼所採用的加密算法名稱
//直接使用passwd命令可以修改當前用戶的密碼
reno@reno:~$ passwd
Changing password for reno.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 

5、userdel

userdel命令用於刪除用戶及用戶信息,格式爲“userdel [選項] 用戶名”。
執行刪除操作時,被刪除用戶的家目錄時默認保留的,但可以使用-r參數吧家目錄也刪除


參數 作用
-f 強制刪除用戶
-r 同時刪除用戶及用戶家目錄

二、文件權限

1、Linux中的文件類型

  • -:普通文件
  • d:目錄文件
  • l:鏈接文件
  • b:塊設備文件
  • c:字符設備文件
  • p:管道文件

這些就是Linux中常見的文件類型了

2、Linux中文件的一般權限

一般文件的權限有可讀(r)、可寫(w)、可執行(x),這些權限Windows上也是有的,但普通用戶平時用Windows的時候一般不會涉及權限問題,但在一文件組成的Linux系統上,文件的權限是一個大問題。

Linux中在表示權限的時候經常用數字,r、w、x分別對應的權限數字爲4、2、1,而文件的權限表示經常使用這些符號的組合:

reno@reno:~/Downloads$ ls -lh
total 53M
-rw-rw-r-- 1 reno reno 53M Sep 17 08:45 code_1.38.1-1568209190_amd64.deb
//開頭的-表示文件類型爲普通文件,然後rw-表示所有者的權限,中間的rw-表示所屬組的權限,最後的r--表示其他用戶的權限

這就是Linux中文件的一般權限

3、Linux中文件的特殊權限

很多時候在一些複雜環境下,我們需要更多更全面的權限來進行更進一步的管理,Linux面對一些文件設定了特殊的權限

1)SUID權限
  • 專門針對二進制程序(對目錄無用)
  • 讓二進制程序的執行者臨時擁有屬主的權限(該二進制程序必須可執行)
  • 屬主仍是原來的屬主,不過可以暫時得到屬主的權限
//權限設置命令
chmod u+s filename
chmod u-s filename
2)SGID權限
  • 讓執行者臨時擁有屬組的權限(對象可以是二進制文件和目錄)
  • 屬組仍是原來的屬組
  • 目錄中創建的文件自動繼承該目錄的用戶組
//權限設置命令
chmod g+s filename
chmod g-s filename
3)SBIT權限

也就是Sticky Bit(保護位)

  • 確保用戶只能刪除自己的文件
  • 目錄被設置SBIT之後,其中的文件只能被其所有者或root用戶刪除
  • 只設置在目錄上,設置在文件上毫無意義
//權限設置命令
chmod o+t dir_name
chmod o-t dir_name
4)chmod和chown

chmod用法:
chmod [-cfvR] [ugoa…][[±=][rwxX]…] file

只看用法有點繁雜了

  • u 表示該文件的擁有者,g 表示與該文件的擁有者屬於同一個羣體(group)者,o 表示其他以外的人,a 表示這三者皆是。
  • - + 表示增加權限、- 表示取消權限、= 表示唯一設定權限。
  • r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該文件是個子目錄或者該文件已經被設定過爲可執行。
  • -c : 若該文件權限確實已經更改,才顯示其更改動作
  • -f : 若該文件權限無法被更改也不要顯示錯誤訊息
  • -v : 顯示權限變更的詳細資料
  • -R : 對目前目錄下的所有文件與子目錄進行相同的權限變更(即以遞迴的方式逐個變更)
    一般使用是這樣:
chmod u+w filename

chown用法:
chown [-cfhvR] user[:group] file

  • user : 新的文件擁有者的使用者 ID
  • group : 新的文件擁有者的使用者組(group)
  • -c : 顯示更改的部分的信息
  • -f : 忽略錯誤信息
  • -h :修復符號鏈接
  • -v : 顯示詳細的處理信息
  • -R : 處理指定目錄以及其子目錄下的所有文件
    需要強調的是,chown命令只能由管理員使用,按需要指定文件的擁有者改爲指定的用戶或組。

一般用法:

//指定flag.txt的擁有者爲ss,羣組爲root
chown ss:root flag.txt

//將目前目錄下的所有文件與子目錄的擁有者皆設爲ss,羣組都設爲root
chown ss:root *

4、Linux中文件的隱藏權限

隱藏權限也很特殊,是不會被用戶察覺到的權限,有時候明明有充足的權限卻無法刪除或修改文件,這就可能說明是隱藏權限的問題了,隱藏權限在一定程度上增加了文件的安全性。

1)隱藏權限設置命令chattr

格式爲“chattr [參數] 文件”

參數 作用
i 無法對文件進行修改;若對目錄設置了該參數,則僅能修改其中的子文件內容而不能新建或刪除文件
a 僅允許補充(追加)內容,無法覆蓋/刪除內容(Append Only)
S 文件內容在變更後立即同步到硬盤(sync)
s 徹底從硬盤中刪除,不可恢復(用0填充原文件所在硬盤區域)
A 不再修改這個文件或目錄的最後訪問時間(atime)
b 不再修改文件或目錄的存取時間
D 檢查壓縮文件中的錯誤
d 使用dump命令備份時忽略本文件/目錄
c 默認將文件或目錄進行壓縮
u 當刪除該文件後依然保留其在硬盤中的數據,方便日後恢復
t 讓文件系統支持尾部合併(tail-merging)
X 可以直接訪問壓縮文件中的內容

Linux中的命令總是特別多,但隱藏權限命令對於一般用戶來說還是不太常用的。

可以看到-a參數就可以設置文件不被刪除。
使用命令chattr +a flag.txt之後再進行刪除就無法刪除文件。

2)隱藏權限顯示命令lsattr

格式爲“lsattr [參數] 文件”
這個命令倒是沒有什麼參數,可以類比於ls命令,直接使用就可以顯示出文件的隱藏權限。

5、文件訪問控制列表(ACL-Access Control List)

權限本身就是爲了限制不同用戶對文件的使用程度而設置的。
如果想對某個指定的用戶進行單獨的權限控制,就要使用ACL了。使用ACL可以指定某個用戶對特定的文件或文件夾的權限。

1)ACL設置命令setfacl

setfacl使用下面的規則格式:
[d[efault]:] [u[ser]:]uid [:perms] 指定用戶的權限,文件所有者的權限(如果uid沒有指定)。
[d[efault]:] g[roup]:gid [:perms] 指定羣組的權限,文件所有羣組的權限(如果gid未指定)
[d[efault]:] m[ask][:] [:perms] 有效權限掩碼
[d[efault]:] o[ther] [:perms] 其他的權限

常用參數:

  • -R:遞歸參數,用於目錄
  • -m:針對普通文件
  • -b:刪除文件的擴展ACL,基本的仍會保留
  • -d:設定默認的acl規則
    示例:
setfacl -Rm u:ss:rwx /root
2)ACL顯示命令getfacl

格式爲:getfacl 文件名

6、su和sudo命令

su命令用來切換用戶身份,可以讓當前用戶在切換不退出登錄的情況下切換到其他用戶。
管理員切換到其他用戶不需要密碼,普通用戶在進行用戶切換的時候需要輸入目的用戶的密碼。

//切換到ss用戶,中間的-號的作用是實現完全切換,此時環境變量等系統信息也完全切換爲目標用戶的信息
su - ss

對於普通用戶沒有權限的命令,需要root用戶實現,這樣普通用戶需要和root用戶進行切換,對於普通用戶工作不方便,root用戶的密碼也會變得不安全。sudo命令就是解決這個問題的,sudo命令會給普通用戶一些更高的權限來幫助其完成工作。
先說說用法:
sudo [參數] 命令名稱

參數 作用
-h 列出幫助信息
-l 列出當前用戶可執行的命令
-u 用戶名或UID值 以指定的用戶身份執行命令
-k 清空密碼的有效時間,下次執行sudo時需要再次進行密碼驗證
-b 在後臺執行指定的命令
-p 更改詢問密碼的提示語

sudo命令具有如下功能:

  • 限制用戶執行指定的命令:
  • 記錄用戶執行的每一條命令;
  • 配置文件(/etc/sudoers)提供集中的用戶管理、權限與主機等參數;
  • 驗證密碼的後5分鐘內(默認值)無須再讓用戶再次驗證密碼。

如果擔心直接修改配置文件會出現問題,則可以使用sudo命令提供的visudo命令來配置用戶權限。這條命令在配置用戶權限時將禁止多個用戶同時修改sudoers配置文件,還可以對配置文件內的參數進行語法檢查,並在發現參數錯誤時進行報錯。

sudo進行權限操作時需要的是用戶的密碼,這就爲普通用戶提供了很大的便利。

示例:
在這裏插入圖片描述當時用apt命令安裝應用的時候顯示有lock(鎖),不能進行操作,然後使用sudo進行暫時授權,輸入用戶自己的密碼即可,然後就可以成功使用較高權限的命令。

只有root管理員纔可以使用visudo命令編輯sudo服務的配置文件。
通過修改配置文件可以限定不同用戶可用的命令。

用戶可以通過sudo -l來查看可以執行的命令

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章