天天看點

使用者管理

Linux是個多使用者多任務作業系統,所有要使用系統資源的使用者都必須向管理者申請一個賬号,然後以這個賬号的身份進入系統。使用者的賬号一方面能幫助管理者對使用系統的使用者進行跟蹤,并控制他們對系統資源的通路;另一方面也能幫助使用者組織檔案,并為使用者提供安全性保護。每個使用者賬号都擁有一個惟一的使用者名和使用者密碼。使用者在登入時輸入正确的使用者名和密碼後,才能進入系統和自己的主目錄。

實作使用者的管理,要完成的工作主要有如下幾個方面:

1、使用者賬号的添加、删除和修改。

2、使用者密碼的管理。

3、使用者組的管理。

首先Linux使用者類别有:

管理者,UID:root,0

系統使用者,UID:1-499(CentOS 6),1-999(CentOS 7)

登陸使用者,UID:>500(CentOS 6),>1000(CentOS 7)

使用者組類别:

管理者組,GID:root,0

系統組,GID:1-499(CentOS 6),1-1000(CentOS 7)

普通組,GID:>500(CentOS 6),>1000(CentOS 7)

Linux組的類别:

使用者的主要組(主組):每個有且僅有一個主要組,當使用者建立時,自動建立一個與使用者同名的組作為主要組。

使用者的附加組(輔助組):一個使用者可以屬于零個或多個輔助組。

CentOS6和7的預設UID和GID不同,這個是由于/etc/login.defs檔案裡面的預設值所決定的

<a href="http://s1.51cto.com/wyfs02/M00/85/51/wKioL1egC9bAeHcFAABGjOhu7ec016.png" target="_blank"></a>

Linux使用者群組的主要配置檔案

/etc/passwd:使用者及其屬性資訊(名稱、UID、主組ID等)

該檔案裡面一共有7項,包括

# [root@centos ~]# cat  /etc/passwd

# root(使用者名):x(密碼):0(UID):0(GID):root(注釋):/root(家目錄):/bin/bash(預設SHELL)

使用者管理

假如把普通使用者的UID更改成0,該普通使用者會變成管理者賬号,因為在Linux系統裡面,識别管理者是否為管理者,就是檢視使用者的UID号碼,為0則為管理者,在生産環境中,可能會把管理者root的賬号改成其他名字,這樣做是以防止黑客攻擊root賬号來進行破解。

/etc/group:組及其屬性資訊

getent group [groupname]

# [root@centos7 ~]# cat /etc/group

# root(主組):x(組密碼):0(GID):gentoo(附加組的使用者清單)

組成員:将該組作為輔助組的成員清單。當成員先把該組當作輔助組,再轉成主要組時,不改變。當成員離開該組時,被删除。

/etc/shadow:使用者密碼及其相關屬性

# [root@centos 7~]# cat  /etc/shadow

# root(使用者名):$6$(加密方式為sha512加密)5wrv8BV(随機數,俗稱鹽)$n3wljU/4.OUa/X.RYOGbE3SX72vay1Qo1ZXiUNZhuQJIB7fdzE87gaCQiuiOZbin(使用者密碼):17110(從1970-1-1到最近一次修改的時間經過了多少天來表示):0(最小存活期,密碼再過幾天可以被更改):99999(最大存活期,密碼過期時間):7(在正确登入時,密碼過期前提醒時間):(在正确登入時,密碼過期後幾天賬号會被鎖定):(從1970年1月1日算起,多少天後帳号失效):(保留)

使用者管理

上面這個設定了密碼顯示的使用者。

現在我們再建立一個使用者看看

[root@centos6 ~]# useradd wang

[root@centos6 ~]# tail -1 /etc/shadow

wang:!!:17015:0:99999:7:::

我們會看見賬号密碼那裡有兩個!!,這表示賬号被鎖定,沒有密碼的話不允許該使用者去登陸,假如有密碼,但是那裡還是有一個歎号的話,也表示賬号被鎖定,不對使用者進行解鎖的話該使用者将無法登陸。假如沒有歎号的話,該使用者可以沒有密碼的情況下面直接登陸。不過該功能隻能在CentOS 5版本和更老的版本可以實作,為了安全起見,從CentOS 6以後已經修正此問題。

/etc/gshadow:組密碼及其相關屬性

getent gshadow [groupname]

# cat /etc/gshadow

# root/(主組):(組密碼):(組管理者清單):gentoo(附加組的使用者清單)

當使用者不是該groupname的輔助組成員時,則需要輸入密碼,成功後臨時以主要組的身份加入該組。

當使用者是該groupname的輔助組成員時,無需輸入密碼,将臨時以主要組的身份加入該組,而其原有的主要組,臨時變為輔助組。

注意:為安全起見,現在一般都沒有組密碼,直接管理者指派,因為當其他使用者知道了組密碼,可以随意加入該組,這樣的話就顯得不安全。

使用者群組管理指令

使用者管理指令:   useradd   usermod  userdel 

組的管理指令:   groupadd   groupmod   groupdel

使用者管理指令

useradd [options] username增加使用者

-u  UID username 建立使用者時指定UID,(如不指定則Centos:500-60000, Centos7: 1000-60000)

-o  配合-u選項使用,不檢查UID的唯一性,可以與已存在的使用者的uid相同

-g  groupname username 建立使用者時,指定主組為某個已存在的組(将不會再建立與使用者同名的組)

-G  group1[,group2] username  指定使用者的輔助組,但GID要事先存在

-N username 不建立私用組做主組,使用使用者的主要組做主組

-d  目錄: 指定家目錄(確定指定的家目錄所在的上級目錄要存在,且家目錄本身不能存在)

-c  備注  建立使用者時指定描述資訊

-s  shell:指定預設shell,應該指定使用/etc/shells檔案中出現的shell

-r  建立系統使用者 特點:CentOS 6: ID&lt;500,CentOS 7: ID&lt;1000 預設shell為/sbin/nologin

-D  顯示或更改預設設定  (預設值設定:/etc/default/useradd或/etc/login.defs檔案中)(此指令相當于cat / etc/default/useradd)

注:建立使用者時的諸多預設設定配置檔案為/etc/login.defs

useradd –D -s SHELL      -d是指定使用者的家目錄和登入shell

注意:建立使用者不加-d和-s是是系統預設的家目錄(/home/qqq)和登入shell(/bin/bash)。

useradd –D –b BASE_DIR

useradd –D –g GROUP

[root@centos6 ~]# useradd -D

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

該指令,可以檢視到建立使用者時候的各項預設值

例如更改其他使用者預設的家目錄和預設SHELL之類等等的參數就在這裡面

/etc/skel    家目錄檔案的來源,在此檔案夾裡面建立檔案的話,建立新使用者的時候會連指定的新檔案一并建立

/etc/login.defs  一些使用者群組等建立的預設設定的檔案

usermod [options] username 修改指定使用者(跟useradd指令使用方法類似)

-u UID 更改使用者的UID

-g 組名  使用者名 更改使用者的主組

-G "" username  或 usermod -G primarygroup username 清空使用者所有的輔助組

-aG  組名,可以追加輔助組而不用覆寫之前的組

-s SHELL 更改使用者的預設SHELL

-c 注釋

-d home,跟-m同時用移動家目錄資料,并将家目錄移動到目的目錄并改名 (不會建立,隻修改/etc/passwd當中的家目錄資訊)

-m 移動家目錄資料,跟-d同時用

-l 新的名字,把使用者改名

-e 指定過期日期yyyy-mm-dd

-f days  指定密碼過期之後多少天帳戶過期

-L 鎖定指定使用者,在/etc/shadow 裡面加!    (同以上/etc/shadow的解釋)

-U 解鎖使用者,将/etc/shadow 裡面的!号拿掉    (同以上/etc/shadow的解釋)

userdel [options] LOGIN 删除指定使用者

-r 連同家目錄和郵箱一起删除

組的管理指令

groupadd [options] groupname 添加指定組

-g:指定使用者的GID

-r groupname: 建立系統組     CentOS 6: ID&lt;500   CentOS 7: ID&lt;1000

groupmod [options] GROUP 修改指定組

-g   newgid groupid: 修改組的GID

-n  newgrpname oldgrpname: 修改組的組名

groupdel [options] GROUP 删除指定組

groupmems [options]  [action] 更改和檢視組成員

groupmems -a user_name | -d user_name | [-g group_name] | -l | -p  (CentOS 7才有此指令)

options:

-g, --group groupname 更改為指定組 (隻有root)(檢視組裡有哪些使用者)

-l -g 使用者名: 檢視指定使用者名組下面還有哪些使用者屬于此組

-a    要增加的組

切換使用者或以其他使用者身份執行指令

切換使用者的方式:

su UserName:非登入式切換,即不會讀取目标使用者的配置檔案,不改變目前工作目錄

su – UserName:登入式切換,會讀取目标使用者的配置檔案,切換至家目錄,完全切換

root su至其他使用者無須密碼;非root使用者切換時需要密碼

換個身份執行指令:

su [-] UserName-c 'COMMAND'

選項:-l –login:

su -l UserName相當于su-UserName

檢視使用者相關的ID資訊

id [OPTION]… [USER]

-u: 檢視使用者的UID

-g: 檢視使用者的GID

-G: 檢視使用者的Groups

-n: 檢視使用者的Name

修改使用者密碼政策

chage -l username 顯示帳戶的密碼資訊

-d 指定密碼的上次修改時間(yyyy-mm-dd)

-d 0 則強制使用者下次登入時必須修改密碼

-E 指定賬戶的過期時間

-I 密碼過期之後多少天帳戶過期

-m 設定最小存活時間

-M 設定最大存活時間

-W 設定密碼過期前的提醒時間

chage username 互動式修改使用者的密碼政策

使用者管理

示例:

chage -d 0 tom 下一次登入時強制重設密碼

chage -m 0 –M 42 –W 14 –I 7 tom

chage -E 2016-09-10 tom

getent  passwd,shadow,gourp,gshadow  USERNAME/GROUPNAME

直接檢視指定使用者/組裡面的passwd,shadow,gourp,gshadow檔案裡面的内容

其他指令總結:

chsh:修改預設的shell

chfn:修改使用者注釋

finger:檢視個人資訊

vipw:使用vim來編輯passwd檔案

vigr:使用vim來編輯group檔案

pwconv:pwconv指令用來開啟使用者的投影密碼

pwunconv:pwconv指令用來關閉使用者的投影密碼

Linux系統裡的使用者和群組密碼,分别存放在名稱為passwd和group的檔案中, 這兩個檔案位于/etc目錄下。因系統運作所需,任何人都得以讀取它們,造成安全上的破綻。投影密碼将檔案内的密碼改存在/etc目錄下的shadow和gshadow檔案内,隻允許系統管理者讀取,同時把原密碼置換為"x"字元,有效的強化了系統的安全性。

批量增加使用者和改密碼

newusers FILE(有格式的檔案)  批量加使用者  檔案格式  /etc/passwd 檔案的格式 root:x:0:0::/root:/bin/bash

ex. newusers user.txt

chpasswd FILE (有格式的檔案) 批量改密碼   USERNAME:PASSWORD

ex. cat p.txt |chpasswd

注意,按照以上步驟的方法批量添加完使用者和密碼以後,這些使用者的家目錄裡面并沒有配置,此時需要我們手動把這裡面的配置複制到它們的家目錄裡面

/etc/skel 這個檔案甲下面的檔案是關于使用者初始配置裡面的變量檔案之類

cp -r /etc/skel/.[^.]* /home/USERNAME

練習:

建立下面的使用者、組群組成員關系

名字為admins 的組

使用者natasha,使用admins 作為附屬組

使用者harry,也使用admins 作為附屬組

使用者sarah,不可互動登入系統,且不是admins 的成員,

natasha,harry,sarah密碼都是centos

groupadd admins

useradd -G admins natasha

useradd -G admins harry

useradd -s /sbin/nologin sarah

echo centos |passwd --stdin natasha &gt; /dev/null

echo centos |passwd --stdin harry &gt; /dev/null

echo centos |passwd --stdin sarah &gt; /dev/null

/dev/null是一個特殊的裝置,就是一個資料黑洞,吞噬送往該裝置的所有資料,以後如果不想讓螢幕有顯示可以,會經常用到這個/dev/unll 的資料吞噬裝置

本文轉自 優果馥思 51CTO部落格,原文連結:http://blog.51cto.com/youguofusi/1965892

繼續閱讀