Linux中的賬號和權限管理方式
在 Linux 操作系統(tǒng)的管理領域中,賬號和權限管理是保障系統(tǒng)安全、穩(wěn)定運行的核心要素。通過合理配置用戶賬號和組賬號,以及精確設置目錄與文件的權限和歸屬,能夠有效控制系統(tǒng)資源的訪問,避免非法操作和數(shù)據(jù)泄露風險,為系統(tǒng)構建起堅實的安全防線。
本文將全面深入地探討 Linux 系統(tǒng)中賬號和權限管理的各個關鍵方面。從剖析用戶賬號和組賬號的基本概念、詳細介紹相關配置文件的結構與功能,到講解用戶賬號和組賬號的創(chuàng)建、修改、刪除等操作方法,再到闡述目錄和文件權限及歸屬的查看、設置技巧,涵蓋了從理論基礎到實際操作的全方位知識體系,助力讀者熟練掌握這一重要的系統(tǒng)管理技能,確保Linux系統(tǒng)在安全的軌道上高效運行。
一、管理用戶賬號和組賬號
與 windows 操作系統(tǒng)相比,Linux 操作系統(tǒng)中的用戶賬號和組賬號的作用在本質(zhì)上是一樣的,同樣都是基于用戶身份來控制對資源的訪問,只不過在表現(xiàn)形式及個別細節(jié)方面存在一些差異。
本小節(jié)將介紹 Linux 操作系統(tǒng)中用戶賬號和組賬號、以及管理它們的相關概念。
1、用戶賬號和組賬號概述
與 windows 操作系統(tǒng)一樣,Linux 操作系統(tǒng)的每一個用戶賬號也都有唯一的用戶名與密碼。用戶在登錄時輸入正確的用戶名和密碼,就能夠進入操作系統(tǒng)和自己的主目錄。
(1)用戶賬號類型
用戶類型 | 權限級別 | 使用場景 | 登錄權限 |
超級用戶 | 最高權限(root) | 系統(tǒng)管理、維護任務 | 允許登錄但不推薦 |
普通用戶 | 受限權限 | 日常事務處理 | 允許登錄 |
程序用戶 | 低權限(僅必要權限) | 維持系統(tǒng)或應用程序運行 | 禁止登錄系統(tǒng) |
(2)組賬號
基于某種特定聯(lián)系(如都要訪問 FTP服務)將多個用戶集合在一起,即構成一個用戶組,表示該組內(nèi)所有用戶的賬號稱為組賬號。
組賬號分為以下兩種:
基本組(私有組) | 用戶創(chuàng)建時默認歸屬的組,每個用戶必須且只能有一個基本組。 | - 用戶的基本組通常與用戶名同名。 - 用戶擁有的文件默認繼承基本組權限。 |
附加組(公共組) | 用戶除基本組外可加入的其他組,用于擴展權限(如訪問共享資源)。 | - 用戶可加入多個附加組。 - 附加組權限與基本組權限疊加生效。 |
(3)UID 和 GID 號
類別 | 類型 | 范圍 | 說明 |
UID | root用戶 | 0 | 系統(tǒng)超級用戶的唯一標識號,操作系統(tǒng)核心通過UID區(qū)分用戶身份。 |
程序用戶 | 1~999 | 系統(tǒng)服務或應用程序?qū)S玫姆堑卿涃~號,通常不關聯(lián)真實用戶。 | |
普通用戶 | 1000~65534 | 普通用戶賬號的默認UID范圍,需確保唯一性。 | |
GID | root組 | 0 | 系統(tǒng)超級用戶組的唯一標識號,通常與root用戶綁定。 |
程序組 | 1~999 | 與程序用戶關聯(lián)的組賬號,用于統(tǒng)一管理服務或應用的資源權限。 | |
普通組 | 1000~65534 | 普通組賬號的默認GID范圍,組內(nèi)用戶共享該組的權限。 |
注意:
UID/GID 唯一性:每個用戶/組的UID/GID原則上唯一,沖突可能導致權限混亂。系統(tǒng)通過UID識別用戶身份,而非用戶名(如root的UID固定為0)。
權限關聯(lián):用戶的基本組GID默認與其UID相同(如用戶zhangsan的GID可能為1001)。文件權限中顯示的UID/GID對應所有者及所屬組。
2、用戶賬號管理
Linux 操作系統(tǒng)中的用戶賬號、密碼等信息均保存在相應的配置文件中,直接修改這些文件或者使用用戶管理命令都可以對用戶賬號進行管理。
(1)用戶賬號文件
與用戶賬號相關的配置文件主要有兩個,分別是/etc/passwd 和/etc/shadow。前者用于保存用戶名稱、宿主目錄、登錄 she11 等基本信息,后者用于保存用戶的密碼、賬號有效期等信息。在這兩個配置文件中,每一行對應一個用戶賬號,不同的配置項之間使用“:”(冒號)進行分隔。
1. /etc/passwd 文件
操作系統(tǒng)中所有用戶的賬號基本信息都保存在/etc/passwd 文件中,該文件是文本文件,任何用戶都可以讀取文件中的內(nèi)容。
在 passwd 文件開頭的部分,包括超級用戶 root 及各程序用戶的賬號信息,系統(tǒng)中新增加的用戶賬號信息將保存到 passwd 文件的末尾。
passwd 文件的每一行內(nèi)容中包含了七個用“:”(冒號)分隔的配置字段,從左到右各配置字段的含義分別如下所述。
字段位置 | 字段名稱 | 描述 | 示例/注意事項 |
第1字段 | 用戶賬號名稱 | 用戶登錄系統(tǒng)時使用的唯一標識名稱。 | root,ftp,alice |
第2字段 | 密碼占位符 | 固定為x,實際密碼已遷移到 /etc/shadow。 | x(歷史遺留:早期系統(tǒng)密碼直接存儲在此字段) |
第3字段 | UID | 用戶唯一標識號,系統(tǒng)通過UID識別用戶身份。 | 0(root用戶),1000(普通用戶) |
第4字段 | 基本組GID | 用戶所屬基本組的組標識號。 | 0(root組),1000(用戶私有組) |
第5字段 | 用戶全名/描述信息 | 用戶備注信息,可包含姓名、聯(lián)系方式等。 | Alice Smith, Room 101 |
第6字段 | 宿主目錄 | 用戶登錄后的默認工作目錄。 | /root(root用戶),/home/alice(普通用戶) |
第7字段 | 登錄Shell | 用戶登錄后使用的Shell程序路徑。 | /bin/bash(默認),/sbin/nologin(禁止登錄的系統(tǒng)用戶) |
文件屬性
- 權限:僅root可讀寫,普通用戶無訪問權限。
- 安全機制:防止密碼哈希被暴力 破解,增強系統(tǒng)安全性。
(2)添加、修改、刪除用戶賬號
1、添加用戶賬號——useradd
- 格式: useradd [選項] 用戶名
shadow 文件的每一行內(nèi)容中包含了九個用“:”(冒號)分隔的配置字段,從左到右各配置字段的含義分別如下所述。
字段位置 | 字段名稱 | 描述 | 示例/注意事項 |
第1字段 | 用戶賬號名稱 | 與/etc/passwd中的用戶名一致。 | root,alice |
第2字段 | 加密密碼 | 使用SHA-512等算法加密的密碼字符串。 | $6$...(加密后的哈希值),*或!!(禁止登錄), 空值(無需密碼登錄) |
第3字段 | 上次修改密碼時間 | 從1970年1月1日起到最近一次修改密碼的天數(shù)。 | 19103(表示2022年5月1日左右) |
第4字段 | 密碼最短有效天數(shù) | 修改密碼后必須經(jīng)過該天數(shù)才能再次修改。 | 0(無限制),7(7天內(nèi)不可修改) |
第5字段 | 密碼最長有效天數(shù) | 密碼有效期限,超過后必須修改。 | 99999(默認無限制),90(90天后過期) |
第6字段 | 密碼過期前警告天數(shù) | 密碼過期前提前警告用戶的天數(shù)。 | 7(默認提前7天提醒) |
第7字段 | 密碼過期后寬限天數(shù) | 密碼過期后允許用戶登錄的寬限期,超時后賬號被禁用。 | 5(過期后5天內(nèi)仍可登錄) |
第8字段 | 賬號失效時間 | 從1970年1月1日起計算,指定賬號永久禁用的日期。 | 19456(表示2023年4月15日失效,空值表示永久有效) |
第9字段 | 保留字段 | 未使用,保留為未來擴展。 | 通常為空 |
文件屬性權限:僅root可讀寫,普通用戶無訪問權限。安全機制:防止密碼哈希被暴力破解,增強系統(tǒng)安全性。
(2)添加、修改、刪除用戶賬號
1、添加用戶賬號——useradd
格式: useradd [選項] 用戶名
選項 | 描述 | 注意事項 | 示例 |
-u | 指定用戶的UID號,需確保該UID未被其他用戶使用。 | 若未指定,系統(tǒng)自動分配下一個可用UID。 避免使用系統(tǒng)保留范圍(如0、1-999)。 | useradd -u 1001 alice |
-d | 指定用戶的宿主目錄路徑(需絕對路徑)。 | 若與-m(自動創(chuàng)建目錄)聯(lián)用,-d可能失效(需檢查系統(tǒng)兼容性)。 | useradd -d /data/alice_home alice |
-e | 設置賬戶失效時間,格式為YYYY-MM-DD。 | 到期后用戶將無法登錄。 空值表示永久有效(默認)。 | useradd -e 2024-12-31 alice |
-g | 指定用戶的基本組(組名或GID)。 | 若未指定,默認創(chuàng)建與用戶名同名的新組作為基本組。 | useradd -g developers alice或useradd -g 1001 alice |
-G | 指定用戶的附加組(多個組用逗號分隔,支持組名或GID)。 | 用戶將繼承附加組的權限。 需確保附加組已存在。 | useradd -G ftp,webadmin alice或useradd -G 2001,2002 alice |
-M | 禁止創(chuàng)建宿主目錄(即使/etc/login.defs中配置為自動創(chuàng)建)。 | 適用于系統(tǒng)服務賬號(無需登錄場景)。 需手動創(chuàng)建目錄并設置權限。 | useradd -M nginx |
-s | 指定用戶的登錄Shell路徑。 | 設置為/sbin/nologin或/bin/false可禁止用戶登錄。 | useradd -s /sbin/nologin ftp_user或useradd -s /bin/zsh alice |
2、為用戶賬號設置密碼——passwd
通過useradd命令新增用戶賬號以后,還需要為其設置一個密碼才能正常使用。
使用passwd命令可以設置或修改密碼,root用戶有權管理其他賬號的密碼(指定賬號名稱座位參數(shù)即可)。
選項 | 描述 | 注意事項 | 示例 |
-d | 清空指定用戶的密碼,允許僅通過用戶名無密碼登錄系統(tǒng)。 | 需確保系統(tǒng)安全策略(如PAM配置)允許空密碼登錄。 高風險操作,建議僅在測試環(huán)境使用。 | passwd -d alice(清空用戶alice的密碼) |
-l | 鎖定用戶賬戶,禁止該用戶登錄系統(tǒng)。 | 鎖定后,用戶密碼字段前添加 ! 符號標記。 用戶無法通過密碼或SSH登錄。 | passwd -l alice或usermod -L alice |
-S | 查看用戶賬戶狀態(tài)(顯示密碼是否鎖定、過期時間等)。 | 實際命令可能因系統(tǒng)不同有所差異(如passwd -S 或usermod -S)。 輸出包含密碼策略詳情。 | passwd -S alice(顯示 alice的賬戶狀態(tài)) |
-u | 解鎖用戶賬戶,恢復登錄權限。 | 移除密碼字段前的 ! 標記。 需確保賬戶未因其他原因(如過期)被禁用。 | passwd -u alice或usermod -U alice |
用戶賬號具有可用的登錄密碼以后,雖然 root 用戶可以指定用戶名為參數(shù),對指定賬號的密碼進行管理,但是普通用戶卻只能執(zhí)行單獨的“passwd”命令修改自己的密碼。
3、修改用戶賬號屬性——usermod
選項 | 描述 | 注意事項 | 示例 |
-u | 修改用戶的UID號,需確保新UID未被其他用戶占用。 | 修改后需手動更新用戶文件的所屬UID(如chown -R)。 避免使用系統(tǒng)保留UID(0、1-999)。 | usermod -u 1001 alice |
-d | 修改用戶的宿主目錄路徑(需絕對路徑)。 | 若需遷移原目錄內(nèi)容,需配合-m選項:usermod -d /new/home -m alice。 | usermod -d /data/alice_home alice |
-e | 設置賬戶失效時間,格式為YYYY-MM-DD。 | 空值表示永久有效。 時間從1970年1月1日起計算的天數(shù)存儲在/etc/shadow。 | usermod -e 2024-12-31 alice |
-g | 修改用戶的基本組(組名或GID)。 | 目標組必須存在。 修改后用戶新建文件的屬組將更新為新基本組。 | usermod -g developers alice或usermod -g 1001 alice |
-G | 修改用戶的附加組(多個組用逗號分隔,支持組名或GID)。 | 會覆蓋原有附加組,需結合-a選項追加(如usermod -aG group alice)。 | usermod -G ftp,webadmin alice或usermod -G 2001,2002 alice |
-s | 修改用戶的登錄Shell路徑。 | 路徑需在/etc/shells中注冊,否則可能禁止登錄。 設置為/sbin/nologin可禁用登錄。 | usermod -s /bin/zsh alice或usermod -s /sbin/nologin ftp_user |
-l | 更改用戶的登錄名稱(用戶名)。 | 不會自動更新用戶宿主目錄名,需手動修改。 需確保新用戶名唯一。 | usermod -l alice_new alice(將alice重命名為 alice_new) |
-L | 鎖定用戶賬戶,禁止登錄。 | 在/etc/shadow密碼字段前添加 ! 標記。 用戶無法通過密碼或SSH登錄。 | usermod -L alice |
-U | 解鎖用戶賬戶,恢復登錄權限。 | 移除/etc/shadow密碼字段前的 ! 標記。 需確保賬戶未因其他原因被禁用。 | usermod -U alice |
4、刪除用戶賬號——userdel
當操作系統(tǒng)中的某個用戶賬號不在使用時,可以使用userdel命令將該用戶賬戶刪除。
- userdel -r 賬戶名
- “-r”可以刪除用戶目錄。
(3)用戶賬號的初始配置文件、
添加一個新的用戶賬號后,useradd命令會在該用戶的宿主目錄中建立一些初始配置文件。
這些文件來自于賬號模板目錄/etc/skel/,基本上都是隱藏文件,較常用的初始配置文件包括“.bash_logout”、
“.bash_profile”、“.bashrc”。
可用ls -a查看。
.bash_profile | 在該用戶每次登錄時被執(zhí)行。 |
.bashrc | 在每次加載“/bin/Bash”程序(包括登錄系統(tǒng))時執(zhí)行。 |
.bash_logout | 在用戶每次退出登錄時執(zhí)行。 |
(4)組賬號管理
對于用戶賬號來說,對應的組賬號可分為基本組和附加組兩種類型。每一個用戶賬號可以是多個組賬號的成員,但是其基本組賬號只有一個。在/etc/asswd 文件中第 4 字段記錄的即為該用戶的基本組 GID號。而對于該用戶還屬于哪些附加組,則需要在對應組賬號的文件中體現(xiàn)。
1、組賬號文件
與組賬號相關的配置文件分別是/etc/group和/etc/gshadow。前者用于保存組賬號名稱、GID 號、組成員等基本信息,后者用于保存組賬號的加密密碼字串等信息(但是很少使用到)。某一個組賬號包含哪些用戶成員,將會在 group 文件內(nèi)最后一個字段中體現(xiàn)出來(基本組對應的用戶賬號默認可能不會列出),多個組成員之間使用“,”(逗號)分隔。
2、添加、管理、刪除組賬號
groupadd | 添加組賬號 | groupadd 組賬號名 |
gpasswd | 添加、設置、刪除組成員 | gpasswd -a 組賬號 用戶 ##添加組成員 gpasswd -d 組賬號 用戶 ##刪除組成員 gpasswd -M 用戶1 用戶2 ... 組賬號名 ##用戶1 用戶2 ...加入組賬號里 |
groupdel | 刪除組賬號 | groupdel 組賬號 |
(5)查詢賬號信息
groups | 查詢用戶賬號所屬的組 | 查看指定用戶賬號屬于那些組。 | groups或groups zhangsan |
id | 查詢用戶賬號的身份標識 | 可快速查看指定用戶賬號的UID、GID等標識信息。 | id root |
w | 查詢當前主機的用戶登錄情況 | 列初登錄賬號名稱、所在終端、登錄時間、來源地點等信息。 | w |
二、權限管理
1、管理目錄和文件的屬性
在 Linux 文件系統(tǒng)的安全模型中,系統(tǒng)中的文件(或目錄)具有兩個屬性:訪問權限和文件所有者,簡稱權限和歸屬。其中,訪問權限包括讀取、寫入、可執(zhí)行三種基本類型,歸屬包括屬主(擁有該文件的用戶賬號)、屬組(擁有該文件的組賬號)。Linux 操作系統(tǒng)根據(jù)文件或目錄的訪問權限、歸屬來對用戶訪問數(shù)據(jù)的過程進行控制。
(1)查看目錄和文件的屬性
以上,第 3、4 字段的數(shù)據(jù)分別表示該文件(或目錄)的屬主、屬組。
/etc/passwd 文件都屬于 root 用戶、root 組;
- 第1字段的數(shù)據(jù)表示該文件(或目錄)的訪問權限,如“&rwxr-xx-x”和“-rw-r一r一”。權限字段由四部分組成,各自的含義如下所述。
- 第 1個字符:表示該文件的類型,可以是d(目錄)、b(塊設備文件)、c(字符設備文件)、“_”(普通文件)、字母“1”(鏈接文件)等。
- 第 2~4 個字符:表示該文件的屬主用戶(user)對該文件的訪問權限。
- 第 5~7個字符:表示該文件的屬組內(nèi)各成員用戶(Group)對該文件的訪問權限。
- 第 8~10 個字符:表示其他任何用戶(other)對該文件的訪問權限。
- 第 11個字符:這里的“.”與 SELinux 有關,目前不必關注。
權限 | 文件 | 目錄 |
r | 查看文件內(nèi)容 | 查看目錄內(nèi)容(顯示子目錄、文件列表) |
w | 修改文件內(nèi)容 | 修改目錄內(nèi)容(在目錄中新建、移動、刪除文件或子目錄) |
x | 執(zhí)行該文件(程序或腳本) | 執(zhí)行cd命令進入或退出目錄 |
若用戶在對要訪問的文件或目錄中不具備相應的權限,則操作將被拒絕。
(2)設置目錄和文件的權限
需要設置文件或者目錄的權限時,主要通過 chmod 命令進行。在設置針對每一類用戶的訪問權限時可以采用兩種形式的權限表示方法:字符形式和數(shù)字形式。
r、w、x權限字符可分別表示為八進制數(shù)字 4、2、1,表示一個權限組合時需要將數(shù)字進行累加。
chmod [ugoa...] [+-=] [rwx] 文件或目錄
或
- chmod nnn 文件或目錄
- “nnn”為需要設置的具體權限值,如“755”“644”等;
- “ugoa”表示該權限設置所針對的用戶類別。“u”代表文件屬主,“”代表文件屬組內(nèi)的用戶,“o”代表其他任何用戶,“a”代表所有用戶(u、g、o的總和)。
- “+-=”表示設置權限的操作動作。“+”代表增加相應權限,“-”代表減少相應權限,“=”代表僅設置對應的權限。
- “rwx”是權限的字符組合形式,也可以拆分使用,如“r”“rx”等。
(3)設置目錄和文件的歸屬
需要設置文件或者目錄的歸屬時,主要通過 chowm 命令進行??梢灾辉O置屬主或?qū)俳M,也可以同時設置屬主、屬組。使用 chow 命令的基本格式如下:
- chown 屬主:屬組 文件或目錄...
- 同時設置屬主、屬組時,用戶名和組名之間用“:”進行分隔。若只設置屬組,則需使用“:組名”的形式。
(4)設置目錄和文件的默認權限
umask 就是默認指定目前用戶在新建文件或目錄時的權限默認值。
直接執(zhí)行“uwask”命令就是查看當前系統(tǒng)的默認權限。
例如:執(zhí)行“umask 022”即可以設置當前用戶的默認權限。
要注意的是,uwask 的分數(shù)指的是“該默認值需要減掉的權限”。因此r、w、x分別是 4、2、1,如果執(zhí)行“umask 022”代表 group和 other 被拿掉了權限“2”,也就是被拿掉了“寫”權限。
如果執(zhí)行命令“umask 000”,代表文件的默認權限是“777”。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Linux主機ssh使用秘鑰方式實現(xiàn)免登陸互通配置方式
實現(xiàn)多臺服務器間SSH免登陸的操作包括密鑰生成、配置與傳遞,首先在每臺主機上生成秘鑰,并將公鑰傳輸?shù)綄Ψ街鳈C的配置文件中,確保ssh服務開啟并且authorized_keys文件具有正確的權限,即可實現(xiàn)免登陸互通,其中可能遇到的問題通常跟文件權限有關2024-10-10ubuntu系統(tǒng)中/etc/rc.local和/etc/init.d/rc.local的區(qū)別詳解
這篇文章主要給大家介紹了關于在ubuntu系統(tǒng)下/etc/rc.local和/etc/init.d/rc.local區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,對需要的朋友們具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-08-08Linux系統(tǒng)中l(wèi)l命令顯示內(nèi)容日期格式方式
本文介紹了在Linux系統(tǒng)中使用`ll`命令查看文件日期格式的方法,并提供了兩種修改日期格式的命令,第一種是臨時修改,使用`export`命令;第二種是永久修改,需要在配置文件中添加相關設置2025-02-02