只有光頭才能變強html
回顧前面:linux
沒想到上一篇能在知乎得到千贊呀,Linux也快期末考試了,也有半個月沒有寫文章了。這篇主要將Linux下的用戶和權限知識點再整理一下。算法
那麼接下來就開始吧,若是文章有錯誤的地方請你們多多包涵,不吝在評論區指正哦~shell
Linux是一個多用戶的系統,咱們能夠多個用戶同時登錄Linux~安全
Linux中的帳戶包括微信
當一個用戶同屬於多個組時,將這些組分爲post
上面也說了,帳戶的實質上就是用戶在系統上的標識,這些標識是用文件保存起來的:性能
/etc/passwd
文件中,文件權限 (-rw-r--r--)
/etc/group
文件中,文件權限(-r--------)
/etc/shadow
文件中 ,文件權限(-rw-r--r-- )
/etc/gshadow
文件中 ,文件權限 (-r--------)
也就是說:咱們建立的用戶,這個用戶的信息由不一樣的文件來保存着。學習
有了上面的知識點,下面我來簡述一下建立用戶的時候會發生什麼:ui
/etc/passwd
這個文件中,用戶的口令一般用shadow passwords
保護再來回顧一下:帳戶的實質上就是用戶在系統上的標識,這些標識是用文件保存起來的。也就是說:咱們是能夠直接編輯修改系統帳戶文件來維護帳戶。
pwck
:驗證用戶帳號文件,認證信息的完整性。該命令檢測文件「/etc/passwd」
和「/etc/shadow」
的每行中字段的格式和值是否正確grpck
:驗證組帳號文件,認證信息的完整性。該命令檢測文件「/etc/group」
和「/etc/gshadow」
的每行中字段的格式和值是否正確。既然不建議咱們直接編輯文件的方式來管理用戶,那麼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
的相關配置參數設置已存在用戶的口令時效:
chage
命令用戶切換命令:
su
sudo
更多資料查詢:
用戶相關的命令:
id
:顯示用戶當前的uid、gid和用戶所屬的組列表groups
:顯示指定用戶所屬的組列表whoami
:顯示當前用戶的名稱w/who
:顯示登陸用戶及相關信息newgrp
:用於轉換用戶的當前組到指定的組帳號,用戶必須屬於該組才能夠正確執行該命令用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也知道其實就這麼一回事了:
權限的優先順序:
chmod
chown
chgrp
umask
例子:
上面提到了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)能夠在某種程度上保護系統的安全
常見的擴展屬性:
經常使用命令:
lsattr [-adR] [文件|目錄]
chattr [-R] [[-+=][屬性]] <文件|目錄>
用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,你們也能夠去交流交流。謝謝支持了!但願能多介紹給其餘有須要的朋友
文章的目錄導航: