1. 程式人生 > >No.22 用戶賬號管理和組賬號管理

No.22 用戶賬號管理和組賬號管理

linux 系統運維 用戶權限管理

Linux基於用戶賬號的訪問控制機制:

賬戶類型:用戶賬戶,系統賬戶。

識別方式:UIDGID

用戶賬號:

超級用戶:root、系統用戶、普通用戶。

組賬號:用戶區分權限,不用於登錄。基本組(私有組)、附加組(公有組)。

UID

root0

系統用戶:1-499

普通用戶:500-60000

賬號數據的存放:

存儲在本機的磁盤上,本地賬戶。

存儲在網絡上的專門的服務器上,網絡賬戶。

本地賬戶的數據文件:

/etc/passwd

保存用戶賬號的基本信息,每個用戶記錄一行,使用冒號分割字段。

字段 1:用戶賬號的名稱

字段 2:密碼字符串或占位符

字段 3:用戶賬戶的 UID

字段 4:所屬基本組的 UID

字段 5:用戶全名

字段 6:宿主目錄

字段 7:登錄 Shell 程序的路徑

/etc/shadow

保存密碼字符串、有效期等信息,每個用戶記錄,使用冒號分割字段。

字段 1:用戶賬號的名稱

字段 2:加密後的密碼字符串

字段 3:上次修改密碼的時間

字段 4:密碼的最短有效天數,默認是 0

字段 5:密碼的最長有效天數,默認是 99999

字段 6:密碼過期前的警告天數,默認是 7

字段 7:密碼過期後多少天禁用此賬戶

字段 8:賬號失效時間,默認值是空的

字段 9:保留字段(未使用)

本地組賬號的數據文件:

/etc/group

保存組賬號的基本信息,每一個記錄一行,使用冒號分割。

字段 1:組賬號的名稱

字段 2:密碼占位符

字段 3:組賬號的 GID

字段

4:本地的成員用戶列表

/etc/gshadow

保存組賬號的管理信息,每一個記錄一行,使用冒號分割。

字段 1:組賬號的名稱

字段 2:加密後的密碼字符串

字段 3:本地的管理員列表

字段 4:本地的成員用戶列表

添加用戶:useradd

-u:指定UID

-d:指定宿主目錄,缺省為/home/用戶名

-e:指定賬號時間:禁用用戶賬戶的時間,格式:YYYY-MM-DD

-g-G:指定所屬的基本組或附加組。

-M:不為用戶建立並初始化宿主目錄。

-s:指定用戶登錄shell環境。

2 設置密碼:passwd

-d:清空用戶密碼

-l:鎖定用戶賬號

-S:查看用戶賬戶的狀態是否被鎖定

-u:鎖定用戶賬戶

--stdin:從標準輸入獲取

[root@node0 nginx-1.8.0]# useradd tom # 創建用戶

[root@node0 nginx-1.8.0]# echo 123456 | passwd tom --stdin # 設置密碼

Changing password for user tom.

passwd: all authentication tokens updated successfully.

用戶初始配置文件:/etc/defaults/useradd

useradd行為時調用。

默認登錄定義文件:/etc/login.defs

useradd行為時調用。

配置文件來源:

新建用戶時,根據/etc/skel模板目錄進行復制修改。

主要初始配置文件:

~/.bash_profile:每次登錄時執行。

~/.bashrc:每次進入新的bash環境會執行。

~/.bash_logout:每次退出登錄時執行。

全局配置文件:

/etc/profile

/etc/bashrc

用戶初始文件會調用全局配置文件。

3 修改用戶usermod

usermod 選項 用戶名

-l:更改用戶賬戶的登錄名稱

-L:鎖定用戶賬戶

-U:解鎖用戶賬戶

-u:指定UID

-d:指定宿主目錄,缺省為/home/用戶名

-e:指定賬號時間:禁用用戶賬戶的時間,格式:YYYY-MM-DD

-g-G:指定所屬的基本組或附加組。

-s:指定用戶登錄shell環境。

4 用戶密碼有效期控制 chage

chage 選項 用戶名

-l:列出密碼的有效期信息

-E:指定賬號過期日期,格式為:YYYY-MM-DD

-m:指定密碼的最小天數

-M:指定密碼最大天數

[root@node0 nginx-1.8.0]# chage -l tom

Last password change : Nov 19, 2017

Password expires : never

Password inactive : never

Account expires : never

Minimum number of days between password change : 0

Maximum number of days between password change : 99999

Number of days of warning before password expires : 7

[root@node0 nginx-1.8.0]# chage -m 12 tom

[root@node0 nginx-1.8.0]# chage -l tom

Last password change : Nov 19, 2017

Password expires : never

Password inactive : never

Account expires : never

Minimum number of days between password change : 12

Maximum number of days between password change : 99999

Number of days of warning before password expires : 7

[root@node0 nginx-1.8.0]# chage -M 115 tom

[root@node0 nginx-1.8.0]# chage -l tom

Last password change : Nov 19, 2017

Password expires : Mar 14, 2018

Password inactive : never

Account expires : never

Minimum number of days between password change : 12

Maximum number of days between password change : 115

Number of days of warning before password expires : 7

[root@node0 nginx-1.8.0]# chage -E 2019-02-03 tom

[root@node0 nginx-1.8.0]# chage -l tom

Last password change : Nov 19, 2017

Password expires : Mar 14, 2018

Password inactive : never

Account expires : Feb 03, 2019

Minimum number of days between password change : 12

Maximum number of days between password change : 115

Number of days of warning before password expires : 7

5 刪除用戶 userdel

userdel 用戶名

-r:刪除宿主目錄和用戶郵件

[root@node0 nginx-1.8.0]# userdel -r tom # 刪除用戶

[root@node0 nginx-1.8.0]# tail -n 2 /etc/passwd # 檢查用戶是否存在

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

[root@node0 nginx-1.8.0]# ll /home/ # 查看用戶目錄是否存在

total 0

6 查看用戶ID信息

id 選項 用戶名

[root@node0 nginx-1.8.0]# id root

uid=0(root) gid=0(root) groups=0(root)

7 添加組賬戶 groupadd

groupadd 組名

-g:指定UID

[root@node0 ~]# groupadd sa

[root@node0 ~]# tail -1 /etc/group # 檢查是否添加

sa:x:500:

8 管理組成員

gpasswd 選項 組名

-A:定義組管理員列表

-a:添加組成員,每次只添加一個。

-d:刪除組成員,每次只刪除一個

-M:定義組成員用戶列表,可以設置多個。

[root@node0 ~]# useradd tom # 添加用戶

[root@node0 ~]# echo 123456 | passwd tom --stdin # 設置密碼

Changing password for user tom.

passwd: all authentication tokens updated successfully.

[root@node0 ~]# gpasswd -A tom sa # 將用戶添加到組管理員列表

9)刪除組 groupdel

groupdel 組名

刪除的目標組不可以是用戶的基本組。

[root@node0 ~]# groupdel sa

************************************************************************************************

用戶登錄時,home目錄異常,提示無法切換home目錄:

[root@test home]# useradd xvge # 添加用戶

[root@test home]# passwd xvge # 設置密碼

Changing password for user xvge.

New password:

BAD PASSWORD: it is too simplistic/systematic

BAD PASSWORD: is too simple

Retype new password:

passwd: all authentication tokens updated successfully.

[root@test home]# ls # 檢查用戶目錄

xvge

[root@test home]# usermod -d /opt/xvge xvge # 更改用戶目錄

[root@test home]# grep xvge /etc/passwd # 查看更改是否成功

xvge:x:500:500::/opt/xvge:/bin/bash

[root@test home]# su - xvge # 切換到用戶

su: warning: cannot change directory to /opt/xvge: No such file or directory

-bash-4.1$

原因:

通過 usermod 修改了賬號的家目錄後只是修改了/etc /passwd 文件中的記錄,但是用戶的

home 目錄不會移動。

解決辦法:

使用 usermod 修改用戶的 home 目錄後,記得將此用戶的 home 目錄使用 mv 一起移動。

************************************************************************************************

/bin/bash是默認的shell環境。

/sbin/nologin指定不讓用戶登錄的shell環境。


No.22 用戶賬號管理和組賬號管理