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

2021-01-13 Java3y
前言

只有光頭才能變強

回顧前面:

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

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

一、Linux下的用戶

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

Linux中的帳戶包括

用戶帳戶

組帳戶(組是用戶的集合)

標準組:標準組可以容納多個用戶

私有組:私有組中只有用戶自己

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

主組(初始組):用戶登錄系統時的組。

附加組:登錄後可切換的其他組

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

用戶名和 UID 被保存在/etc/passwd文件中,文件權限 (-rw-r--r--)

組和GID 被保存在 /etc/group文件中,文件權限(-r---)

用戶口令(密碼)被保存在 /etc/shadow文件中  ,文件權限(-rw-r--r-- )

組口令被保存在 /etc/gshadow文件中 ,文件權限 (-r---)

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

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

用戶名和 UID 被保存在 /etc/passwd 這個文件中,用戶的口令通常用shadow passwords保護

當用戶登錄時,他們被分配了一個主目錄和一個運行的程序(通常是 shell)

若沒有指定他所屬於的組,RHEL/CentOS就建立一個和該用戶同名的私有組,且用戶被分配到這個私有組中

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

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

1.1管理Linux用戶的命令

用戶管理

組管理

批量管理用戶

成批添加/更新一組帳戶:newusers

成批更新用戶的口令:chpasswd

組成員管理

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

設置用戶口令

禁用用戶帳戶口令

查看用戶帳戶口令狀態

恢復用戶帳戶口令

清除用戶帳戶口令

口令時效設置

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

用戶切換命令

更多資料查詢:

用戶相關的命令

1.2Linux用戶的練習題

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

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

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

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

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文件的變化。

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

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




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

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

鎖定帳戶後,shadow文件發生了什麼變化?

答:鎖定帳戶的密碼之前會鎖定標誌!!

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

答:新文件屬於切換之後的用戶。

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

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

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

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

二、權限管理

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

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

例如:

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

其實很簡單:

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

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

第一套控制文件所有者的訪問權限

第二套控制所有者所在用戶組的其他成員的訪問權限

第三套控制系統其他用戶的訪問權限

rwx分別代表的意思:

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

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

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

權限的優先順序

如果UID匹配,就應用用戶屬主(user)權限

否則,如果GID匹配,就應用組(group)權限

如果都不匹配,就應用其它用戶(other)權限

超級用戶root具有一切權限,無需特殊說明

2.1管理Linux權限的常用命令

例子:

2.2權限擴展知識

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

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

它們是這樣表示的:

例如: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同樣也有數字的表示法:

使用的例子:

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

常見的擴展屬性:

A(Atime):告訴系統不要修改對這個文件的最後訪問時間。

S(Sync):一旦應用程式對這個文件執行了寫操作,使系統立刻把修改的結果寫到磁碟。

a(Append Only):系統只允許在這個文件之後追加數據,不允許任何進程覆蓋或者截斷這個文件。如果目錄具有這個屬性,系統將 只允許在這個目錄下建立和修改文件,而不允許刪除任何文件。

i(Immutable):系統不允許對這個文件進行任何的修改。如果目錄具有這個屬性,那麼任何的進程只能修改目錄之下的文件,不允許建立和刪除文件。

常用命令

2.3權限管理練習題

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

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

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

數字設定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);

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

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

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

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的基礎~

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

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

文章的目錄導航

相關焦點

  • linux基礎04:linux用戶相關的命令有哪些?怎樣切換用戶?
    我們打開linux虛擬機,進入到登錄界面,輸入管理員名root和密碼,登錄成功後,如下圖所示:如上圖,root代表當前登錄用戶,localhost表示當前linux主機名,~表示當前所在的目錄是用戶的家目錄,#號表示當前登錄的用戶是管理員用戶。# 標識管理員用戶權限。
  • 《Linux就該這麼學》與《鳥哥的linux私房菜》哪個更適合初學者?
    也就是說無論你使用Windows多好,對於linux系統來說你都是個小白。期初學習看書推薦:《Linux就該這麼學》,《鳥哥的linux私房菜》、《Linux 內核設計與實現》……三本相比來說更推薦《Linux就該這麼學》,原因是言簡意賅,不像鳥哥那麼厚重看一半就閒置了……;後面是命令:man、date、wget、reboot……;再後面就是實驗:修改文件、修改文件權限、建立不同帳戶、帳戶間的切換……;「但是最重要的別不是這些表面的東西,而是你是否能夠徹底了解linux系統的思想
  • linux系統工控機-ubuntu烏班圖嵌入式工業電腦
    linux系統工控機-807A正面Linux是自由的免費開源的,它是以unix為原型改造的,一個多用戶多任務的作業系統,任何人都可以修改其代碼和頁面,其中主要的目的就是為了不收商業化的限制,而我們將伺服器部署在linux系統上會更加高效穩定、安全(註:UNIX作業系統(尤尼斯),是一個強大的多用戶、多任務作業系統,支持多種處理器架構
  • 打動用戶內心?權限獲取頁面可以這樣設計
    詳細的如下:權限主次類型文字的情感力量配圖的情感力量一、權限的主次區分權限主次關係能更好的明確我們的請求順序,在Material Design中提到了兩個關鍵詞是重要和明確,我們用這個關鍵詞進行劃分在重要和用戶不明確的權限面前,我們需要預先教育提前告知我們為啥需要這些需求,避免用戶理解不到,增用戶學習成本。
  • 從串口驅動到Linux驅動模型,想轉Linux的必會!
    當Windows 10的升級提示從你計算機的右下角彈出時。你可以不假思索的點擊『馬上升級』嗎?我想大多數人對這個問題的答案是否定的。為什麼?因為大多數情況下。升級之後就會變得更卡。延遲更大。一些無用而龐大的軟體瘋狂的佔用你有限的計算機資源。而如果你選擇的是Linux。你幾乎可以任意的在計算機上安裝軟體。運行程序(如果你的內存不是太小。且硬碟交換分區足夠的話)。
  • linux-ssh配置和使用
    全新安裝的linux因為默認都是國外源. 首先第一步換源這樣下載軟體速度會快一點.1.由於debian系統穩定性下面列舉華為和阿里的鏡像源cd /etc/apt&&cp sources.list sources.list.bak&&vi sources.list#vimj基本操作可以直接刪除原來所有源地址直接shift+insert
  • vxworks和linux有什麼區別
    自己目前開發的嵌入式開發所用的作業系統是VxWorks,以前讀大學的時候用的最多的是linux作業系統,但是,對於這兩種作業系統之間到底有什麼區別,還真沒有真正去細心的總結過,被別人問起時,難免有些尷尬的感覺 Linux是一類Unix計算機作業系統的統稱。Linux作業系統的內核的名字也是「Linux」。
  • Linux shell命令總結大全
    也可以用二進位表示 111 101 101 --> 755)d:標識節點類型(d:文件夾 -:文件 l:連結)r:可讀 w:可寫 x:可執行 第一組rwx: ## 表示這個文件的擁有者對它的權限:可讀可寫可執行第二組r-x: ## 表示這個文件的所屬組用戶對它的權限
  • B端產品設計:用戶角色權限系統設置
    本文首先對B端產品的用戶與需求進行了解析,進而利用RBAC模型做了權限劃分,並做了詳細的案例分析。在做過了一些B端產品後,就會發現所以B端端產品有很多共同的部分,比如系統設置裡的用戶角色權限以及基礎信息的維護,雖然B端產品可能業務不一樣,產品服務的人群、產品價值不一樣,但是用戶體系卻是每個系統必不可少的。1.
  • 產品經理之用戶角色權限的管理設計模式
    (本文就不畫圖了,雖然圖片利於理解但是我手頭上的工具有限就算了)二、三個模塊搭建用戶系統通常我們在做產品設計的時候做用戶系統的時候都會分為:用戶、角色管理(一般角色和權限都做在一個模塊,角色包含權限)部門管理。
  • linux各個目錄代表什麼
    基本文件系統類型:linux有四種基本文件系統類型:--普通文件:如文本文件、c語言原始碼、shell腳本等,可以用cat、less、more、vi等來察看內容,用mv來改名;--目錄文件:包括文件名、子目錄名及其指針,可以用ls列出目錄文件;
  • 2B產品的用戶權限管理問題與RBAC模型
    這也是為什麼2B的產品難以標準化的一個因素——業務的獨特性和(管理)文化的獨特性。權限管理,本質上是對用戶,以及用戶的行為的範圍控制,通過一種巧妙的設計,約束不同身份的用戶在系統上的操作路徑和操作權限。
  • Linux之父如何定義Linux!主要想讓黑客、計算機學生使用和學習!
    主要讓黑客、計算機科學學生使用,學習和享受。 它大部分用C編寫,但是一小部分是用gnu格式彙編,而且引導序列用的是因特爾086彙編語言。 C代碼是相對ANSI的,使用一些GNU增強特性(大多為 __asm__ 和 inline)。
  • Unix和Linux作業系統有什麼區別?
    ②、Linux系統淵源而Linux作業系統的起源則和Unix有關係。它是由李納斯託瓦茲在讀大學的時候編寫出來的。它之所以要開發linux系統,是因為它覺得教學用的Unix太難用了。於是就參考unix系統的特點和功能,開發了一個Linux系統。於1991年9月發布,當時只有10000行代碼。
  • 電腦軟體權限設置在哪裡 電腦修改軟體權限的方法
    現在無論是工作還是學習大家都離不開電腦,在操作電腦的過程中,為了體驗更多的功能,我們會在裡面安裝各種各樣的軟體,可是這些軟體的操作權限很大,有的用戶想要對其進行更改,那電腦軟體權限設置在哪裡呢?我們又該怎麼修改軟體權限呢?下面本文就來為大家分享具體的操作方法。
  • Linux-1.1.1 Linux與開源軟體(背書連載)
    很多新手都有一個疑惑的問題:「linux我聽過,但是學習之後能用來幹什麼呢?或者說linux能具體做什麼呢?」帶著這個疑問,本書開篇先概述linux與開源軟體的關係以及linux的應用領域和未來的發展方向。
  • Linux系統忘記密碼的重置辦法
    美國伺服器使用Linux系統的用戶可能會出現忘記密碼的情況,而美國伺服器Linux系統的密碼的重置和修改密碼方法略有不同,需要的步驟也較多,小編今天就來分享下美國伺服器Linux系統忘記密碼後重新設置root密碼的方法。
  • Linux基礎教程:CentOS開機流程詳解
    本文以Grub為例講解,grub功能:提供一個菜單,允許用戶選擇要啟動的系統或不同的內核版本;把用戶選定的內核裝載到RAM中的特定空間中,解壓、展開。 系統讀取內存中的grub配置信息(一般為menu.lst或grub.conf),並依照此配置信息來加載指定內核。
  • linux 虛擬主機好嗎
    linux 虛擬主機好嗎?linux 虛擬主機是採用Linux系統搭建的虛擬主機,是企業和個人都非常喜歡使用的虛擬主機種類。運行穩定,對軟體的兼容遠超Windows系統。目前,市面上大多數病毒和惡意程序都是針對win系統開發,而Linux系統對此先天免疫。又由於代碼開源,即使linux不幸感染病毒,維護人員也容易查出運行異常之處,並加以解決。平時,linux系統也可利用自帶防火牆、入侵檢測和安全認證等工具及時修補漏洞,提高系統安全性。
  • 權限體系設計:融合了組織和崗位的權限模型長啥樣?
    傳統RBAC與現實的距離傳統的RBAC(基於角色的訪問權限控制)是一個經典的權限管理模型,基本原理是不直接對系統種的用戶賦權,而是通過角色作為系統用戶和系統資源之間的中介,將資源權限綁定到角色,再將角色綁定到用戶,來完成整個賦權的流程,從而簡化賦權和修改權限的過程。