深入了解Linux的文件權限
一、Shell是什么
Shell是操作系統(tǒng)外殼程序的統(tǒng)稱,Windos中的圖形化界面、Linux中的命令行外殼都是外殼程序。CentOS中的外殼程序被稱為bash。
1、Shell承擔用戶和內核間的翻譯工作
Shell是命令行解釋器。
Linux嚴格意義上說的是一個操作系統(tǒng),我們稱之為"核心(Kernel)"。但是用戶和內核溝通的學習成本很高,所以在內核外部有一層Shell外殼程序,將用戶輸入的指令翻譯傳遞給內核,內核處理后,將結果返回給Shell,由Shell向用戶傳達指令的最終結果。
2、拒絕用戶非法請求,保護內核
當用戶輸入非法指令時,shell不會再去詢問內核結果,而是直接拒絕用戶的非法請求。
3、派生子進程執(zhí)行用戶指令
因為Shell是用戶和內核溝通的唯一橋梁,一般Shell不參與指令的執(zhí)行,而是通過派生子進程的方式執(zhí)行用戶的指令。(子進程掛了,但Shell不會受到影響)
二、用戶切換與提權
1、普通用戶與root用戶的切換
su//切換后路徑不變 su -//切換后來到家目錄
普通用戶切換為root用戶需要輸入root密碼,而root用戶切換成普通用戶無需 任何驗證。
2、普通用戶指令短暫提權
sudo whoami
當該用戶被添加至etc/sudoers中,sudo為最近的一條指令提權至root,需要輸入當前普通用戶密碼。
在一次密碼認證過后,接下來的幾分鐘使用sudo提權操作,將無需再次輸入密碼。
為什么sudo提權需要輸入當前用戶的密碼,而不是root密碼呢?這樣做是為某些被信任的用戶,提供最少的執(zhí)行障礙。而不是直接將root的密碼交給員工。
三、文件權限的理解
1、文件權限=角色的權限+文件屬性
對于Linux中的文件權限,有的角色對這個文件有可讀、可寫、可執(zhí)行的權限,而有的角色卻只有可讀權限。這是人的權限。
對于文件的可讀、可寫、可執(zhí)行的屬性,如果一個文件不具備可讀權限,那么角色在訪問文件時,也是沒有可讀權限的。
2、Linux中的三種角色
Linux中有三種角色,分別是擁有者(owner)、所屬組(grouper)、其他人(other),權限限制的不是用戶,而是這個用戶當前所處的角色。
2.1為什么會存在所屬組(grouper)這種角色
舉個例子:現(xiàn)在公司有A、B、C等多個部門使用同一臺Linux的云服務器,每個小組都有各自的小組成員,所以就有了所屬組的概念。把不同的組員放到各自的所屬組中,員工無權限訪問他組文件,防止項目信息互相泄露。
3、drwxrwxr-x代表的意義
3.1第一位字母代表的意義
第一位字母代表的意義是文件的類型。
在windows中,區(qū)分文件類型是通過文件名后綴,而Linux中,文件的類型由第一位字母決定,與文件本身的后綴無關。(Linux中文件后綴作用是幫助用戶快速區(qū)分這個文件的類型或者gcc等工具是需要關注后綴)
- d:目錄文件
- -:普通文件(源代碼、庫文件、可執(zhí)行程序、文檔壓縮包等)
- c:字符設備文件(鍵盤、顯示器等串口設備)
- b:塊設備(硬盤、光驅等)
- l:軟鏈接文件(類似于Windows中的快捷方式)
- p:管道文件
- s:socket套接口文件
3.2后九位代表的意義
后九位三三為一組,分別代表擁有者、所屬組、其他用戶的權限。其中r代表可讀,w代表可寫,x代表可執(zhí)行。-代表不具備該權限。
3.3文件權限的字符修改方法
chmod u-r text.c//將text.c的擁有者減去可讀權限 chmod g+x text.c//將text.c的所屬組加上可執(zhí)行權限 chmod o+rwx text.c//將text.c的其他用戶減去讀、寫、可執(zhí)行權限 chmod u+rx,g-w,o-rwx text.c//可以組合操作權限的增減 chmod a-rwx text.c//對所有角色減去讀、寫、可執(zhí)行權限
只有文件的擁有者和root才能對文件角色的權限進行更改。
root不受角色權限的約束。
3.4角色的更改
sudu chown jly2 text.c//把text.c的擁有者改成jly2 sudo chgrp jly2 text.c//把text.c的所屬組改成jly2 sudo chown jly2:jly2 text.c//把text.c的擁有者、所屬組改成jly2
擁有者、所屬組更改后,other也變了,所以other不用特意改。
3.5文件權限的八進制修改方法
三三為一組,非-位用二進制1填充,-位用0填充,得到角色權限的二進制,在將這些二進制轉化為八進制,即可使用八進制來表達角色的權限。
chmod 000 text.c//用權限的八進制更改text.c的權限
3.6目錄的起始權限及權限掩碼umask
Linux規(guī)定,目錄的起始權限從777開始,普通文件的起始權限從666開始。
[jly@VM-4-11-centos text]$ umask 0002//第一位不管,系統(tǒng)會默認配置好權限掩碼為002,即000 000 010
凡是在umask中出現(xiàn)的權限,必須在起始權限中去掉,即最終權限=起始權限&(~umask)。
所以,我們創(chuàng)建出來的目錄的權限是775(rwx rwx r-x),普通文件的權限是664(rw- rw- r--)。
umask 0444//更改umask的值,即100 100 100
修改后創(chuàng)建出來的目錄權限變?yōu)?33,普通文件權限變?yōu)?22。
4、目錄的權限
目錄的r權限:能否查看目錄中的文件。
目錄的w權限:能否在目錄中創(chuàng)建文件。
目錄的x權限:能否進入、執(zhí)行目錄中的文件
所以,目錄的起始權限從777開始,是因為所有角色都需要x權限進入目錄。
四、粘滯位(公共目錄使用)
Linux系統(tǒng)中有很多人,我們需要在一個公共的目錄下,進行臨時文件的操作(增刪查改)。這個公共目錄由root來創(chuàng)建。
在這個公共目錄中,通過文件自身的權限來約束不同的角色,但是無法阻止其他用戶私自刪除這些文件。因為在目錄中刪除一個文件,與這個文件本身無關,與它所處的目錄的權限有關。
這個公共目錄的擁有者和所屬組是root,粘滯位會限制other的權限。
chmod +t /mytmp //在/目錄下的mytmp目錄中加上粘滯位
drwxrwxrwx
drwxrwxrwt
加上粘滯位后,該公共目錄的other的x權限變?yōu)閠,也就是該目錄下other的可執(zhí)行權限變?yōu)檎硿?,其他用戶無權刪除不屬于他的文件。
五、權限總結
1、目錄的可執(zhí)行權限是表示你可否在目錄下執(zhí)行命令。
2、如果目錄沒有-x權限,則無法對目錄執(zhí)行任何命令,甚至無法cd進入目錄, 即使目錄仍然有-r 讀權限(這個地方很容易犯錯,認為有讀權限就可以進入目錄讀取目錄下的文件)
3、如果目錄具有-x權限,但沒有-r權限,則用戶可以執(zhí)行命令,可以cd進入目錄。但由于沒有目錄的讀權限,所以在目錄下,即使可以執(zhí)行l(wèi)s命令,但仍然沒有權限讀出目錄下的文檔。
到此這篇關于深入了解Linux的文件權限的文章就介紹到這了,更多相關Linux文件權限內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Linux中atime,mtime,ctime的使用場景
這篇文章主要介紹了Linux的三個時間atime,mtime,ctime詳細說明與使用場景,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起了解一下2022-10-10shell腳本學習指南[六](Arnold Robbins & Nelson H
這篇文章主要介紹了shell腳本學習指南[六](Arnold Robbins & Nelson H.F. Beebe著),需要的朋友可以參考下2014-02-02Shell中創(chuàng)建序列和數(shù)組(list、array)的方法
這篇文章主要介紹了Shell中創(chuàng)建序列和數(shù)組(list、array)的方法,本文講解了seq方法生成以及通過內部{begin..end}生成法,需要的朋友可以參考下2015-07-07