Linux 是一個多用戶系統(tǒng),它允許多個用戶同時登陸主機(jī),并為他們分配不同的資源和工作環(huán)境進(jìn)行使用。當(dāng)然,不同的用戶都有文件的私有需求,所以設(shè)置不同用戶文件的權(quán)限管理十分重要。
01 用戶與用戶組
Linux 中一般將文件訪問權(quán)限的身份分為三種角色:文件所有者、用戶組成員、其他人(owner/group/others)
1.1 用戶身份
1.1.1 文件所有者 owner
文件所有者角色是 Linux 系統(tǒng)保護(hù)用戶私有空間的重要方式。
當(dāng)多個用戶同時登錄主機(jī)時,文件所有者對文件具有絕對訪問權(quán)限并可以限制其他用戶對該文件的訪問權(quán)限,其他用戶如需訪問該文件,需要文件所有者授權(quán)才可訪問。
1.1.2 用戶組成員 group
用戶組成員角色是為了方便用戶在局部范圍內(nèi)共享文件內(nèi)容。
例如,在團(tuán)隊開發(fā)中,如果 Linux 系統(tǒng)僅提供 owner 和 others 角色,那么當(dāng)文件所有者想給其他團(tuán)隊成員開放文件訪問權(quán)限時,就會出現(xiàn)文件直接對團(tuán)隊之外角色公開的情況。
將文件所有者之外的用戶角色區(qū)分為用戶組成員 group 和其他人 others,可以在向與文件所有者劃分在一個用戶組的用戶組成員開放文件訪問權(quán)限的同時,對其他用戶保持私用。
1.1.3 其他人 others
其他人角色是用戶公開文件訪問權(quán)限的方式。
文件所有者可以通過向 others 角色開放文件訪問權(quán)限,向與文件所有者沒有任何聯(lián)系的其他用戶共享文件。
當(dāng)然,除了 owner/group/others 三種用戶之外,還有掌控一切的系統(tǒng)用戶 root,root 用戶可以訪問主機(jī)中的一切文件。root 用戶所在的用戶組稱為 root組,處于 root 組的普通用戶,能夠通過 sudo 命令獲取 root 權(quán)限。
1.2 用戶管理
1.2.1 用戶管理相關(guān)文件
在 Linux 系統(tǒng)中,默認(rèn)情況下,系統(tǒng)上所有的用戶賬號通過用戶 ID (User ID ,簡稱 UID)、一個是用戶組 ID (Group ID ,簡稱 GID)標(biāo)識,并都記錄在 /etc/passwd
這個文件內(nèi)的,對應(yīng)的密碼則是記錄在 /etc/shadow
文件下。 此外,Linux 所有的用戶組信息和密碼都紀(jì)錄在 /etc/group
與 /etc/gshadow
內(nèi)。
這些文件中,每一行表示一條記錄,每條記錄中個屬性字段通過冒號:
分隔。
(1) /etc/passwd
該文件管理用戶 UID 和 GID 等重要參數(shù)。
每一行都代表一個用戶賬號,其中包括一些系統(tǒng)正常運(yùn)行所必須的系統(tǒng)賬號,例如 bin, daemon, adm, nobody 等。
冒號:
分隔開的 7 個字段含義是:
-
賬號名稱:用戶賬號的 username
-
口令:即賬號密碼,但是現(xiàn)在的賬號密碼都保持在
/etc/shadow
文件中了,此處使用 x 符號占位 -
UID:用戶標(biāo)識符 User ID,root 用戶的 UID 是 0
-
GID:用戶組標(biāo)識符 Group ID
-
用戶賬號描述:沒實際含義
-
用戶目錄:用戶空間
-
shell:用戶登錄系統(tǒng)后與主機(jī)進(jìn)行交互的命令行工具,默認(rèn)是
/bin/bash
(2) /etc/shadow
該文件管理用戶的登錄口令。
冒號:
分隔開的 9 個字段含義是:
-
賬號名稱:用戶賬號的 username
-
口令:經(jīng)過編碼加密的賬號密碼
-
最近更動口令的日期
-
口令不可被更動的天數(shù)
-
口令需要重新變更的天數(shù)
-
口令需要變更期限前的警告天數(shù)
-
口令過期后的賬號寬限時間
-
賬號失效日期
(3) /etc/group
該文件管理用戶組信息,與 /etc/passwd
中的 GID 對應(yīng)。
每一行代表一個群組,冒號:
分隔開的 7 個字段含義是:
-
用戶組名稱
-
用戶組口令:一般不需配置,用不到
-
GID:用戶組標(biāo)識符 Group ID
-
用戶組包含的用戶名稱:一個賬號可以加入多個群組,那某個賬號想要加入此群組時,將該賬號填入這個字段即可。
(4) /etc/gshadow
用戶組口令都不咋用,這個文件的存在感也比較弱…
1.2.2 用戶管理相關(guān)命令
Linux 提供了一組用戶賬號和用戶組管理命令對賬號進(jìn)行新增、 移除與更改
(1) 用戶管理命令
-
useradd
:新建用戶useradd [options] [username]
-
passwd
:設(shè)置或修改用戶的口令和口令屬性passwd [options] [username]
-
usermod
:user modify 修改用戶的屬性usermod [options] [username]
-
userdel
:user delete 刪除指定用戶賬號userdel [options] [username]
-
su
:切換用戶身份;exit 退出超級用戶su [options] [username]
(2) 用戶組管理命令
-
groupadd
:添加用戶組groupadd [options] [groupname]
-
groupmod
:修改用戶組屬性groupmod [options] [groupname]
-
groupdel
:刪除指定用戶組groupdel [options] [groupname]
02 文件權(quán)限
Linux 系統(tǒng)中文件有第一節(jié)中的三種訪問角色 owner/group/others,對于文件這三種身份還各有 read/write/execute 三種訪問權(quán)限。通過這三種角色和訪問權(quán)限控制可以到來 Linux 系統(tǒng)的如下優(yōu)勢:
-
系統(tǒng)保護(hù):關(guān)于系統(tǒng)服務(wù)的文件通常只有 root 角色能訪問,可以有效保護(hù)系統(tǒng)中的重要文件。
-
團(tuán)隊開發(fā)文件共享:通過設(shè)置用戶組權(quán)限,讓團(tuán)隊成員能夠共享指定目錄下的文件數(shù)據(jù)。
2.1 文件屬性
在 Linux 系統(tǒng)中進(jìn)入任意目錄,然后使用 ls
命令查看當(dāng)前目錄下文件的文件名與相關(guān)屬性,也可以增加選項參數(shù) ls -la
顯示所有的文件詳細(xì)的權(quán)限與屬性。
如上圖所示,list 命令顯示的內(nèi)容中每一行即是一個文件的相關(guān)屬性,每一條記錄的 7 個字段含義如下(圖片來源網(wǎng)絡(luò),如有侵權(quán)請告知):
(1) 文件類型與權(quán)限
文件類型與權(quán)限由 10 個字符構(gòu)成(圖片來源網(wǎng)絡(luò),如有侵權(quán)請告知):
第一個字符代表該文件的類型:
-
[ d ] 表示目錄
-
[ - ] 表示文件
-
[ l ] 表示鏈接
-
[ b ] 表示裝置文件里面的可供儲存的接口設(shè)備,即可隨機(jī)存取裝置
-
[ c ] 表示裝置文件里面的串行端口設(shè)備,例如鍵盤、鼠標(biāo)等一次性讀取裝置
剩下的 9 個字符,三個為一組分別表示 owner/group/others 三種角色的 read/write/execute 三種訪問權(quán)限
(2) 文件鏈接數(shù)
Linux 文件系統(tǒng) Ext2 使用的是以 inode 為基礎(chǔ)的文件系統(tǒng),inode 的內(nèi)容在記錄文件的權(quán)限與相關(guān)屬性,block 區(qū)塊中才是記錄文件實際內(nèi)容的位置。
文件屬性的這個字段就是記錄的有多少不同的文件連結(jié)到相同的一個 inode 號碼
(3) 文件所有者
表示文件或目錄的所有者名稱
(4)所屬用戶組
表示文件或目錄所屬用戶組的名稱
(5) 文件大小
表示文件的容量大小,默認(rèn)單位為字節(jié) bytes
(6) 時間戳
記錄文件的創(chuàng)建日期或者是最近的修改日期。
記錄的時間一般為 月/日/時間 的形式,如果這個文件被修改的時間跨度過大,那么時間部分會僅顯示年份。
(7) 文件名稱
文件的名稱,如果文件名以.
開頭則說明他是隱藏文件
2.2 文件屬性修改命令
文件屬性的修改命令分別針對文件所有者和所屬用戶組有 chown, chgrp
,文件權(quán)限修改命名則是 chmod
-
chown :改變文件擁有者
-
chgrp :改變文件所屬群組
-
chmod :改變文件的權(quán)限
(1) chown
文件在創(chuàng)建的時候就指定了文件所有者,當(dāng)將文件復(fù)制或移動到其他用戶目錄下時,就需要變更文件的所有者了,因為復(fù)制操作會根據(jù)執(zhí)行命令的用戶確定拷貝的文件文件所有者。
chown [options] [owner] [filename/directory]
使用該命令修改目錄時,可以通過添加 -R
選項進(jìn)行遞歸的持續(xù)變更,即連同次目錄下的所有文件都變更文件所有者。
chown -R [owner] [irectory]
chown 目錄還可以順帶修改用戶組,使用冒號連接 用戶:用戶組
同時修改文件所有者和所屬用戶組。
chown [options] [owner:group] [filename/directory]
(2) chgrp
僅修改文件所屬的用戶組可以使用 chgrp 命令實現(xiàn),當(dāng)然修改時要確保用戶組是存在的。
chgrp [options] [group] [filename/directory]
如果要修改目錄下所有文件的所屬用戶組,同樣的使用 -R
參數(shù)進(jìn)行遞歸的持續(xù)變更。
chgrp -R [group] [directory]
(3) chmod
修改文件權(quán)限的命令則是 chmod,該命令可以通過數(shù)字類型和符號類型兩種形式設(shè)定文件權(quán)限。
數(shù)字類型:
Linux 系統(tǒng)中 read/write/execute 三種訪問權(quán)限分別對應(yīng)的數(shù)字分?jǐn)?shù)是:read(4), write(2), execute(1)
每個用戶角色的權(quán)限可以用三種訪問權(quán)限的數(shù)字分?jǐn)?shù)累加結(jié)果表示,例如文件權(quán)限-rwxr-x---
的數(shù)字分?jǐn)?shù)表示是 750
:
owner = rwx = 4+2+1 = 7
group = r-x = 4+0+1 = 5
others= --- = 0+0+0 = 0
使用數(shù)字類型的 chmod 權(quán)限修改命令形式為:
chmod [options] [number] [filename/directory]
# example:
chmod -R 770 /data/share
符號類型:
另一種修改文件權(quán)限的方式就是使用符號類型,owner/group/others 三種角色對應(yīng)的符號表示是:owner(u), group(g), others(o)
,還有同時表示三種角色的符號:all(a)
。read/write/execute 三種訪問權(quán)限的符號表示是:read(r), write(w), execute(x)
。
基于用戶角色和文件權(quán)限的符號表示,使用符號 +, -, =
為不同的用戶角色添加、除去和設(shè)定不同的文件權(quán)限:
命令 | 角色 | 操作 | 權(quán)限 | 對象 |
---|---|---|---|---|
chmod | u/g/o/a | +/-/= | r/w/x | 文件或目錄 |
例如,要使用 chmod 命令設(shè)置文件所有者權(quán)限為可讀、可寫、可執(zhí)行,所屬用戶組和其他用戶具有可讀與執(zhí)行的權(quán)限,即-rwxr-xr-x
:
chmod u=rwx,go=rx fliename
如果又要除去其他用戶的可讀與執(zhí)行的權(quán)限是,即-rwxr-x--
:
chmod o-rx fliename
03 命令與文件權(quán)限
3.1 權(quán)限的意義
權(quán)限對于文件的意義:
-
r (read):可讀取此一文件的實際內(nèi)容,如讀取文本文件的文字內(nèi)容等;
-
w (write):可以編輯、新增或者是修改該文件的內(nèi)容(但不含刪除該文件);
-
x (execute):該文件具有可以被系統(tǒng)執(zhí)行的權(quán)限。
權(quán)限對于目錄的意義:
-
r (read contents in directory):表示具有讀取目錄結(jié)構(gòu)列表的權(quán)限,即表示可以查詢該目錄下的文件名數(shù)據(jù)(ls 命令查看目錄信息)。
-
w (modify contents of directory):表示具有向目錄寫入內(nèi)容的權(quán)限,即可以修改目錄的結(jié)構(gòu)列表。例如,創(chuàng)建新的文件或目錄、刪除文件或目錄、修改文件或目錄的名稱、移動文件或目錄到其他位置等。
-
x (access directory):表示用戶具有進(jìn)入該目錄成為工作目錄的權(quán)限(cd 命令進(jìn)入到目錄中)。
3.2 權(quán)限的作用
文件權(quán)限限制了用戶對文件或目錄進(jìn)行讀取/創(chuàng)建/刪除/修改等操作,我們進(jìn)一步理解這操作命令是怎么和文件和目錄權(quán)限對應(yīng)起來的。
切換工作目錄:
-
可使用的命令:例如 cd 等變換工作目錄的命令;
-
目錄所需權(quán)限:用戶需要對該目錄具有可執(zhí)行權(quán)限 (x);如果還需要查閱目錄結(jié)構(gòu)信息,用戶還需要可讀權(quán)限(r)。
讀取文件內(nèi)容:
-
可使用的命令:例如 cat,more,less,head,tail 等查閱命令
-
目錄所需權(quán)限:用戶需要對工作目錄(當(dāng)前目錄)具有可執(zhí)行權(quán)限 (x);
-
文件所需權(quán)限:用戶需要對該文件具有可讀權(quán)限(r);
修改文件內(nèi)容:
-
可使用的命令:例如 echo+重定向符號,vim 等文件修改命令
-
目錄所需權(quán)限:用戶需要對工作目錄(當(dāng)前目錄)具有可執(zhí)行權(quán)限 (x);
-
文件所需權(quán)限:用戶需要對該文件具有可讀、可寫權(quán)限(r,w);
新建文件/目錄:
-
可使用的命令:例如 touch,mkdir 等文件或目錄創(chuàng)建命令
-
目錄所需權(quán)限:用戶需要對工作目錄(當(dāng)前目錄)具有可執(zhí)行權(quán)限 (x) 進(jìn)入到該目錄,還需要對工作目錄具有可寫權(quán)限 (w) 修改目錄結(jié)構(gòu)新建文件
運(yùn)行可執(zhí)行文件:
-
可使用的命令:例如 ./,bash 等文件執(zhí)行命令
-
目錄所需權(quán)限:用戶需要對工作目錄(當(dāng)前目錄)具有可執(zhí)行權(quán)限 (x);
-
文件所需權(quán)限:用戶需要對該文件具有具有可執(zhí)行權(quán)限 (x);
如果文章對你有幫助,歡迎一鍵三連 ?? ?? ?? 。如果還能夠點(diǎn)擊關(guān)注,那真的是對我最大的鼓勵 ?? ?? ?? 。
參考資料
一篇讀懂 Linux 用戶管理與操作
鳥哥的 Linux 私房菜 – Linux 的文件權(quán)限與目錄配置-1
鳥哥的 Linux 私房菜 – Linux 的文件權(quán)限與目錄配置-2
鳥哥的 Linux 私房菜 – Linux 賬號管理-1
鳥哥的 Linux 私房菜 – Linux 賬號管理-2文章來源:http://www.zghlxwxcb.cn/news/detail-775931.html
鳥哥的 Linux 私房菜 – 文件與目錄管理文章來源地址http://www.zghlxwxcb.cn/news/detail-775931.html
到了這里,關(guān)于Linux 用戶管理與文件權(quán)限的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!