Linux用戶和權限管理看了你就會用啦

前言

只有光頭才能變強

回顧前面:

沒想到上一篇能在知乎獲得千贊呀,Linux也快期末考試了,也有半個月沒有寫文章了。這篇主要將Linux下的用戶和權限知識點再整理一下。

那么接下來就開始吧,如果文章有錯誤的地方請大家多多包涵,不吝在評論區指正哦~

一、Linux下的用戶

Linux是一個多用戶的系統,我們可以多個用戶同時登陸Linux~

  • 賬戶實質上就是一個用戶在系統上的標識

Linux中的賬戶包括

  • 用戶賬戶
    • 普通用戶賬戶:在系統上的任務是進行普通工作
    • 超級用戶賬戶(或管理員賬戶):在系統上的任務是對普通用戶和整個系統進行管理。
  • 組賬戶(組是用戶的集合)
    • 標準組:標準組可以容納多個用戶
    • 私有組:私有組中只有用戶自己

當一個用戶同屬于多個組時,將這些組分為

  • 主組(初始組):用戶登錄系統時的組。
  • 附加組:登錄后可切換的其他組

上面也說了,賬戶的實質上就是用戶在系統上的標識,這些標識是用文件保存起來的:

  • 用戶名和 UID 被保存在/etc/passwd文件中,文件權限 (-rw-r--r--)
  • 組和GID 被保存在 /etc/group文件中,文件權限(-r--------)
  • 用戶口令(密碼)被保存在 /etc/shadow文件中 ,文件權限(-rw-r--r-- )
  • 組口令被保存在 /etc/gshadow文件中 ,文件權限 (-r--------)

也就是說:我們創建的用戶,這個用戶的信息由不同的文件來保存著

AdWRQDe.png
B9miqDC.png
image
image

有了上面的知識點,下面我來簡述一下創建用戶的時候會發生什么:

  • 用戶名和 UID 被保存在 /etc/passwd 這個文件中,用戶的口令通常用shadow passwords保護
  • 當用戶登錄時,他們被分配了一個主目錄和一個運行的程序(通常是 shell)
  • 若沒有指定他所屬于的組,RHEL/CentOS就建立一個和該用戶同名的私有組,且用戶被分配到這個私有組中

再來回顧一下:賬戶的實質上就是用戶在系統上的標識,這些標識是用文件保存起來的。也就是說:我們是可以直接編輯修改系統賬戶文件來維護賬戶

  • 但是不建議這樣做,如果明確要這樣做的話,最好使用命令檢測一下你編輯的語法是否有問題:
    • pwck:驗證用戶賬號文件,認證信息的完整性。該命令檢測文件“/etc/passwd”“/etc/shadow” 的每行中字段的格式和值是否正確
    • grpck:驗證組賬號文件,認證信息的完整性。該命令檢測文件“/etc/group”“/etc/gshadow”的每行中字段的格式和值是否正確。

既然不建議我們直接編輯文件的方式來管理用戶,那么Linux是肯定有現成的命令給我們使用的:

1.1管理Linux用戶的命令

用戶管理

  • useradd
  • usermod
  • userdel

組管理

  • groupadd
  • groupmod
  • groupdel

批量管理用戶

  • 成批添加/更新一組賬戶:newusers
  • 成批更新用戶的口令:chpasswd

組成員管理

  • 向標準組中添加用戶
    • gpasswd -a <用戶賬號名> <組賬號名>
    • usermod -G <組賬號名> <用戶賬號名>
  • 從標準組中刪除用戶
    • gpasswd -d <用戶賬號名> <組賬號名>

口令維護(禁用、恢復和刪除用戶口令):

  • 設置用戶口令
    • passwd [<用戶賬號名>]
  • 禁用用戶賬戶口令
    • passwd -l <用戶賬號名>
  • 查看用戶賬戶口令狀態
    • passwd -S <用戶賬號名>
  • 恢復用戶賬戶口令
    • passwd -u <用戶賬號名>
  • 清除用戶賬戶口令
    • passwd -d <用戶賬號名>

口令時效設置

  • 修改 /etc/login.defs 的相關配置參數
image

設置已存在用戶的口令時效

  • chage命令

用戶切換命令

  • su
    • 直接切換為超級用戶
  • sudo
    • 直接使用 sudo 命令前綴執行系統管理命令。執行系統管理命令時無需知道超級用戶的口令,使用普通用戶自己的口令即可

更多資料查詢:

用戶相關的命令

  • id:顯示用戶當前的uid、gid和用戶所屬的組列表
  • groups:顯示指定用戶所屬的組列表
  • whoami:顯示當前用戶的名稱
  • w/who:顯示登錄用戶及相關信息
  • newgrp:用于轉換用戶的當前組到指定的組賬號,用戶必須屬于該組才可以正確執行該命令

1.2Linux用戶的練習題

用cat命令,觀察如下文件:/etc/passwd , /etc/shadow, /etc/group,/etc/gshadow;顯示useradd命令添加用戶參數的默認值

image
image
image
image

建立linux賬戶jkXX(XX為學生學號末兩位),要求用戶組為users,并設置密碼;觀察/etc/passwd和/etc/shadow文件的變化;退出root賬戶,用jkXX賬戶登錄,在其主目錄下建立一個myfirst文件,并用長格式列出myfirst文件

image
image
image
image

用root賬戶登錄;添加組jsj;設置用戶jkXX為jsj組用戶,觀察/etc/passwd、/etc/group和/etc/gshadow文件變化

image
image
image
image

添加一個新用戶airXX(XX為學生學號末兩位),觀察新用戶airXX的用戶id和組id;然后刪除該用戶,注意不要在命令中加選項,觀察用戶文件和組文件的變化;觀察airXX用戶的目錄是否存在;

image
image
C4pzwfB.png
image
image

shadow文件中密碼為*號和!!代表什么?

答:*代表賬戶禁用;!!代表密碼鎖定。

airXX用戶組id是多少?這個組是什么類型的組?這樣做有什么好處?

答:air08用戶組id是501,這個組屬于私有組。每個未指定組的用戶會建立一個同名的組,這樣的組稱為私有組,只有一個用戶,既有利于防止信息泄露,也也有利于防止不合理的授權。總之,有利于安全管理。

默認情況下刪除用戶,但卻保留了用戶的主目錄,這樣做有什么好處?

答:保留用戶目錄,防止將用戶目錄下有價值的資料誤刪除。

用cat命令,觀察文件/etc/passwd;仿照passwd文件的格式,用vi編輯一個新的文件,文件名為userXX(XX為學生學號末兩位),文件包括3條記錄,用戶名分別為jkXX(XX為學生學號末兩位),peter,jason,他們的用戶id大于1000,組id大于1000,要求peter和jason同組;用命令newusers根據文件userXX的內容批量生成用戶;觀察/etc/passwd文件的變化。

1LAd6i9.png
l1ldI5o.png
8PbOC7r.png
image
image

用cat命令,觀察文件/etc/shadow;用vi編輯一個新文件,文件名為mimaXX(XX為學生學號末兩位),文件包括3條記錄,每條記錄用戶名與上一步驟要求相同,密碼自行設置,用戶名和密碼用冒號:隔開;用命令chpasswd根據文件mimaXX的內容批量生成密碼;觀察文件/etc/shadow變化;用命令chpasswd -m再次批量生成密碼,觀察文件/etc/shadow變化;

image
image
image
image

退出root賬戶,用jkXX賬戶登錄。退出jkXX賬戶,返回root賬戶,觀察/etc/shadow文件;用passwd命令鎖定用戶jkXX,觀察/etc/shadow文件變化;然后退出root賬戶,用jkXX賬戶登錄,是否成功?

image
image
F850utZ.png
WXznnt6.png
image

用chage命令查看peter賬戶的時間設置;重新設置peter賬戶的時間,要求兩天內不能更改口令,且口令最長的存活期為 90 天,并在口令過期前 5 天通知用戶,口令超期7天密碼失效;用chage命令再次查看peter賬戶的時間設置

jwDDGh4.png
image

用root賬戶登錄;用su切換到jason賬戶;用cd進入用戶主目錄;創建一個新文件abc,用長格式列出abc文件;觀察文件的用戶和組的屬性

image
image

鎖定賬戶后,shadow文件發生了什么變化?

答:鎖定賬戶的密碼之前會鎖定標志!!

用su切換用戶后,建立的新文件文件屬于哪個用戶?

答:新文件屬于切換之后的用戶。

兩次執行chpasswd命令,結果是否相同?加密算法md5和sha512哪個更安全?

答:兩次執行chpasswd命令結果不同,默認情況采用sha512加密算法;-m選項時,采用md5加密算法;sha512更安全,因為加密信息長度更長,破解計算量大。

建立三個普通用戶賬戶,要求如下:用戶名分別為jkXX(XX為學生學號末兩位),peter,jason,其中jkXX和jason為相同普通組成員;觀察/etc/passwd文件的變化。為jkXX賬戶添加root組;

image
image
image

分別練習id,groups,whoami,who命令,顯示當前賬戶的信息;用su命令切換到jkXX賬戶,分別練習id,groups,whoami,who命令,顯示當前賬戶的信息。用newgrp切換jkXX賬戶的組,分別練習id,groups,whoami,who命令,顯示當前賬戶的信息

v1NXNum.png
aGBcCPW.png
z3OlnAd.png

二、權限管理

Linux是多用戶的操作系統,允許多個用戶同時在系統上登錄和工作。 為了確保系統和用戶的安全,Linux自然就有自己一套的權限管理機制了!

相信用過Linux的同學在檢索文件夾文件的時候常常用到ls -l的命令,會出來一大串的數據。這些數據你能讀懂了嗎?

例如:


    drwxr-xr-x   3  osmond   osmond    4096  05-16 13:32   nobp

其實很簡單:

image

其實我們看權限就是看drwxr-xr-x這么一串東西,看起來很復雜,但不是的,一下就可以理解了。我們來分解一下:

image

這9個字符每3個一組,組成 3 套 權限控制

  • 第一套控制文件所有者的訪問權限
  • 第二套控制所有者所在用戶組的其他成員的訪問權限
  • 第三套控制系統其他用戶的訪問權限

rwx分別代表的意思:

image

看到這里來,如果前面的你看懂了,那drwxr-xr-x這么一串東西我覺得你很容易就能理解了:

  • d是文件夾,后面還有9個字母,每3個分成一組,-號表示沒有。那么這個文件夾的權限就是:
    • 對當前用戶是可讀可寫可執行,對同組的用戶是可讀可執行,對其他的用戶是可讀可執行

是不是很簡單??r-read,w-write,x-execute,很好理解的。

對于這些rwx命令為了方便還可以換成八進制的數據來表示,我相信大家看完下面的demo也知道其實就這么一回事了:

IKO1mov.png

權限的優先順序

  • 如果UID匹配,就應用用戶屬主(user)權限
  • 否則,如果GID匹配,就應用組(group)權限
  • 如果都不匹配,就應用其它用戶(other)權限
  • 超級用戶root具有一切權限,無需特殊說明

2.1管理Linux權限的常用命令

  • chmod
    • 改變文件或目錄的權限
  • chown
    • 改變文件或目錄的屬主(所有者)
  • chgrp
    • 改變文件或目錄所屬的組
  • umask
    • 設置文件的缺省生成掩碼

例子:

image
image

2.2權限擴展知識

上面提到了umask屬性,它用來做這樣的東西的:默認生成掩碼告訴系統當創建一個文件或目錄時不應該賦予其哪些權限

  • 默認的umask的值是022,我們看一下下面的例子應該就能懂了:
image

除了上面所說的權限之外,Linux還提供了三種特殊的權限

  • SUID:使用命令的所屬用戶的權限來運行,而不是命令執行者的權限
  • SGID:使用命令的組權限來運行
  • Sticky-bit:目錄中的文件只能被文件的所屬用戶和root用戶刪除

它們是這樣表示的:

  • SUID和SGID用s表示;Sticky-bit用t表示
  • SUID是占用屬主的x位置來表示
  • SGID是占用組的x位置來表示
  • sticky-bit是占用其他人的x位置來表示

例如:drwxrwxrwt 5 root root 4096 06-18 01:01 /tmp它就擁有sticky-bit權限。-rwsr-xr-x 1 root root 23420 2010-08-11 /usr/bin/passwd它就擁有SUID權限

SUID,SGID,sticky-bit同樣也有數字的表示法:

gv8UKv6.png

使用的例子:

image

Linux內核中有大量安全特征。EXT2/3/4文件系統的擴展屬性(Extended Attributes)可以在某種程度上保護系統的安全

常見的擴展屬性:

  • A(Atime):告訴系統不要修改對這個文件的最后訪問時間。
    • 使用A屬性可以提高一定的性能
  • S(Sync):一旦應用程序對這個文件執行了寫操作,使系統立刻把修改的結果寫到磁盤。
    • 使用S屬性能夠最大限度的保障文件的完整性
  • a(Append Only):系統只允許在這個文件之后追加數據,不允許任何進程覆蓋或者截斷這個文件。如果目錄具有這個屬性,系統將 只允許在這個目錄下建立和修改文件,而不允許刪除任何文件。
  • i(Immutable):系統不允許對這個文件進行任何的修改。如果目錄具有這個屬性,那么任何的進程只能修改目錄之下的文件,不允許建立和刪除文件。
    • a屬性和i屬性對于提高文件系統的安全性和保障文件系統的完整性有很大的好處

常用命令

  • 顯示擴展屬性:lsattr [-adR] [文件|目錄]
  • 修改擴展屬性:chattr [-R] [[-+=][屬性]] <文件|目錄>

2.3權限管理練習題

用root賬戶登錄,創建一個文件aaaXX(XX為學生學號末兩位),用長格式查看文件權限;用chmod命令,文字設定法,給aaaXX文件同組增加寫屬性,觀察結果;用chmod命令,數字設定法,給aaaXX文件設置權限為766,觀察結果;

image

切換到peter賬戶,查看當前umask是多少,觀察結果;創建一個目錄foldXX(XX為學生學號末兩位),查看其權限;創建一個新文件bbb,查看其權限;改變unmask為066,創建一個新文件ccc,查看其權限

image
image

切換到jkXX賬戶;創建一個文件myfile,觀察其屬性;用chgrp改變文件myfile組屬性為root;試著去改變文件myfile主屬性為root,可以嗎?切換到root賬戶,改變文件myfile主屬性為root,觀察結果

l7Fq6i4.png
image
image

數字設定766代表文件權限是什么?

答:766代表文件權限為rwx-rw-rw-

為什么用jkXX賬戶改變文件myfile的屬主失敗?

答:因為chown只有root賬戶才可以使用

Umask為022和066對新創建的文件屬性影響一樣嗎?為什么?

答:影響當然不一樣,umask定義的是默認不應該獲得的權限,066比022轉換成為二進制數后,多了兩個限制比特位。

以root賬戶登錄,復制/usr/bin/dir文件到用戶主目錄,用長格式列出,設置文件的suid和sguid為1,用長格式列出;切換帳號為jkXX,運行復制過來的文件dir(注意運行當前路徑下的文件要帶上路徑,例如./dir);

image
image

切換到jkXX賬戶,進入/tmp目錄,建立文件夾myfold,設置文件夾myfold權限為777,并且sgid和sticky-bit為1,用長格式列出,觀察myfold的屬性;進入myfold,創建新文件aaa,設置屬性為任何人可讀可寫,用長格式列出;切換到jason賬戶,進入/tmp/myfold目錄,刪除aaa文件,是否可以刪除?

image
NR9H7oJ.png
image
image
image
image

root賬戶,進入用戶主目錄;創建一個文件bbb文件,查看文件的擴展屬性;給文件bbb添加擴展屬性i,然后試著刪除該文件,是否成功,怎樣才能刪除;創建一個ccc文件,給文件ccc添加擴展屬性a,用長格式列表/bin目錄并重定向輸出到ccc文件,觀察ccc文件長度的變化,用長格式列表/etc目錄,并重定向輸出到ccc文件,是否成功

image
image
VUVRpHw.png
image
image

切換到jkXX賬戶,在/tmp目錄下創建一個目錄myshare,用getfacl查看myshare目錄文件訪問控制表;設置myshare文件夾對于jason用戶權限為rwx,查看文件訪問控制表的變化;切換到jason賬戶,進入myshare文件創建文件yyy,是否成功;切換到peter賬戶,進入myshare文件創建文件zzz,是否成功,為什么?

DOztMSe.png
image
Nasyxpf.png
image
NCPs7au.png

myfold目錄下,為什么jason賬戶不能刪除一個任何人都可讀可寫的文件?

答:因為文件所在的文件夾myfold被它的所屬者jk08設置了stickybit位,該文件夾下面的所有文件,只有文件所屬者,以及root用戶才能刪除。

為什么peter賬戶在在myshare文件夾里面不能創建文件?

答:因為myshare文件夾,屬于jk08用戶,只有jk08對該目錄具備rwx權限。此外,采用facl的方式,給jason用戶開放了該目錄的rwx訪問權限;peter既不是文件夾的擁有者,也沒有在facl中開放rwx權限;依據權限設置情況,peter只有該文件夾的rx權限。因此,不能創建文件。

添加擴展屬性a后,用重定向將輸出內容給ccc文件,可能會失敗,怎樣才能輸出成功?

答:應該采用追加方式的重定向>>,可以在文件末尾添加內容,這樣才符合文件擴展屬性a的安全規定。

三、總結

本文主要是總結了Linux下操作用戶和權限的知識~~這兩個知識點在Linux下也是很重要的,是學習Linux的基礎

繼續完善上一次的思維導圖

Linux常用命令.png

如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同學,可以關注微信公眾號:Java3y。為了大家方便,剛新建了一下qq群:742919422,大家也可以去交流交流。謝謝支持了!希望能多介紹給其他有需要的朋友

文章的目錄導航

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,744評論 3 421
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,879評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,935評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,325評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,534評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,084評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,892評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,322評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,800評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,084評論 2 375

推薦閱讀更多精彩內容