Linux 權(quán)限的概念
Linux 用戶
Linux下有兩種用戶:超級用戶(root)、普通用戶
其中,root用戶的權(quán)限 在Linux中可以看作是 不受任何管控 的,就像 Windows中的管理員:
而除了 root 之外的其他的所有用戶都只是 普通用戶,普通用戶的權(quán)限是 受到管控 的
root 和 所有普通用戶 都是需要設(shè)置密碼的,且root和其他用戶的密碼最好不要設(shè)置為相同的,因為有時輸入密碼用戶可能無法區(qū)分 系統(tǒng)所需要的是什么密碼
whoami
是一句指令,可以顯示的當(dāng)前用戶是誰:
su 用戶名
可以切換用戶,su -
和 su
默認(rèn)切換為 root
,登錄到其他用戶之后,可以使用 exit
指令退出 :
root用戶 的命令提示符是 #
,而 普通用戶 的命令提示符是$
:
雖然 普通用戶 的權(quán)限是受限制的,但是其實 普通用戶 在執(zhí)行命令時可以,可以 通過
sudo
來臨時提升權(quán)限 為超級用戶權(quán)限(需要在信任列表中配置)
Linux 權(quán)限
在理解 Linux權(quán)限 之前,先理解一下 生活中什么是權(quán)限?
通俗來講生活中的權(quán)限就是:對于一件事物,人可以對其做什么,不能對其做什么
舉個例子:你的好友有一本書,他讓你看這本書,但是不讓你在書上亂涂亂畫,也不讓你帶走這本書,更不讓你毀壞這本書。這樣,你對這本書的權(quán)限就是:可看、不可畫、不可帶走、不可毀壞;而你的朋友對這本書的權(quán)限(如果沒有更高層次的約束:比如父母 doge)就是:可看、可畫、可帶走、可毀壞,只是他愿不愿意罷了。并且,兩人都不能用這本書炒菜,因為這本書本來就沒這種功能。這種事物本身不具有的不能成為權(quán)限。
而 Linux權(quán)限 也是如此,不過在 Linux系統(tǒng) 中,你和朋友及其他人 都被稱為用戶,這些用戶對文件可以做什么,不可以做什么,就是 Linux權(quán)限
Linux 文件訪問者
首先,在上面介紹權(quán)限時,提到了 用戶
在 Linux系統(tǒng) 中存在不同的用戶:root 和 其他。Linux系統(tǒng)中的文件,也是由用戶訪問的,而對于每個文件的訪問用戶又可以被分為三種
-
文件和文件目錄的所有者:
u---User
什么是所有者?顧名思義就是 文件當(dāng)前的所有者
User
在上一篇Linux文章中介紹
ls
指令時,介紹了-l
選項,可以將文件詳細(xì)屬性列出來:默認(rèn)情況下,誰創(chuàng)建的文件誰就是文件的擁有者,但是擁有者是可以更改的
-
文件和文件目錄的所有者所在的組的用戶:
g---Grouper
什么是組?在日常生活中,無論是上學(xué)還是公司,都有非常的大的概率會進(jìn)行分組
Linux 系統(tǒng)中也是如此,Linux中的 用戶可以進(jìn)行分組
Group
,當(dāng)前用戶所屬組的其他用戶,就是Grouper
-
其它用戶:
o---Others
除文件的所有者和其所在組的用戶之外的用戶,統(tǒng)稱為其他用戶
也就是說,如果文件的所有者是普通用戶,其所在的組用戶也都是普通用戶,即便是root 也得稱為其他用戶
由于 對一個文件來說,它的訪問者的身份都是相對的,所有者和其所在的組用戶和相對的其他用戶,所以 文件的詳細(xì)屬性是不顯示其他用戶的,也無法顯示完全
為什么說:對與一個文件,它的訪問者的身份都是相對的
因為當(dāng)這個文件的所有者是 root 時,此文件的其他用戶就是其他的普通用戶
當(dāng)這個文件的所有者是 普通用戶時,如果root沒在此用戶組內(nèi),root也只能是此文件的其他用戶
即,文件訪問者只是一種身份
也可以說 Linux權(quán)限就是圍繞著用戶和文件屬性展開的
Linux 權(quán)限管理
Linux 文件類型、訪問權(quán)限
在 ls -l
列出文件詳細(xì)屬性時,有一列由 d
-
r
w
x
等組成的內(nèi)容,這些內(nèi)容都是什么意思呢?

這些東西,其實表示的是 文件的類型和訪問權(quán)限
Linux系統(tǒng) 是 不以文件后綴來區(qū)分文件類型的,而是通過詳細(xì)屬性中第一個字符來區(qū)分文件類型的
Linux系統(tǒng)規(guī)定:
符號 | 類型 |
---|---|
d |
目錄文件 |
- |
普通文件 |
l |
軟鏈接(類似Windows的快捷方式) |
b |
塊設(shè)備文件(例如硬盤、光驅(qū)等) |
p |
管道文件 |
c |
字符設(shè)備文件(例如屏幕等串口設(shè)備) |
s |
套接口文件 |
而在Linux系統(tǒng)中 一般接觸到的文件,90% 都是 d 目錄文件
和 - 普通文件
的
**d 目錄文件
不必多說,那么什么是- 普通文件
**呢?
其實,Linux系統(tǒng)中的 文本文件,源代碼文件,可執(zhí)行程序,第三方動、靜態(tài)庫等 都是普通文件,把握不準(zhǔn)的可以 ll 或 ls -l
查看詳細(xì)屬性區(qū)分
ll
和ls -l
作用基本一樣,單位區(qū)別
注意:不以文件后綴來區(qū)分文件類型的是 Linux系統(tǒng),而不是系統(tǒng)上的其他軟件
比如:
使用gcc編譯一個非
.c
后綴的文件會報錯:這就說明了, gcc這個軟件是需要檢測到文件的后綴是
.c
的
那串符號中的第一個字符,已經(jīng)知道是啥意思了,那后面的 9個字符呢?
后面的 其實表示此文件的訪問權(quán)限
:
文件詳細(xì)屬性的第一列的后 9位字符,以 每3位 為一部份,分別表示 所有者權(quán)限、所在組權(quán)限、其他成員權(quán)限 :
這 9 位字符只由 r
w
x
-
組成,且 3個 為一組,其中:
-
r
: read 代表讀權(quán)限,r
表示可讀,-
表示不可讀 -
w
:write 代表寫權(quán)限,w
表示可寫,-
表示不可寫 -
x
:execute 代表執(zhí)行權(quán)限,x
表示可執(zhí)行,-
表示不可執(zhí)行
并且,每3位中 讀寫執(zhí)行權(quán)限的位置是固定的,順序必須為 rwx
不能為 wrx
或 xrw
,即:
每三位中,首位讀權(quán)限,次位寫權(quán)限,末尾執(zhí)行權(quán)限
file 文件類型顯示
file
是一個指令,可以辨識指定文件的類型
功能說明:辨識文件類型
語法:file [選項] 文件或目錄...
常用選項:
選項 | 功能 |
---|---|
-c |
詳細(xì)顯示指令執(zhí)行過程,便于排錯或分析程序執(zhí)行的情形。 |
-z |
嘗試去解讀壓縮文件的內(nèi)容 |

file
沒有.c
后綴,也可以識別出它是 C語言源文件,因為 Linux不以文件后綴識別文件類型
Linux 文件訪問權(quán)限的相關(guān)設(shè)置
上面介紹了 Linux系統(tǒng)中文件的類型和文件訪問的權(quán)限,其實這些屬性是可以修改的
訪問權(quán)限的修改
只有文件的擁有者和root才可以改變文件的權(quán)限
修改訪問權(quán)限的方法有兩種,但都是通過**chmod
**實現(xiàn)的:
chmod
中的ch
為change
的縮寫
-
chmod [選項] 身份+/-/=權(quán)限 文件
其實用法就像這樣:
chmod [選項] 身份+/-/=權(quán)限 文件:
- 選項
選項 功能 R
對目錄使用,遞歸修改目錄內(nèi)所有文件權(quán)限 - 身份
u
:user
表示所有者權(quán)限g
:grouper
表示組成員權(quán)限o
:others
表示其他成員權(quán)限a
:all
表示所有成員- +/-
+
: 表示增添權(quán)限-
: 表示取消權(quán)限=
: 表示只賦予權(quán)限,一般與a
結(jié)合使用- 權(quán)限
r
:read
表示讀權(quán)限w
:write
表示寫權(quán)限x
:execute
表示執(zhí)行權(quán)限可以使用
chmod a=權(quán)限 文件
,只賦予 所有成員相應(yīng)的權(quán)限,什么是只賦予呢?:當(dāng)然,
=
后可跟多個權(quán)限 -
chmod 權(quán)限八進(jìn)制 文件
通過觀察可以發(fā)現(xiàn),各權(quán)限(讀、寫、執(zhí)行)只存在 可和不可 兩種狀態(tài),可以看作一種二進(jìn)制的形式
而對應(yīng)用戶身份權(quán)限的表示 又是每三位表示一種用戶,這三位結(jié)合就可以看作是一種八進(jìn)制舉例子:
對于文件所有者,一共存在這八種權(quán)限情況:
---
--x
-w-
-wx
r--
r-x
rw-
rwx
可以看作一種二進(jìn)制,分別對應(yīng)000
001
010
011
100
101
110
111
即八進(jìn)制的:0
1
2
3
4
5
6
7
Linux也就就可以直接使用這種類八進(jìn)制的方式,設(shè)置權(quán)限
用法:
訪問用戶的修改
文件的訪問權(quán)限可以修改,其所屬用戶即組也都可以修改
修改文件的所有者,就像贈送別人東西,是需要經(jīng)過被贈人的同意的,正所謂:己所不欲勿施于人 doge
所以,修改文件的所有者,其實也是需要新所有者同意的
但是,修改所有者的動作并不是一個請求動作,被贈人也不能主動同意,所以只能讓其被動同意怎么讓其被動同意呢?
使用root
修改,或者sudo
臨時提升權(quán)限,root
就像是上帝,是不受任何限制的,sudo
可將此操作提升到同等的地位如果沒有使用
root用戶
或sudo
就會提示:PS:想要將文件給某個用戶,此系統(tǒng)需要有此用戶
-
chown
功能:修改文件的擁有者
格式:chown [選項] 用戶名 文件名
選項:選項 功能 -R
對目錄使用,遞歸修改目錄內(nèi)所有文件權(quán)限 chown
可以將文件的所有者,改為其他用戶: -
chgrp
功能:修改文件或目錄的所屬組
格式:chgrp [參數(shù)] 用戶組名 文件名
常用選項:選項 功能 -R
對目錄使用,遞歸修改目錄內(nèi)所有文件權(quán)限
相關(guān)問題 *
文件權(quán)限、用戶對其所屬關(guān)系的修改,已經(jīng)介紹過了
但是還有一些問題:
- 問題1:進(jìn)入目錄需要什么權(quán)限?
為了得到答案,可以逐權(quán)限測試:
讀權(quán)限:寫權(quán)限:
執(zhí)行權(quán)限:
可以看到,想要進(jìn)入目錄,訪問者需要有執(zhí)行權(quán)限
- 問題2:查看文件是怎么樣查看的?目錄文件又是怎么查看的?
之前指令中提到,查看文本文件可以直接使用
cat
more
less
:那么,目錄文件的內(nèi)容是怎么查看的呢?文件內(nèi)容是什么呢?
Linux系統(tǒng)中,所有東西都可看作是文件,目錄也是文件。目錄是由什么組成的呢?
目錄 = 屬性 + 內(nèi)容,而目錄的內(nèi)容其實就是 子目錄 和 內(nèi)部文件 的屬性
所以
讀目錄的操作就是ls
查看目錄內(nèi)文件列表,寫目錄的操作就是mkdir
touch
等可創(chuàng)建文件的操作,執(zhí)行目錄的操作就是cd
進(jìn)入目錄可以驗證一下:
用戶對目錄只有執(zhí)行權(quán)限:用戶對目錄只沒有讀權(quán)限:
用戶對目錄只沒有寫權(quán)限:
用戶對各個文件的權(quán)限是獨立的,目錄內(nèi)文件的內(nèi)容是否可以查看,與目錄無關(guān) 與 文件本身有關(guān)
假如用戶對一個目錄沒有讀權(quán)限,但不能說明用戶對目錄內(nèi)的文件沒有讀權(quán)限
但是,如果用戶對一個目錄沒有讀權(quán)限,也就沒有辦法獲取目錄內(nèi)容,即無法獲取目錄內(nèi)文件的屬性
因為 Linux系統(tǒng)是不根據(jù)文件名識別文件的,是根據(jù)每個文件在系統(tǒng)中對應(yīng)的ID,所以即使知道目錄內(nèi)文件的文件名,原則上也是無法直接查看目錄內(nèi)文件的內(nèi)容的
但是,實際的測試發(fā)現(xiàn),即使 用戶對目錄沒有讀權(quán)限,也是可以查看目錄內(nèi)文件的內(nèi)容的:
這其實是因為 雖然系統(tǒng)不根據(jù)文件名識別文件,但是文件名與文件的ID 存在一定的映射關(guān)系,如果這個關(guān)系被系統(tǒng)緩存了,也可以通過文件名來找到文件,就可以通過文件名查看 沒有讀權(quán)限的目錄內(nèi)的文件
umask 權(quán)限掩碼
一個文件的默認(rèn)權(quán)限是什么?為什么是這樣?
權(quán)限掩碼可以解釋這兩個問題
新創(chuàng)建一個普通文件和目錄文件,查看它們的默認(rèn)權(quán)限:
用戶剛創(chuàng)建出文件時的權(quán)限被稱為 最終權(quán)限,775
和664
即為不同類型文件的最終權(quán)限
而 Linux規(guī)定,目錄文件的默認(rèn)權(quán)限是從 777
開始的,普通文件的默認(rèn)權(quán)限是從 666
開始的
那為什么,創(chuàng)建出來的目錄文件是775
,普通文件是664
呢?
這一切都與 權(quán)限掩碼有關(guān)
umask
可以查看、修改權(quán)限掩碼:
權(quán)限掩碼是干什么用的?
默認(rèn)的權(quán)限掩碼為 002
,目錄文件的默認(rèn)權(quán)限是從 777
開始的,普通文件的默認(rèn)權(quán)限是從 666
開始的
而剛創(chuàng)建出來的 目錄文件的權(quán)限是 775
,普通文件的權(quán)限是 664
可以看出,這三者像是有一種相減的關(guān)系
這三者之間確實存在一定的關(guān)系,但并不是相減的關(guān)系,而是:最終權(quán)限 = 默認(rèn)權(quán)限 & (~umask)
當(dāng)目錄文件的默認(rèn)權(quán)限為 777
,默認(rèn)權(quán)限掩碼為 002
,則目錄文件的最終權(quán)限就是 777 & (~002) -> 775
可以試著驗證一下,這三者的關(guān)系究竟是
最終權(quán)限 = 默認(rèn)權(quán)限 - umask
,還是最終權(quán)限 = 默認(rèn)權(quán)限 & (~umask)
當(dāng)默認(rèn)權(quán)限 設(shè)置為 000:
粘滯位
Linux系統(tǒng)中存在一些,可供不同用戶一起存儲文件的公共目錄,這些公共目錄的所有者和所屬組都是 root,其他用戶可以 others的身份 對其內(nèi)容 讀、寫、刪除等
但是,不同用戶使用同一個目錄,如果不加以限制 那么用戶各自的文件的安全性就得不到保障
舉個例子:
**root
**創(chuàng)建一個公共目錄PublicDir
,用戶July 和 Julyxx 都可以使用:
兩個用戶都可以在 這個目錄里存放屬于自己的文件,并加以限制:
看似已經(jīng)非常安全了,但是,由于所有用戶都可以對此目錄內(nèi)容進(jìn)行修改、刪除,所以即使設(shè)置了其他用戶無權(quán)限,其他用戶依然可以刪除此文件 :
但又無法避免多用戶需要共同使用一個目錄的需求,又得保證公共目錄下各自文件的安全,所以 Linux引入了粘滯位
每個用戶可以對屬于自己的目錄文件 使用**chmod +t 目錄文件
就可以設(shè)置粘滯位**:
任何目錄文件都可以設(shè)置粘滯位
文章來源:http://www.zghlxwxcb.cn/news/detail-752183.html
設(shè)置了粘滯位的目錄,用戶就無法在此目錄內(nèi)隨意刪除文件,該目錄內(nèi)的文件只能由:文章來源地址http://www.zghlxwxcb.cn/news/detail-752183.html
-
root
用戶刪除 - 該目錄的所有者刪除
- 該文件的所有者刪除

到了這里,關(guān)于【Linux】 Linux用戶權(quán)限、文件權(quán)限、權(quán)限操作相關(guān)介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!