GNU/Linux 經過用戶和用戶組實現訪問控制 —— 包括對文件訪問、設備使用的控制。Linux 默認的訪問控制機制相對簡單直接,不過還有一些更加高級的機制,包括 ACL 和 LDAP Authentication.php
用戶通常指使用計算機的人。在本文語境中,該詞指用來識別用戶的用戶名稱,既能夠是 Mary 或 Bill 這樣的真名,也能夠是 Dragonlady, Pirate 這樣的暱稱。關鍵是,計算機給每一個帳戶分配了特定的名稱,而用戶則使用這些名稱訪問計算機。除了人以外,一些系統服務也以有部分限制,又享有部分特權的用戶帳戶身份運行。linux
因爲安全須要,「用戶管理」應運而生,以加以明確限制各個用戶帳戶的權限。超級用戶 root 於計算機裏擁有至高無上的管理權限,因此通常只做管理用。非特權用戶則能夠用 su 或sudo 程序以臨時得到特權。shell
個體能夠擁有多帳戶,只不過彼此名稱固然不一樣。但有一些用戶名稱已事先被系統佔用,好比 "root".數據庫
此外,任意用戶可能從屬某個「用戶組」。此外用戶也可以新加入某些已經存在的用戶組,以獲取該組所擁有的特權。安全
第一列是文件訪問權限(例如,文件initramfs-linux.img的權限爲-rw-r--r--),第三列和第四列分別是屬主和屬組(本例中全部文件屬主都是root用戶,屬組都是root組)。bash
上述例子中,sf_Shared目錄由root用戶和vboxsf組全部。使用stat命令也能夠查看文件全部權和權限:工具
$ stat -c %U /media/sf_Shared/加密
rootspa
$ stat -c %G /media/sf_Shared/.net
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/* |
主目錄 |