這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)怎樣搞懂Linux權(quán)限體系,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務(wù)至上”的服務(wù)理念,堅持“二合一”的優(yōu)良服務(wù)模式,真誠服務(wù)每家企業(yè),認真做好每個細節(jié),不斷完善自我,成就企業(yè),實現(xiàn)共贏。行業(yè)涉及假山制作等,在網(wǎng)站建設(shè)、全網(wǎng)整合營銷推廣、WAP手機網(wǎng)站、VI設(shè)計、軟件開發(fā)等項目上具有豐富的設(shè)計經(jīng)驗。
隨著年齡的增加,我的經(jīng)驗越來越豐富,而記憶力卻越來越差。為了應(yīng)付繁重的日常事務(wù),我不得不準備了長長的任務(wù)清單。每一條事項的背后,都在不斷的提醒我:無論生活中充滿什么驚喜,還是逃離不了它平庸的本質(zhì)。
而我對時間,會更加的敏感。每次一次敲擊鍵盤,都會調(diào)動骨關(guān)節(jié)的扭動,留下一洗不可撤回的痕跡:windows的超級用戶,名字叫做Administrator。這個單詞太長了,我總也記不住。相對來說,linux的超級用戶叫做root,只有四個字母。它的耗能值,比前者要低的多。
我們在第三小節(jié),剛接觸命令行的時候,就使用chmod命令,給普通文本文件,賦予了執(zhí)行權(quán)限。本小節(jié)將看一下用戶權(quán)限和文件權(quán)限這兩個息息相關(guān)的概念,
1、添加用戶
到現(xiàn)在為止,我們的系統(tǒng)中,還孤零零的只有這一個用戶,是時候?qū)W學女媧,捏幾個小泥人了。
首先創(chuàng)建兩個用戶:張三(zhang3)、李四(li4)。
[root@localhost ~]# useradd zhang3
查看下面命令的三個輸出結(jié)果。
# 系統(tǒng)中多了一個叫做zhang3的組,group文件保存了系統(tǒng)的組信息 [root@localhost ~]# tail -n1 /etc/group zhang3:x:1000: # 系統(tǒng)中多了一個叫做zhang3的用戶,shadow文件保存了它們的密碼。很多安全滲透就是為了拿到它進行暴力破解 [root@localhost ~]# tail -n1 /etc/shadow zhang3:!!:18207:0:99999:7::: # home目錄中,多了一個叫做zhang3的目錄 [root@localhost ~]# ll /home --full-time total 0 drwx------. 2 zhang3 zhang3 83 2019-11-06 22:09:33.357165082 -0500 zhang3
接下來,給我們剛剛建立的用戶,使用passwd設(shè)置一個密碼。密碼需要輸入兩次進行確認。如果想要更改密碼,可以使用chpasswd命令。
[root@localhost ~]# passwd zhang3 Changing password for user zhang3. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully.
那么如何刪除一個現(xiàn)有的用戶呢?這是通過userdel命令實現(xiàn)的。加上參數(shù)f,會在其他用戶使用系統(tǒng)的時候,強制退出。
userdel -f zhang3
2、文件權(quán)限說明
從上面的命令執(zhí)行結(jié)果中,我們發(fā)現(xiàn)了有兩件非常有意思的東西。添加用戶后,除了在密碼文件shadow中增加了一些內(nèi)容,同時還在group文件中添加了信息。這涉及到用戶的兩個屬性:用戶名,組名。
一個用戶只有一個名稱代號,但是可以有多個組。下面命令創(chuàng)建一個密碼為123的用戶li4,并給它追加一個叫做zhang3的組??梢钥吹?etc/group文件中的信息變更。
[root@localhost ~]# useradd -G zhang3 -p 123 li4 [root@localhost ~]# tail -n 2 /etc/group zhang3:x:1000:li4 li4:x:1001:
好啦,接下來切換到我們的文件權(quán)限上面。為了進行下面命令的驗證,我們首先創(chuàng)建一個名字叫confirm777.sh的腳本文件。為了讓腳本對所有用戶可見,我們把它創(chuàng)建在/tmp目錄下。
cat > /tmp/confirm777.sh <使用ll命令查看文件信息。
[root@localhost ~]# ll /tmp/confirm777.sh --full-time -rw-r--r--. 1 root root 13 2019-11-07 04:25:55.418254935 -0500 confirm777.sh從ll的命令可以看出,文件的所有者是root用戶,文件所屬的組,也是root組,它的權(quán)限是rw-r--r--。文件權(quán)限分為三部分。
所有者權(quán)限,縮寫為u。文件的所有者所擁有的權(quán)限。也就是root用戶的權(quán)限,是rw-
組用戶權(quán)限,縮寫為g。文件所屬組內(nèi)所有用戶的權(quán)限。因為root組內(nèi)只有root一個用戶,所以組用戶權(quán)限是r--。
其他用戶權(quán)限,縮寫為o。其他不相關(guān)用戶的權(quán)限,比如我們剛創(chuàng)建的zhang3、li4用戶,對文件的權(quán)限就是r--。
全部,縮寫為a,表示對上面三類用戶集體操作。
那rw-這些東西是什么意思呢?
r 表示可讀權(quán)限。read。
w 表示可寫權(quán)限。write。
x 表示可執(zhí)行權(quán)限。execute。
- 權(quán)限占位符,表示沒有當前權(quán)限。
注意:一個用戶擁有文件的w權(quán)限,并不代表就可以刪除文件。w僅僅針對于文件內(nèi)容來說的。
一個文件,有3類用戶,每類用戶,有3種權(quán)限。使用最簡單的小學乘法,我們能夠得出,一個文件的權(quán)限位,需要3x3=9個標志位表示。
我們的文件名稱,叫做confirm777.sh,這個名字是隨便起的么?當然不是,777在linux代表特殊的含義,它代表文件對所有用戶具有可讀、可寫、可執(zhí)行的權(quán)限。可以想象,如果每個文件都有這樣的權(quán)限,系統(tǒng)將無安全可言。那這一串數(shù)字是怎么來的呢?可以看下面的對照表。
r 4 讀
w 2 寫
x 1 執(zhí)行
對以上三個屬性進行任意組合,可以得到:
4 r-- 4+0+0
6 rw- 4+2+0
5 r-x 4+0+1
2 -w- 0+2+0
3 -wx 0+2+1
1 --x 0+0+1
7 rwx 4+2+1
3、文件權(quán)限更改
下面介紹三個文件權(quán)限相關(guān)的命令。一般常用的,就是chown和chmod。
chown 更改文件的所有者。chgrp 更改文件的組。chmod 更改文件權(quán)限。
接下來,我們把confirm777.sh的所有者和組,修改成剛剛創(chuàng)建的用戶zhang3。
cd /tmp [root@localhost tmp]# chown zhang3:zhang3 confirm777.sh [root@localhost tmp]# ll confirm777.sh -rw-r--r--. 1 zhang3 zhang3 13 Nov 7 04:25 confirm777.sh給文件所有者增加執(zhí)行權(quán)限。然后分別切換到zhang3,li4用戶執(zhí)行一下。
通過su 命令,可以切換到其他用戶,一般使用su -進行環(huán)境變量的清理;而命令id,能夠看到當前正在執(zhí)行的用戶信息。
[root@localhost tmp]# chmod u+x confirm777.sh [root@localhost tmp]# su li4 [li4@localhost tmp]$ ./confirm777.sh bash: ./confirm777.sh: Permission denied [li4@localhost tmp]$ exit exit [root@localhost tmp]# su zhang3 [zhang3@localhost tmp]$ ./confirm777.sh root uid=1000(zhang3) gid=1000(zhang3) groups=1000(zhang3) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023可以看到,文件所有者zhang3可以執(zhí)行文件,但不相關(guān)的li4,提示沒有權(quán)限。接下來,我們驗證用戶組相關(guān)的權(quán)限位。
# 去掉zhang3的執(zhí)行權(quán)限 root@localhost tmp]# chmod u-x confirm777.sh [root@localhost tmp]# ll confirm777.sh -rw-r--r--. 1 zhang3 zhang3 13 Nov 7 04:25 confirm777.sh # 增加zhang3組的執(zhí)行權(quán)限,由于li4在zhang3組里,它擁有權(quán)限 [root@localhost tmp]# chmod g+x confirm777.sh [root@localhost tmp]# ll confirm777.sh -rw-r-xr--. 1 zhang3 zhang3 13 Nov 7 04:25 confirm777.sh # 切換到zhang3進行執(zhí)行 [root@localhost tmp]# su - zhang3 [zhang3@localhost tmp]$ ./confirm777.sh bash: ./confirm777.sh: Permission denied [zhang3@localhost tmp]$ exit exit # 切換到li4進行執(zhí)行 [root@localhost tmp]# su - li4 [li4@localhost tmp]$ ./confirm777.sh root uid=1001(li4) gid=1001(li4) groups=1001(li4),1000(zhang3) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023從命令的執(zhí)行結(jié)果可以看出。這次,li4能夠執(zhí)行文件,相反的,zhang3卻不能。
我們使用chmod命令來修改文件權(quán)限,使用的是類似于a+x這樣的英文字母。拿第一個腳本來說,初始的權(quán)限是rw-r--r--,也就是644,在這種情況下,下面的兩個腳本等效。
chmod u+x confirm777.sh chmod 744 confirm777.sh可以看到,第二個命令,使用的是數(shù)字樣式的權(quán)限位,多了一步人腦轉(zhuǎn)換過程。這在日常的使用中,是非常不方便的。所以,使用符號法的表示方式,能夠更加直觀,非常推薦。
為了更直觀的表現(xiàn)這個過程,我專門制作了一張圖。
4、目錄權(quán)限
這里有一個非常有意思的地方。把文件設(shè)置成可執(zhí)行,可以把普通文件變成腳本,目錄文件的可執(zhí)行權(quán)限是什么鬼?有什么意義?對文件夾來說:
r 表示允許讀取目錄中的文件名,但不能進入該目錄
w 表示允許用戶修改目錄,可以創(chuàng)建、遷移、刪除、更名目錄下的文件
x 可以獲得目錄下文件的列表,以及進入目錄,執(zhí)行cd命令
關(guān)于r和x的區(qū)別,可以看下面的命令結(jié)果,仔細感受一下它們的區(qū)別。一般的,幾乎所有的目錄,都擁有執(zhí)行權(quán)限,不要隨意對其進行設(shè)置。
[root@localhost tmp]# su - li4 [li4@localhost ~]$ cd /tmp [li4@localhost tmp]$ mkdir nox [li4@localhost tmp]$ touch nox/{a,b,c,d} [li4@localhost tmp]$ chmod a-x nox [li4@localhost tmp]$ ls nox ls: cannot access nox/a: Permission denied ls: cannot access nox/b: Permission denied ls: cannot access nox/c: Permission denied ls: cannot access nox/d: Permission denied a b c d [li4@localhost tmp]$ cat nox/a cat: nox/a: Permission denied [li4@localhost tmp]$ chmod a+x nox [li4@localhost tmp]$ chmod a-r nox [li4@localhost tmp]$ ls nox ls: cannot open directory nox: Permission denied5、sticky bit
接下來,我們介紹一個比較燒腦的粘貼位。
假如你要刪除一個文件,你可以沒有這個文件的寫權(quán)限,但是你必須要擁有這個文件上級目錄的寫權(quán)限。如何創(chuàng)建一個目錄,可以讓任何人些人文件,但是又不能刪除其他用戶的文件?這就是stick bit的作用。粘貼位一般只用于目錄上,對文件來說并沒有什么用處。粘貼位一般使用t表示。
我們可以看一個典型的目錄/tmp
[root@localhost tmp]# ls -dl /tmp drwxrwxrwt. 9 root root 4096 Nov 7 06:27 /tmp可以看到,最后一位,顯示的是t,而不是x,意思是普通用戶不能刪除其他用戶的文件。所有用戶在/tmp目錄中,都可以隨意創(chuàng)建文件,但是卻刪除不了其他人的文件,即使文件的權(quán)限是777。
[root@localhost tmp]# touch /tmp/stick [root@localhost tmp]# chown li4:li4 /tmp/stick [root@localhost tmp]# chmod 777 /tmp/stick [root@localhost tmp]# su - zhang3 [zhang3@localhost ~]$ rm /tmp/stick rm: cannot remove ‘/tmp/stick’: Operation not permitted6、小結(jié)
本小節(jié)創(chuàng)建了兩個用戶zhang3和li4,并拿它們測試了chown和chmod命令,最后介紹了粘貼位。linux比較安全的原因,就是因為有比較詳盡的權(quán)限劃分。但權(quán)限是枚雙刃劍,超權(quán)用戶一個命令就可以搞垮系統(tǒng),許多隱藏的木馬,通過提權(quán)運行在不為人知的地方。
權(quán)限相關(guān)的幾個命令會經(jīng)常被使用,下面舉幾個例子。
# 設(shè)置/var/lib/MySQL的用戶和組為mysql chown -R mysql:mysql /var/lib/mysql # 設(shè)置目錄可讀可寫,能夠上傳文件 chmod 777 /var/www/uploads # 增加本目錄下所有sh的執(zhí)行權(quán)限 chomd a+x *.sh # 變更file為可讀可寫可執(zhí)行 chmod u=rwx,g=rwx,o=rwx file7、思考&擴展
1、下面這個命令,執(zhí)行以后,會發(fā)生什么情況?警告:不要執(zhí)行,哪怕把000改成其他數(shù)字。
# R遍歷子目錄的意思 chmod -R 000 /2、有一天,我看到一個命令chmod u+s file,文中并沒有介紹s是什么意思,這是什么意思?
3、如何刪除一個用戶的組?
EndLinux系統(tǒng)的命令是十分枯燥的。本系列不知不覺已經(jīng)持續(xù)了8個周。和預(yù)想的一樣,它并未取得廣泛的歡迎,從它和其他文章迥然的閱讀量就可以看出--標題就讓人失去了點擊的欲望。
技術(shù)類文章完全不同于扯淡型的天馬行空,耗費的精力也是巨大的,尤其對我一個對正確性有強迫癥的人來說。有時候,我會產(chǎn)生迷茫。不知道這依靠興趣支撐的輸出,能夠持續(xù)多久。
能夠翻到結(jié)尾,翻到這里的朋友,xjjdog非常感謝。還有幾篇就要結(jié)束了,加上以前關(guān)于Linux的一些文章,已經(jīng)可以成為一個體系了。如果你跟蹤至此,至少已經(jīng)可以在平常的工作中游刃有余了。
xjjdog接下來會找一些讓人歡迎的主題,而不是這么枯燥的知識點。畢竟,有的時候,人家畢竟還是個可愛的女孩紙嘛。
上述就是小編為大家分享的怎樣搞懂Linux權(quán)限體系了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章名稱:怎樣搞懂Linux權(quán)限體系
轉(zhuǎn)載注明:http://weahome.cn/article/jshhgj.html