2019獨角獸企業重金招聘Python工程師標準>>>
用戶和組
GNU/Linux?通過用戶和用戶組實現訪問控制?——?包括對文件訪問、設備使用的控制。Linux?默認的訪問控制機制相對簡單直接,不過還有一些更加高級的機制,包括?ACL?和?LDAP?Authentication.
簡述
用戶一般指使用計算機的人。在本文語境中,該詞指用來識別用戶的用戶名稱,既可以是?Mary?或?Bill?這樣的真名,也可以是?Dragonlady,?Pirate?這樣的昵稱。關鍵是,計算機給每個賬戶分配了特定的名稱,而用戶則使用這些名稱訪問計算機。除了人之外,一些系統服務也以有部分限制,又享有部分特權的用戶賬戶身份運行。
由于安全需要,「用戶管理」應運而生,以加以明確限制各個用戶賬戶的權限。超級用戶?root?于計算機里擁有至高無上的管理權限,所以一般只作管理用。非特權用戶則可以用?su?或sudo?程序以臨時獲得特權。
個體可以擁有多賬戶,只不過彼此名稱當然不同。但有一些用戶名稱已事先被系統占用,比如?"root".
此外,任意用戶可能從屬某個「用戶組」。此外用戶也能夠新加入某些已經存在的用戶組,以獲取該組所擁有的特權。
一、權限與屬主
?
第一列是文件訪問權限(例如,文件initramfs-linux.img的權限為-rw-r--r--),第三列和第四列分別是屬主和屬組(本例中所有文件屬主都是root用戶,屬組都是root組)。
?
上述例子中,sf_Shared目錄由root用戶和vboxsf組所有。使用stat命令也可以查看文件所有權和權限:
$?stat?-c?%U?/media/sf_Shared/
root
$?stat?-c?%G?/media/sf_Shared/
vboxsf
$?stat?-c?%A?/media/sf_Shared/
drwxrwx---
二、用戶管理
使用who命令,可以查看目前已登陸的用戶。
使用useradd命令添加用戶:
#?useradd?-m?-g?[初始組]?-G?[附加組]?-s?[登陸shell]?[用戶]
-m:創建用戶主目錄/home/[用戶名];在自己的主目錄內,即使不是root用戶也可以讀寫文件、安裝程序等等。
-g:設置用戶初始組的名稱或數字ID;該組必須是存在的;如果沒有設置該選項,useradd會根據/etc/login.defs文件中的USERGROUPS_ENAB環境變量進行設置。
-G:用戶要加入的附加組列表;使用逗號分隔多個組,不要添加空格;如果不設置,用戶僅僅加入初始組。
-s:用戶默認登錄shell的路徑;Arch?Linux的init腳本使用bash;啟動過程結束后,默認啟動的登錄shell在此處設定;請確保使用的shell已經安裝。
以典型的桌面系統為例,要添加一個名為archie的用戶,并使用bash作為登錄shell:
#?useradd?-m?-g?users?-s?/bin/bash?archie
有關useradd的高級用法,參見man頁:
$?man?useradd
通過下列命令設置GECOS字段(用戶信息,例如用戶全名):
#?chfn?[用戶名]
(這樣將會以交互式模式啟動chfn)
通過下列命令設置用戶密碼:
#?passwd?[用戶名]
另一個交互式界面的添加用戶的工具:
#?adduser
adduser會詢問一些常見的設置,并使用合適的默認值,調用useradd創建用戶。該命令還會設置用戶信息和密碼,囊括了chfn和passwd兩個命令的功能。
使用userdel命令刪除用戶:
#?userdel?-r?[用戶名]
-r選項表示一并刪除用戶主目錄和郵件。
三、用戶信息存儲
本地用戶信息儲存在/etc/passwd文件中。要查看系統上所有用戶賬戶:
$?cat?/etc/passwd
一行代表一個用戶,格式如下:
account:password:UID:GID:GECOS:directory:shell
此處:
§?account:用戶名
§?password:用戶密碼
§?UID:用戶的數字ID
§?GID:用戶所在主組的數字ID
§?GECOS:可選的注釋字段,通常記錄用戶全名
§?directory:用戶的主目錄($HOME)
§?shell:用戶的登陸shell(默認為/bin/sh)
注意:?Arch?Linux?使用影子密碼。passwd文件對所有人可讀,在里面存儲密碼(無論是否加密過)是很不安全的。在password字段,通常使用一個占位字符(x)代替。加密過的密碼儲存在/etc/shadow文件,該文件對普通用戶限制訪問。
四、用戶組管理
/etc/group文件儲存了系統中用戶組的信息,詳情參見:man?group。
使用groups命令查看用戶所在組的名稱:
$?groups?[用戶名]
若省略用戶名,默認顯示當前用戶所在組。
id命令提供額外的信息,包括用戶UID以及相關用戶組GID:
$?id?[用戶名]
查看所有組:
$?cat?/etc/group
使用groupadd創建新的組:
#?groupadd?[組名]
使用gpasswd將用戶添加到組:
#?gpasswd?-a?[用戶名]?[組名]
刪除用戶組:
#?groupdel?[組名]
將用戶從組中移除:
#?gpasswd?-d?[用戶名]?[組名]
如果用戶已登錄,必須重新登錄使更改生效。
五、文件列表
警告:?不要手動編輯這些文件。有些工具可以更好的處理鎖定、避免數據庫錯誤。
文件 | 作用 |
/etc/shadow | 保存用戶安全信息 |
/etc/passwd | 用戶賬戶信息 |
/etc/gshadow | 保存組賬號的安全信息 |
/etc/group | 定義用戶所屬的組 |
/etc/sudoers | 可以運行?sudo?的用戶 |
/home/* | 主目錄 |
?
?
?