前言
只有光頭才能變強
回顧前面:
沒想到上一篇能在知乎獲得千贊呀,Linux也快期末考試了,也有半個月沒有寫文章了。這篇主要將Linux下的用戶和權(quán)限知識點再整理一下。
那么接下來就開始吧子漩,如果文章有錯誤的地方請大家多多包涵讲衫,不吝在評論區(qū)指正哦~
一挥吵、Linux下的用戶
Linux是一個多用戶的系統(tǒng),我們可以多個用戶同時登陸Linux~
- 賬戶實質(zhì)上就是一個用戶在系統(tǒng)上的標識。
Linux中的賬戶包括
-
用戶賬戶
- 普通用戶賬戶:在系統(tǒng)上的任務(wù)是進行普通工作
- 超級用戶賬戶(或管理員賬戶):在系統(tǒng)上的任務(wù)是對普通用戶和整個系統(tǒng)進行管理。
-
組賬戶(組是用戶的集合)
- 標準組:標準組可以容納多個用戶
- 私有組:私有組中只有用戶自己
當一個用戶同屬于多個組時,將這些組分為
- 主組(初始組):用戶登錄系統(tǒng)時的組。
- 附加組:登錄后可切換的其他組
上面也說了食零,賬戶的實質(zhì)上就是用戶在系統(tǒng)上的標識迁霎,這些標識是用文件保存起來的:
- 用戶名和 UID 被保存在
/etc/passwd
文件中频伤,文件權(quán)限(-rw-r--r--)
- 組和GID 被保存在
/etc/group
文件中婚苹,文件權(quán)限(-r--------)
- 用戶口令(密碼)被保存在
/etc/shadow
文件中 怎炊,文件權(quán)限(-rw-r--r-- )
- 組口令被保存在
/etc/gshadow
文件中 ,文件權(quán)限(-r--------)
也就是說:我們創(chuàng)建的用戶,這個用戶的信息由不同的文件來保存著俄占。
有了上面的知識點甚带,下面我來簡述一下創(chuàng)建用戶的時候會發(fā)生什么:
- 用戶名和 UID 被保存在
/etc/passwd
這個文件中畜晰,用戶的口令通常用shadow passwords
保護 - 當用戶登錄時腊瑟,他們被分配了一個主目錄和一個運行的程序(通常是 shell)
- 若沒有指定他所屬于的組峭范,RHEL/CentOS就建立一個和該用戶同名的私有組,且用戶被分配到這個私有組中
再來回顧一下:賬戶的實質(zhì)上就是用戶在系統(tǒng)上的標識,這些標識是用文件保存起來的。也就是說:我們是可以直接編輯修改系統(tǒng)賬戶文件來維護賬戶。
- 但是不建議這樣做藐不,如果明確要這樣做的話棉安,最好使用命令檢測一下你編輯的語法是否有問題:
-
pwck
:驗證用戶賬號文件鹊汛,認證信息的完整性滥嘴。該命令檢測文件“/etc/passwd”
和“/etc/shadow”
的每行中字段的格式和值是否正確 -
grpck
:驗證組賬號文件尘颓,認證信息的完整性。該命令檢測文件“/etc/group”
和“/etc/gshadow”
的每行中字段的格式和值是否正確惫皱。
-
既然不建議我們直接編輯文件的方式來管理用戶缝裁,那么Linux是肯定有現(xiàn)成的命令給我們使用的:
1.1管理Linux用戶的命令
用戶管理:
useradd
usermod
userdel
組管理:
groupadd
groupmod
groupdel
批量管理用戶:
- 成批添加/更新一組賬戶:
newusers
- 成批更新用戶的口令:
chpasswd
組成員管理:
- 向標準組中添加用戶
gpasswd -a <用戶賬號名> <組賬號名>
usermod -G <組賬號名> <用戶賬號名>
- 從標準組中刪除用戶
gpasswd -d <用戶賬號名> <組賬號名>
口令維護(禁用、恢復(fù)和刪除用戶口令):
-
設(shè)置用戶口令:
passwd [<用戶賬號名>]
- 禁用用戶賬戶口令
passwd -l <用戶賬號名>
- 查看用戶賬戶口令狀態(tài)
passwd -S <用戶賬號名>
- 恢復(fù)用戶賬戶口令
passwd -u <用戶賬號名>
- 清除用戶賬戶口令
passwd -d <用戶賬號名>
口令時效設(shè)置:
- 修改
/etc/login.defs
的相關(guān)配置參數(shù)
設(shè)置已存在用戶的口令時效:
-
chage
命令
用戶切換命令:
-
su
- 直接切換為超級用戶
-
sudo
- 直接使用 sudo 命令前綴執(zhí)行系統(tǒng)管理命令。執(zhí)行系統(tǒng)管理命令時無需知道超級用戶的口令进苍,使用普通用戶自己的口令即可
更多資料查詢:
- https://www.cnblogs.com/slgkaifa/p/6852884.html--linux權(quán)限之su和sudo的差別
用戶相關(guān)的命令:
-
id
:顯示用戶當前的uid加缘、gid和用戶所屬的組列表 -
groups
:顯示指定用戶所屬的組列表 -
whoami
:顯示當前用戶的名稱 -
w/who
:顯示登錄用戶及相關(guān)信息 -
newgrp
:用于轉(zhuǎn)換用戶的當前組到指定的組賬號,用戶必須屬于該組才可以正確執(zhí)行該命令
1.2Linux用戶的練習(xí)題
用cat命令觉啊,觀察如下文件:/etc/passwd , /etc/shadow, /etc/group,/etc/gshadow;顯示useradd命令添加用戶參數(shù)的默認值
建立linux賬戶jkXX(XX為學(xué)生學(xué)號末兩位)杠人,要求用戶組為users勋乾,并設(shè)置密碼;觀察/etc/passwd和/etc/shadow文件的變化嗡善;退出root賬戶辑莫,用jkXX賬戶登錄,在其主目錄下建立一個myfirst文件罩引,并用長格式列出myfirst文件
用root賬戶登錄各吨;添加組jsj;設(shè)置用戶jkXX為jsj組用戶袁铐,觀察/etc/passwd揭蜒、/etc/group和/etc/gshadow文件變化
添加一個新用戶airXX(XX為學(xué)生學(xué)號末兩位),觀察新用戶airXX的用戶id和組id昭躺;然后刪除該用戶忌锯,注意不要在命令中加選項,觀察用戶文件和組文件的變化领炫;觀察airXX用戶的目錄是否存在偶垮;
shadow文件中密碼為*號和!帝洪!代表什么似舵?
答:*
代表賬戶禁用;4邢俊砚哗!
代表密碼鎖定。
airXX用戶組id是多少砰奕?這個組是什么類型的組蛛芥?這樣做有什么好處提鸟?
答:air08用戶組id是501,這個組屬于私有組仅淑。每個未指定組的用戶會建立一個同名的組称勋,這樣的組稱為私有組,只有一個用戶涯竟,既有利于防止信息泄露赡鲜,也也有利于防止不合理的授權(quán)÷總之银酬,有利于安全管理。
默認情況下刪除用戶筐钟,但卻保留了用戶的主目錄揩瞪,這樣做有什么好處?
答:保留用戶目錄盗棵,防止將用戶目錄下有價值的資料誤刪除壮韭。
用cat命令北发,觀察文件/etc/passwd纹因;仿照passwd文件的格式,用vi編輯一個新的文件琳拨,文件名為userXX(XX為學(xué)生學(xué)號末兩位)瞭恰,文件包括3條記錄,用戶名分別為jkXX(XX為學(xué)生學(xué)號末兩位)狱庇,peter惊畏,jason,他們的用戶id大于1000密任,組id大于1000颜启,要求peter和jason同組;用命令newusers根據(jù)文件userXX的內(nèi)容批量生成用戶浪讳;觀察/etc/passwd文件的變化缰盏。
用cat命令,觀察文件/etc/shadow淹遵;用vi編輯一個新文件口猜,文件名為mimaXX(XX為學(xué)生學(xué)號末兩位),文件包括3條記錄透揣,每條記錄用戶名與上一步驟要求相同济炎,密碼自行設(shè)置,用戶名和密碼用冒號:隔開辐真;用命令chpasswd根據(jù)文件mimaXX的內(nèi)容批量生成密碼须尚;觀察文件/etc/shadow變化崖堤;用命令chpasswd -m再次批量生成密碼,觀察文件/etc/shadow變化耐床;
退出root賬戶倘感,用jkXX賬戶登錄。退出jkXX賬戶咙咽,返回root賬戶老玛,觀察/etc/shadow文件;用passwd命令鎖定用戶jkXX,觀察/etc/shadow文件變化钧敞;然后退出root賬戶蜡豹,用jkXX賬戶登錄,是否成功溉苛?
用chage命令查看peter賬戶的時間設(shè)置镜廉;重新設(shè)置peter賬戶的時間,要求兩天內(nèi)不能更改口令愚战,且口令最長的存活期為 90 天娇唯,并在口令過期前 5 天通知用戶,口令超期7天密碼失效寂玲;用chage命令再次查看peter賬戶的時間設(shè)置
用root賬戶登錄塔插;用su切換到j(luò)ason賬戶;用cd進入用戶主目錄拓哟;創(chuàng)建一個新文件abc想许,用長格式列出abc文件;觀察文件的用戶和組的屬性
鎖定賬戶后断序,shadow文件發(fā)生了什么變化流纹?
答:鎖定賬戶的密碼之前會鎖定標志!违诗!
用su切換用戶后漱凝,建立的新文件文件屬于哪個用戶?
答:新文件屬于切換之后的用戶诸迟。
兩次執(zhí)行chpasswd命令茸炒,結(jié)果是否相同宇挫?加密算法md5和sha512哪個更安全干花?
答:兩次執(zhí)行chpasswd命令結(jié)果不同,默認情況采用sha512加密算法流强;-m選項時慎玖,采用md5加密算法贮尖;sha512更安全,因為加密信息長度更長趁怔,破解計算量大湿硝。
建立三個普通用戶賬戶薪前,要求如下:用戶名分別為jkXX(XX為學(xué)生學(xué)號末兩位),peter关斜,jason示括,其中jkXX和jason為相同普通組成員;觀察/etc/passwd文件的變化痢畜。為jkXX賬戶添加root組垛膝;
分別練習(xí)id,groups丁稀,whoami吼拥,who命令,顯示當前賬戶的信息线衫;用su命令切換到j(luò)kXX賬戶凿可,分別練習(xí)id,groups授账,whoami枯跑,who命令,顯示當前賬戶的信息白热。用newgrp切換jkXX賬戶的組敛助,分別練習(xí)id,groups棘捣,whoami辜腺,who命令,顯示當前賬戶的信息
二乍恐、權(quán)限管理
Linux是多用戶的操作系統(tǒng),允許多個用戶同時在系統(tǒng)上登錄和工作测砂。 為了確保系統(tǒng)和用戶的安全茵烈,Linux自然就有自己一套的權(quán)限管理機制了!
相信用過Linux的同學(xué)在檢索文件夾文件的時候常常用到ls -l
的命令砌些,會出來一大串的數(shù)據(jù)呜投。這些數(shù)據(jù)你能讀懂了嗎?
例如:
drwxr-xr-x 3 osmond osmond 4096 05-16 13:32 nobp
其實很簡單:
其實我們看權(quán)限就是看drwxr-xr-x
這么一串東西存璃,看起來很復(fù)雜仑荐,但不是的,一下就可以理解了纵东。我們來分解一下:
這9個字符每3個一組粘招,組成 3 套 權(quán)限控制
- 第一套控制文件所有者的訪問權(quán)限
- 第二套控制所有者所在用戶組的其他成員的訪問權(quán)限
- 第三套控制系統(tǒng)其他用戶的訪問權(quán)限
rwx分別代表的意思:
看到這里來,如果前面的你看懂了偎球,那drwxr-xr-x
這么一串東西我覺得你很容易就能理解了:
- d是文件夾洒扎,后面還有9個字母辑甜,每3個分成一組,
-
號表示沒有袍冷。那么這個文件夾的權(quán)限就是:- 對當前用戶是可讀可寫可執(zhí)行磷醋,對同組的用戶是可讀可執(zhí)行,對其他的用戶是可讀可執(zhí)行
是不是很簡單胡诗?邓线?r-read,w-write,x-execute
,很好理解的煌恢。
對于這些rwx命令為了方便還可以換成八進制的數(shù)據(jù)來表示褂痰,我相信大家看完下面的demo也知道其實就這么一回事了:
權(quán)限的優(yōu)先順序:
- 如果UID匹配,就應(yīng)用用戶屬主(user)權(quán)限
- 否則症虑,如果GID匹配缩歪,就應(yīng)用組(group)權(quán)限
- 如果都不匹配,就應(yīng)用其它用戶(other)權(quán)限
- 超級用戶root具有一切權(quán)限谍憔,無需特殊說明
2.1管理Linux權(quán)限的常用命令
-
chmod
- 改變文件或目錄的權(quán)限
-
chown
- 改變文件或目錄的屬主(所有者)
-
chgrp
- 改變文件或目錄所屬的組
-
umask
- 設(shè)置文件的缺省生成掩碼
例子:
2.2權(quán)限擴展知識
上面提到了umask屬性匪蝙,它用來做這樣的東西的:默認生成掩碼告訴系統(tǒng)當創(chuàng)建一個文件或目錄時不應(yīng)該賦予其哪些權(quán)限。
- 默認的umask的值是022习贫,我們看一下下面的例子應(yīng)該就能懂了:
除了上面所說的權(quán)限之外逛球,Linux還提供了三種特殊的權(quán)限:
- SUID:使用命令的所屬用戶的權(quán)限來運行,而不是命令執(zhí)行者的權(quán)限
- SGID:使用命令的組權(quán)限來運行苫昌。
- 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權(quán)限祟身。-rwsr-xr-x 1 root root 23420 2010-08-11 /usr/bin/passwd
它就擁有SUID權(quán)限
SUID奥务,SGID,sticky-bit同樣也有數(shù)字的表示法:
使用的例子:
Linux內(nèi)核中有大量安全特征袜硫。EXT2/3/4文件系統(tǒng)的擴展屬性(Extended Attributes)可以在某種程度上保護系統(tǒng)的安全
常見的擴展屬性:
- A(Atime):告訴系統(tǒng)不要修改對這個文件的最后訪問時間氯葬。
- 使用A屬性可以提高一定的性能。
- S(Sync):一旦應(yīng)用程序?qū)@個文件執(zhí)行了寫操作婉陷,使系統(tǒng)立刻把修改的結(jié)果寫到磁盤帚称。
- 使用S屬性能夠最大限度的保障文件的完整性。
- a(Append Only):系統(tǒng)只允許在這個文件之后追加數(shù)據(jù)秽澳,不允許任何進程覆蓋或者截斷這個文件闯睹。如果目錄具有這個屬性,系統(tǒng)將 只允許在這個目錄下建立和修改文件担神,而不允許刪除任何文件楼吃。
- i(Immutable):系統(tǒng)不允許對這個文件進行任何的修改。如果目錄具有這個屬性,那么任何的進程只能修改目錄之下的文件所刀,不允許建立和刪除文件衙荐。
- a屬性和i屬性對于提高文件系統(tǒng)的安全性和保障文件系統(tǒng)的完整性有很大的好處。
常用命令:
- 顯示擴展屬性:
lsattr [-adR] [文件|目錄]
- 修改擴展屬性:
chattr [-R] [[-+=][屬性]] <文件|目錄>
2.3權(quán)限管理練習(xí)題
用root賬戶登錄浮创,創(chuàng)建一個文件aaaXX(XX為學(xué)生學(xué)號末兩位)忧吟,用長格式查看文件權(quán)限;用chmod命令斩披,文字設(shè)定法溜族,給aaaXX文件同組增加寫屬性,觀察結(jié)果垦沉;用chmod命令煌抒,數(shù)字設(shè)定法,給aaaXX文件設(shè)置權(quán)限為766厕倍,觀察結(jié)果寡壮;
切換到peter賬戶,查看當前umask是多少讹弯,觀察結(jié)果况既;創(chuàng)建一個目錄foldXX(XX為學(xué)生學(xué)號末兩位),查看其權(quán)限组民;創(chuàng)建一個新文件bbb棒仍,查看其權(quán)限;改變unmask為066臭胜,創(chuàng)建一個新文件ccc莫其,查看其權(quán)限
切換到j(luò)kXX賬戶;創(chuàng)建一個文件myfile耸三,觀察其屬性乱陡;用chgrp改變文件myfile組屬性為root;試著去改變文件myfile主屬性為root吕晌,可以嗎蛋褥?切換到root賬戶,改變文件myfile主屬性為root睛驳,觀察結(jié)果
數(shù)字設(shè)定766代表文件權(quán)限是什么?
答:766代表文件權(quán)限為rwx-rw-rw-
為什么用jkXX賬戶改變文件myfile的屬主失斈だ取乏沸?
答:因為chown只有root賬戶才可以使用
Umask為022和066對新創(chuàng)建的文件屬性影響一樣嗎?為什么爪瓜?
答:影響當然不一樣蹬跃,umask定義的是默認不應(yīng)該獲得的權(quán)限,066比022轉(zhuǎn)換成為二進制數(shù)后,多了兩個限制比特位蝶缀。
以root賬戶登錄丹喻,復(fù)制/usr/bin/dir文件到用戶主目錄,用長格式列出翁都,設(shè)置文件的suid和sguid為1,用長格式列出碍论;切換帳號為jkXX,運行復(fù)制過來的文件dir(注意運行當前路徑下的文件要帶上路徑柄慰,例如./dir)鳍悠;
切換到j(luò)kXX賬戶,進入/tmp目錄坐搔,建立文件夾myfold藏研,設(shè)置文件夾myfold權(quán)限為777,并且sgid和sticky-bit為1概行,用長格式列出蠢挡,觀察myfold的屬性;進入myfold凳忙,創(chuàng)建新文件aaa业踏,設(shè)置屬性為任何人可讀可寫,用長格式列出消略;切換到j(luò)ason賬戶堡称,進入/tmp/myfold目錄,刪除aaa文件艺演,是否可以刪除却紧?
root賬戶,進入用戶主目錄胎撤;創(chuàng)建一個文件bbb文件晓殊,查看文件的擴展屬性;給文件bbb添加擴展屬性i伤提,然后試著刪除該文件巫俺,是否成功,怎樣才能刪除肿男;創(chuàng)建一個ccc文件介汹,給文件ccc添加擴展屬性a,用長格式列表/bin目錄并重定向輸出到ccc文件舶沛,觀察ccc文件長度的變化嘹承,用長格式列表/etc目錄,并重定向輸出到ccc文件如庭,是否成功
切換到j(luò)kXX賬戶叹卷,在/tmp目錄下創(chuàng)建一個目錄myshare,用getfacl查看myshare目錄文件訪問控制表;設(shè)置myshare文件夾對于jason用戶權(quán)限為rwx骤竹,查看文件訪問控制表的變化帝牡;切換到j(luò)ason賬戶,進入myshare文件創(chuàng)建文件yyy蒙揣,是否成功靶溜;切換到peter賬戶,進入myshare文件創(chuàng)建文件zzz鸣奔,是否成功墨技,為什么?
myfold目錄下挎狸,為什么jason賬戶不能刪除一個任何人都可讀可寫的文件扣汪?
答:因為文件所在的文件夾myfold被它的所屬者jk08設(shè)置了stickybit位,該文件夾下面的所有文件锨匆,只有文件所屬者崭别,以及root用戶才能刪除。
為什么peter賬戶在在myshare文件夾里面不能創(chuàng)建文件恐锣?
答:因為myshare文件夾茅主,屬于jk08用戶,只有jk08對該目錄具備rwx權(quán)限土榴。此外诀姚,采用facl的方式,給jason用戶開放了該目錄的rwx訪問權(quán)限玷禽;peter既不是文件夾的擁有者赫段,也沒有在facl中開放rwx權(quán)限;依據(jù)權(quán)限設(shè)置情況矢赁,peter只有該文件夾的rx權(quán)限糯笙。因此,不能創(chuàng)建文件撩银。
添加擴展屬性a后给涕,用重定向?qū)⑤敵鰞?nèi)容給ccc文件,可能會失敗额获,怎樣才能輸出成功够庙?
答:應(yīng)該采用追加方式的重定向>>,可以在文件末尾添加內(nèi)容抄邀,這樣才符合文件擴展屬性a的安全規(guī)定首启。
三、總結(jié)
本文主要是總結(jié)了Linux下操作用戶和權(quán)限的知識~~這兩個知識點在Linux下也是很重要的撤摸,是學(xué)習(xí)Linux的基礎(chǔ)
繼續(xù)完善上一次的思維導(dǎo)圖:
如果文章有錯的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章准夷,想要獲取更多的Java資源的同學(xué)钥飞,可以關(guān)注微信公眾號:Java3y。為了大家方便衫嵌,剛新建了一下qq群:742919422读宙,大家也可以去交流交流。謝謝支持了楔绞!希望能多介紹給其他有需要的朋友
文章的目錄導(dǎo)航: