歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux用戶與組的概念

一.用戶與組的概念

1.理解linux多用戶,多任務的特性

Linux是一個真實的、完整的多用戶多任務操作系統,多用戶多任務就是可以在系統上建立多個用戶,而多個用戶可以在同一時間內登錄同一個系統執行各自不同的任務,而互不影響,例如某台linux服務器上有4個用戶,分別是root、www、ftp和mysql,在同一時間內,root用戶可能在查看系統日志,管理維護系統,www用戶可能在修改自己的網頁程序,ftp用戶可能在上傳軟件到服務器,mysql用戶可能在執行自己的SQL查詢,每個用戶互不干擾,有條不紊的進行著自己的工作,而每個用戶之間不能越權訪問,比如www用戶不能執行mysql用戶的SQL查詢操作,ftp用戶也不能修改www用戶的網頁程序,因此可知,不同用戶具有不同的權限,每個用戶是在權限允許的范圍內完成不同的任務,linux正是通過這種權限的劃分與管理,實現了多用戶多任務的運行機制。

2.linux下用戶的角色分類

在linux下用戶是根據角色定義的,具體分為三種角色:

超級用戶:擁有對系統的最高管理權限,默認是root用戶。

普通用戶:只能對自己目錄下的文件進行訪問和修改,具有登錄系統的權限,例如上面提到的www用戶、ftp用戶等。

虛擬用戶:也叫“偽”用戶,這類用戶最大的特點是不能登錄系統,它們的存在主要是方便系統管理,滿足相應的系統進程對文件屬主的要求。例如系統默認的bin、adm、nobody用戶等,一般運行的web服務,默認就是使用的nobody用戶,但是nobody用戶是不能登錄系統的。

3.用戶和組的概念

我們知道,Linux是一個多用戶多任務的分時操作系統,如果要使用系統資源,就必須向系統管理員申請一個賬戶,然後通過這個賬戶進入系統。這個賬戶和用戶是一個概念,通過建立不同屬性的用戶,一方面,可以合理的利用和控制系統資源,另一方面也可以幫助用戶組織文件,提供對用戶文件的安全性保護。

每個用戶都用一個唯一的用戶名和用戶口令,在登錄系統時,只有正確輸入了用戶名和密碼,才能進入系統和自己的主目錄。

用戶組是具有相同特征用戶的邏輯集合,有時我們需要讓多個用戶具有相同的權限,比如查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問授權,如果有10個用戶的話,就需要授權10次,顯然這種方法不太合理;另一種方法是建立一個組,讓這個組具有查看、修改此文件的權限,然後將所有需要訪問此文件的用戶放入這個組中,那麼所有用戶就具有了和組一樣的權限。這就是用戶組,將用戶分組是Linux 系統中對用戶進行管理及控制訪問權限的一種手段,通過定義用戶組,在很大程度上簡化了管理工作。

4.用戶和組的關系:

用戶和用戶組的對應關系有:一對一、一對多、多對一和多對多;下圖展示了這種關系:

一對一:即一個用戶可以存在一個組中,也可以是組中的唯一成員。

一對多:即一個用戶可以存在多個用戶組中。那麼此用戶具有多個組的共同權限。

多對一:多個用戶可以存在一個組中,這些用戶具有和組相同的權限。

多對多:多個用戶可以存在多個組中。其實就是上面三個對應關系的擴展。

二 用戶配置文件概述

1.用戶和組相關的配置文件

(1)/etc/passwd文件

系統用戶配置文件,是用戶管理中最重要的一個文件。這個文件記錄了Linux系統中每個用戶的一些基本屬性,並且對所有用戶可讀。/etc/passwd中每一行記錄對應一個用戶,每行記錄又被冒號分割,其格式和具體含義如下:

用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:默認shell

下面是/etc/passwd文件的部分輸出:

[root@localhost ~]# more /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

下面是每個字段的詳細含義:

用戶名:是代表用戶賬號的字符串。

口令:存放著加密後的用戶口令,雖然這個字段存放的只是用戶口令的加密串,不是明文,但是由於/etc/passwd文件對所有用戶都可讀,所以這仍是一個安全隱患。因此,現在許多Linux 版本都使用了shadow技術,把真正加密後的用戶口令存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一個特殊的字符,例如用“x”或者“*”來表示。

用戶標識號:就是用戶的UID,每個用戶都有一個UID,並且是唯一的,通常UID號的取值范圍是0~65535,0是超級用戶root的標識號,1~99由系統保留,作為管理賬號,普通用戶的標識號從100開始。而在Linux系統中,普通用戶UID默認從500開始。UID是linux下確認用戶權限的標志,用戶的角色和權限都是通過UID來實現的,因此多個用戶公用一個UID是非常危險的,會造成系統權限和管理的混亂,例如將普通用戶的UID設置為0後,這個普通用戶就具有了root用戶的權限,這是極度危險的操作。因此要盡量保持用戶UID的唯一性。

組標識號:就是組的GID,與用戶的UID類似,這個字段記錄了用戶所屬的用戶組。它對應著/etc/group文件中的一條記錄。

注釋性描述:字段是對用戶的描述信息,比如用戶的住址、電話、姓名等等。

主目錄:也就是用戶登錄到系統之後默認所處的目錄,也可以叫做用戶的主目錄、家目錄、根目錄等等。

默認shell:就是用戶登錄系統後默認使用的命令解釋器,shell是用戶和linux內核之間的接口,用戶所作的任何操作,都是通過shell傳遞給系統內核的。linux下常用的shell有sh、bash、csh等,管理員可以根據用戶的習慣,為每個用戶設置不同的shell。

(2)/etc/shadow文件

用戶影子文件,由於/etc/passwd文件是所有用戶都可讀的,這樣就導致了用戶的密碼容易出現洩露,因此,linux將用戶的密碼信息從/etc/passwd中分離出來,單獨的放到了一個文件中,這個文件就是/etc/shadow,該文件只有root用戶擁有讀權限,從而保證了用戶密碼的安全性。

下面介紹下/etc/shadow文件內容的格式:

用戶名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:保留字段

例如:下面是/etc/shadow文件的部分輸出:

[root@localhost ~]# more /etc/shadow

root:$1$Uvip.QJI$GteCsLrSSfpnMs.VCOvbs/:14169:0:99999:7:::

bin:*:13934:0:99999:7:::

daemon:*:13934:0:99999:7:::

adm:*:13934:0:99999:7:::

下面是每個字段的詳細含義:

用戶名:與/etc/passwd文件中的用戶名有相同的含義。

加密口令:存放的是加密後的用戶口令字串,如果此字段是“*”、“!”、“x”等字符,則對應的用戶不能登錄系統。

最後一次修改時間:表示從某個時間起,到用戶最近一次修改口令的間隔天數。可以通過passwd 來修改用戶的密碼,然後查看/etc/shadow中此字段的變化。

最小時間間隔:表示兩次修改密碼之間的最小時間間隔。

最大時間間隔:表示兩次修改密碼之間的最大時間間隔,這個設置能增強管理員管理用戶的時效性。

警告時間:表示從系統開始警告用戶到密碼正式失效之間的天數。

不活動時間:此字段表示用戶口令作廢多少天後,系統會禁用此用戶,也就是說系統不再讓此用戶登錄,也不會提示用戶過期,是完全禁用。

失效時間:表示該用戶的帳號生存期,超過這個設定時間,帳號失效,用戶就無法登錄系統了。如果這個字段的值為空,帳號永久可用。

保留字段:linux的保留字段,目前為空,以備linux日後發展之用。

(3)/etc/group文件

用戶組配置文件,用戶組的所有信息都存放在此文件中。

下面介紹下/etc/group文件內容的格式:

組名:口令:組標識號:組內用戶列表

例如:下面是/etc/group的部分輸出:

[root@localhost ~]# more /etc/group

root:x:0:root

bin:x:1:root,bin,daemon

daemon:x:2:root,bin,daemon

下面是/etc/group每個字段的含義:

組名:是用戶組的名稱,由字母或數字構成。與/etc/passwd中的用戶名一樣,組名不能重復。

口令:存放的是用戶組加密後的口令字串,密碼默認設置在/etc/gshadow文件中,而在這裡用“x”代替,linux系統下默認的用戶組都沒有口令,可以通過gpasswd來給用戶組添加密碼。

組標識號:就是GID,與/etc/passwd中的組標識號對應。

組內用戶列表: 顯示屬於這個組的所有用戶,多個用戶之間用逗號分隔。

2./etc/login.defs文件

用來定義創建一個用戶時的默認設置,比如指定用戶的UID和GID的范圍,用戶的過期時間、是否需要創建用戶主目錄等等。

下面是rhel5下的/etc/login.defs文件,簡單介紹如下:

MAIL_DIR        /var/spool/mail

當創建用戶時,同時在目錄/var/spool/mail中創建一個用戶mail文件

PASS_MAX_DAYS   99999

#指定密碼保持有效的最大天數

PASS_MIN_DAYS   0

表示自從上次密碼修改以來多少天後用戶才被允許修改口令

PASS_MIN_LEN    5

指定密碼的最小長度

PASS_WARN_AGE   7

表示在口令到期前多少天系統開始通知用戶口令即將到期

UID_MIN                   500

指定最小UID為500 ,也就是說添加用戶時,用戶的UID 從500開始

UID_MAX                 60000

指定最大UID為60000

GID_MIN                   500

指定最小GID為500,也就是添加組時,組的GID從500開始。

GID_MAX                 60000

指定最大GID為60000

CREATE_HOME     yes

此項是指定是否創建用戶主目錄,yes為創建,no為不創建。

3./etc/default/useradd文件

當我們通過useradd命令不加任何參數創建一個用戶後,用戶默認的主目錄一般位於/home下,默認使用的shell是/bin/bash,這是為什麼呢,看看/etc/default/useradd這個文件的內容就完全明白了。

[root@localhost ~]# more /etc/default/useradd

# useradd defaults file

GROUP=100  

HOME=/home  #此項表示將新建用戶的主目錄放在/home目錄下

INACTIVE=-1 #此項表示是否啟用帳號過期禁用,-1表示不啟用

EXPIRE=     #此項表示帳號過期日期,不設置表示不啟用

SHELL=/bin/bash  #此項指定了新建用戶的默認shell類型

SKEL=/etc/skel  #此項用來指定用戶主目錄默認文件的來源,也就是說新建用戶主目錄下的文件都是從這個目錄下復制而來的

CREATE_MAIL_SPOOL=no

/etc/default/useradd文件定義了新建用戶的一些默認屬性,比如用戶的主目錄、使用的shell等等,通過更改此文件,可以改變創建新用戶的默認屬性值。

改變此文件有兩種方法,一種是通過文本編輯器方式更改,另一種是通過useradd命令來更改。這裡介紹一下第二種方法:

Useradd命令加“-D”參數後,就可以修改配置文件/etc/default/useradd,使用的一般格式為:

useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]

每個選項詳細含義如下:

-g default_group

表示新建用戶的起始組名或者GID,組名必須為已經存在的用戶組名稱,GID也必須是已經存在的用戶組GID。與/etc/default/useradd文件中“GROUP”行對應。

-b default_home

指定新建用戶主目錄的上級目錄,也就是所有新建用戶都會在此目錄下創建自己的主目錄。與/etc/default/useradd文件中HOME行對應。

-s default_shell

指定新建用戶默認使用的shell,與/etc/default/useradd文件中“SHELL”行對應。

-f default_inactive

指定用戶帳號過期多長時間後就永久停用,與/etc/default/useradd文件中“INACTIVE”行對應。

-e default_expire_date

指定用戶帳號的過期時間。與/etc/default/useradd文件中“EXPIRE”行對應。

例子:

useradd –D不加任何參數時,顯示/etc/default/useradd文件的當前設置

[root@localhost ~]# useradd -D  

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

如果要修改添加用戶時的默認shell為/bin/csh,可以這麼操作:

[root@localhost ~]# useradd -D -s /bin/csh

[root@localhost ~]# useradd -D

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/csh

SKEL=/etc/skel

4./etc/skel目錄

在創建一個新用戶後,會在新用戶的主目錄下看到類似.bash_profile, .bashrc, .bash_logout等文件,這些文件是怎麼來的呢,如果我想讓新建立的用戶在主目錄下默認擁有自己指定的配置文件,該如何設置呢?

/etc/skel目錄就是解決這個問題的,/etc/skel目錄定義了新建用戶在主目錄下默認的配置文件,更改/etc/skel目錄下的內容就可以改變新建用戶默認主目錄的配置文件信息。

待續!

本文出自 “技術成就夢想” 博客,請務必保留此出處http://ixdba.blog.51cto.com/2895551/531787

Copyright © Linux教程網 All Rights Reserved