Linux權限的概念
Linux下有兩種用戶:超級用戶(root)、普通用戶。
超級用戶:可以再linux系統下做任何事情,不受限制
普通用戶:在linux下做有限的事情。
超級用戶的命令提示符是“#”,普通用戶的命令提示符是“$”。
命令:su [用戶名]
功能:切換用戶。
例如,要從root用戶切換到普通用戶user,則使用 su user。 要從普通用戶user切換到root用戶則使用 su root(root可以省略),此時系統會提示輸入root用戶的口令。如果
是在普通用戶下,切換到root用戶,家目錄還是普通用戶的家目錄,只是身份轉變了。要退回普通用戶,輸入exit指令或者是ctrl + d熱鍵。
如果使用su -則直接重新登錄root用戶,此時的家目錄也是root。
在root用戶下變成其它用戶:
暫時的對一條命令進行提權sudo command:
目前用adduser新建的用戶,沒有辦法執行sudo ,系統不信任你,除非未來將普通用戶添加到系統信任的白名單里。
什么叫做權限?權限就是什么事情允許被你做。1.權限認證的是身份(權限和“人”有關),身份權限認證的時候,其實認證的就是人和身份是否吻合。2.權限也和事物的屬性有關。
文件屬性:
Feb 17 17:24 是文件最近修改或者創建的時間。?d和-是文件的類型,文件的類型在Windows當中是通過文件名后綴來區分的,在Linux系統中文件名后綴沒有直接的意義。
-:普通文件(文本文件、源代碼,還有庫文件、可執行程序在Linux上都是普通文件)
d:目錄文件
b:塊設備文件(跟硬件有關系),最典型的塊設備文件一般在計算機里都叫做磁盤,一般的磁盤文件我們都叫做塊設備文件
因為Linux下一切皆文件, /dev/vdal就是在服務器上用的那個磁盤,當然這個磁盤是虛擬出來的。磁盤在讀取時是整塊進行讀取的。?
c:字符設備文件,在Linux下通常指的是字符設備,這些字符是被最常見的像鍵盤,顯示器文件等。
顯示器設備一般叫做/dev/tty。
當前這里一共有這么多的顯示器文件(未全包含):
這些顯示器文件tty就是終端的意思,?為什么鍵盤、顯示器叫做字符設備呢?因為這些文件在進行數據的輸入輸出時,它是按照字符為單位,一個個的喂給內存當中的進程或者程序的。
p:管道文件,是用來通信的。
文件的屬性主要是對目錄文件和普通文件來說的。
r:表示可讀
w:表示可寫
x:表示可執行
-:對應的權限位置,什么都沒有,換句話說也就是什么都沒有
這里的“人”不是代表一個用戶,是代表一個角色,權限身份,Linux中將角色劃分為三種,一種是文件對應的擁有者(代表這個文件是誰的),第三種叫做文件對應的其他人(代表這個文件不屬于誰),中間的叫做文件對應的所屬組(代表的是比如六個用戶是屬于同一個組的,他們可以給特定的目錄或者文件設定一些組級別的約束,就可以保證組內的一些人共享某些資源)。、
那root用戶以及普通用戶和擁有者、所屬者、其他人有什么關系呢?
其實root用戶可以由擁有者、所屬者、其他人扮演,普通用戶可以由擁有者、所屬者、其他人扮演,擁有者、所屬者、其他人相當于角色或者身份,而root和普通用戶相當于具體的某些人。比如說校長是一個身份,張三是一個人。
第一個liusiwei叫做該文件的擁有者,也就是empty這個文件的擁有者是liusiwei這個用戶,第二個liusiwei代表文件的所屬組。drwxrwxr-x第一列代表文件類型,剩下的叫做文件的權限屬性,2、1、1先不講,到時候講到文件系統再說。4096代表的是文件的大小,單位是字節,Feb 17 17:24 代表文件最近的修改或者創建時間,最后是文件名。
那其他人呢?
當我用root賬戶登陸時,我要訪問一個文件,那這個文件的所屬組還有擁有者是root嗎,如果不是,root就是其他人,這個時候就有了其他人了。
去掉第一列的一個字符,剩下的從左向右3、3為一組,第一組是文件的屬性,這個屬性和擁有者結合,它代表的就是擁有者權限,第二組是所屬組的權限,它就和所屬組相關聯,第三組和其他人對應,叫做其他人權限。
去掉一個文件的所有人的所有權限:
root用戶不受權限約束:
增加一個人的權限:
也可以用二進制來修改權限:
把文件給另一個用戶(要在root賬戶下使用):
把所屬組權限給另一個用戶(需要在root賬戶下使用):
把擁有者、所屬組權限還給自己(需要在root賬戶下使用):?
創建三個文件:?
?為什么我們創建文件的默認權限是我們所看到的樣子?
為什么普通文件的默認權限是664?
為什么目錄文件的默認權限是775?
1.在Linux當中,默認給普通文件起始權限其實是666,2.默認給目錄文件的起始權限其實是777,但為什么是我們圖中所見到的樣子的呢?根本原因在于我們的Linux當中存在一個umask的東西,叫做權限掩碼。權限掩碼:凡是在umask中出現的權限,不會在最終的文件權限中出現。
最終權限 = 起始權限 & (~umask)。
Linux權限管理
01.文件訪問者的分類(人)
文件和文件目錄的擁有者:u
文件和文件目錄的所屬組:g
其他人:o
02.文件類型和訪問權限(事物屬性)
?a) 文件類型
d:文件夾
-:普通文件
l:軟鏈接(類似Windows的快捷方式)
b:塊設備文件(例如硬盤、光驅等)
p:管道文件
c:字符設備文件(例如屏幕等串口設備)
s:套接口文件
這里只需要記住d和-,其它的后面遇到的話再詳談。
b)基本權限
i.讀(r/4):Read對文件而言,具有讀取文件內容的權限;對目錄來說,具有瀏覽該目錄信息的權限
ii.寫(w/2):Write對文件而言,具有修改文件內容的權限;對目錄來說具有刪除移動目錄內文件的權限
iii.執行(x/1):execute對文件而言,具有執行文件的權限;對目錄來說,具有進入目錄的權限
iv.“—”表示不具有該項權限
03.文件權限值的表示方法
a)字符表示方法
b)8進制數值表示方法
04.文件訪問權限的相關設置方法
a)chmod
功能:設置文件的訪問權限
格式:chmod [參數] 權限 文件名
常用選項:R -> 遞歸修改目錄文件的權限
說明:只有文件的擁有者和root才可以改變文件的權限
chmod命令權限值的格式
① 用戶表示符+/-=權限字符
+:向權限范圍增加權限代號所表示的權限
-:向權限范圍取消權限代號所表示的權限
=:向權限范圍賦予權限代號所表示的權限
用戶符號:??
u:擁有者
g:擁有者同組用
o:其它用戶
a:所有用戶
chmod a=x /home/abc.txt
②三位8進制數字
b)chown
功能:修改文件的擁有者
格式:chown [參數] 用戶名 文件名?
?c)chgrp
功能:修改文件或目錄的所屬組
格式:chgrp [參數] 用戶組名 文件名
常用選項:-R 遞歸修改文件或目錄的所屬組
chgrp users /abc/f2
d)umask
功能: 查看或修改文件掩碼
新建文件夾默認權限=0666
新建目錄默認權限=0777
但實際上你所創建的文件和目錄,看到的權限往往不是上面這個值。原因就是創建文件或目錄的時候還要受到 umask的影響。假設默認權限是mask,則實際創建的出來的文件權限是: mask & ~umask
格式:umask 權限值
說明:將現有的存取權限減去權限掩碼后,即可產生建立文件時預設權限。超級用戶默認掩碼值為0022,普通用戶默認為0002。
修改權限掩碼:
?
?le指令:
功能說明:辨識文件類型。
語法:?le [選項] 文件或目錄...?
常用選項: -c 詳細顯示指令執行過程,便于排錯或分析程序執行的情形。
-z 嘗試去解讀壓縮文件的內容
使用 sudo分配權限
(1)修改/etc/sudoers 文件分配文件
格式:接受權限的用戶登陸的主機 =(執行命令的用戶) 命令
(2)使用 sudo 調用授權的命令
$ sudo –u 用戶名 命令
目錄的權限
可執行權限:如果目錄沒有可執行權限,則無法cd到目錄中
可讀權限:如果目錄沒有可讀權限,則無法用ls等命令查看目錄中的文件內容
可寫權限:如果目錄沒有可寫權限, 則無法在目錄中創建文件, 也無法在目錄中刪除文件
于是,問題來了~~
如果目錄沒換句話來講,就是只要用戶具有目錄的寫權限,用戶就可以刪除目錄中的文件,而不論這個用戶是否有這個文件的寫權限.。這好像不太科學啊,我張三創建的一個文件,憑什么被你李四可以刪掉? 我們用下面的過程印證一下有可寫權限,則無法在目錄中創建文件,也無法在目錄中刪除文件。
?為了解決這個不科學的問題, Linux引入了粘滯位的概。
粘滯位
當一個目錄被設置為"粘滯位"(用chmod +t),則該目錄下的文件只能由
一、超級管理員刪除
二、該目錄的所有者刪除
三、該文件的所有者刪除?
關于權限的總結
目錄的可執行權限是表示你可否在目錄下執行命令。
如果目錄沒有-x權限,則無法對目錄執行任何命令,甚至無法cd 進入目, 即使目錄仍然有-r 讀權限(這 個地方很容易犯錯,認為有讀權限就可以進入目錄讀取目錄下的文件)。
而如果目錄具有-x權限,但沒有-r權限,則用戶可以執行命令,可以cd進入目錄。但由于沒有目錄的讀權限。
所以在目錄下,即使可以執行ls命令,但仍然沒有權限讀出目錄下的文檔。
建立和刪除帶-的文件: