Linux下的用戶和組

用戶和組

GNU/Linux 經過用戶和用戶組實訪問控制 —— 包括對文件訪問、設備使用的控制。Linux 默認的訪問控制機制相對簡單直接,不過還有一些更加高級的機制,包括 ACL 和 LDAP Authentication.php

簡述

用戶通常指使用計算機的人。在本文語境中,該詞指用來識別用戶的用戶名稱,既能夠是 Mary 或 Bill 這樣的真名,也能夠是 Dragonlady, Pirate 這樣的暱稱。關鍵是,計算機給每一個帳戶分配了特定的名稱,而用戶則使用這些名稱訪問計算機。除了人以外,一些系統服務也以有部分限制,又享有部分特權的用戶帳戶身份運行。linux

因爲安全須要,「用戶管理」應運而生,以加以明確限制各個用戶帳戶的權限。超級用戶 root 於計算機裏擁有至高無上的管理權限,因此通常只做管理用。非特權用戶則能夠用 su 或sudo 程序以臨時得到特權。shell

個體能夠擁有多帳戶,只不過彼此名稱固然不一樣。但有一些用戶名稱已事先被系統佔用,好比 "root".數據庫

此外,任意用戶可能從屬某個「用戶組」。此外用戶也可以新加入某些已經存在的用戶組,以獲取該組所擁有的特權。安全

1、權限與屬主

 

第一列是文件訪問權限(例如,文件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---

2、用戶管理

使用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建立用戶。該命令還會設置用戶信息和密碼,囊括了chfnpasswd兩個命令的功能。

使用userdel命令刪除用戶:

# userdel -r [用戶名]

-r選項表示一併刪除用戶主目錄和郵件。

3、用戶信息存儲

本地用戶信息儲存在/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文件,該文件對普通用戶限制訪問。

4、用戶組管理

/etc/group文件儲存了系統中用戶組的信息,詳情參見:man group

使用groups命令查看用戶所在組的名稱:

$ groups [用戶名]

若省略用戶名,默認顯示當前用戶所在組。

id命令提供額外的信息,包括用戶UID以及相關用戶組GID:

$ id [用戶名]

查看全部組:

$ cat /etc/group

使用groupadd建立新的組:

# groupadd [組名]

使用gpasswd將用戶添加到組:

# gpasswd -a [用戶名] [組名]

刪除用戶組:

# groupdel [組名]

將用戶從組中移除:

# gpasswd -d [用戶名] [組名]

若是用戶已登陸,必須從新登陸使更改生效。

5、文件列表

警告: 不要手動編輯這些文件。有些工具能夠更好的處理鎖定、避免數據庫錯誤。

文件

做用

/etc/shadow

保存用戶安全信息

/etc/passwd

用戶帳戶信息

/etc/gshadow

保存組帳號的安全信息

/etc/group

定義用戶所屬的組

/etc/sudoers

能夠運行 sudo 的用戶

/home/*

主目錄

相關文章
相關標籤/搜索