1. 程式人生 > >Linux用戶和組

Linux用戶和組

Linux之路

我們知道Linux是一個多用戶多任務的操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。由於是多用戶操作系統,必然要涉及到時管理用戶。由於用戶訪問Linux上的資源比較多,為了方便管理出現的組的概念.將多個用戶添加到一個組裏,方便管理。

介紹安全3A

資源分派:

  • Authentication:認證
  • Authorization:授權
  • Accouting|Audition:審計

用戶user

令牌token,identity
Linux用戶:Username/UID
管理員:root, 0
普通用戶:1-65535
系統用戶:1-499, 1-999 (CentOS7)

對守護進程獲取資源進行權限分配
登錄用戶:500+, 1000+(CentOS7)
交互式登錄

組group

Linux組:Groupname/GID
管理員組:root, 0
普通組:
系統組:1-499, 1-999(CENTOS7)
普通組:500+, 1000+(CENTOS7)

組的類別

用戶的主要組(primary group)
Linuxk 中管理員創建一個用戶,默認組名和用戶名是一樣的,用戶必須屬於一個且只有一個主組(私有組)
用戶的附加組(supplementary group)
一個用戶可以屬於零個或多個輔助組


用戶和組的配置文件

/dev/passwd:用戶及其屬性信息(名稱、UID、主組ID等)

格式 : name:password:UID:GID:GECOS:directory:shell

  • login name:登錄用名(wang)
  • passwd:密碼 (x)
  • UID:用戶身份編號 (1000)
  • GID:登錄默認所在組編號 (1000)
  • GECOS:用戶全名或註釋
  • home directory:用戶主目錄 (/home/wang)
  • shell:用戶默認使用shell (/bin/bash)

修改用戶屬性的相關命令

  • chfn:修改用戶的註釋信息
  • finger:查看用戶的註釋信息
  • chsh:修改用戶的shell類型

當用戶的shell類型為/sbin/nologin時,代表該用戶無法登錄,用su是切換不過去的
用戶的uid是默認往上遞增的,這個定義來自於/etc/login.defs這個文件,當uid在這個範圍無法往上遞增時,會從最小的uid往上遞增。

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

格式:

  • 登錄用名
  • 用戶密碼:一般用sha512加密
  • 從1970年1月1日起到密碼最近一次被更改的時間
  • 密碼再過幾天可以被變更(0表示隨時可被變更)
  • 密碼再過幾天必須被變更(99999表示永不過期)
  • 密碼過期前幾天系統提醒用戶(默認為一周)
  • 密碼過期幾天後帳號會被鎖定
  • 從1970年1月1日算起,多少天後帳號失效
  • 為保留字段

修改密碼屬性的相關命令

  • chage:改變用戶的密碼屬性

用戶的密碼前面有 !代表該用戶已鎖定,但可以切換。
鎖定帳戶,可以在加密口令前加個!。加兩個!號是雙保險。

/etc/group:組及其屬性信息

格式:

  • 群組名稱:就是群組名稱
  • 群組密碼:通常不需要設定,密碼是被記錄在 /etc/gshadow
  • GID:就是群組的 ID
  • 以當前組為附加組的用戶列表(分隔符為逗號)
/etc/gshadow:組密碼及其相關屬性

格式:

  • 群組名稱:就是群組名稱
  • 群組密碼:
  • 組管理員列表:組管理員的列表,更改組密碼和成員
  • 以當前組為附加組的用戶列表:(分隔符為逗號)

用戶和組的相關命令

useradd:用戶創建

語法:useradd [options] login.name

  • -u 指定UID,如不指定,正常情況id按最大的id上遞增,超過範圍則按最小的數遞增
  • -o 配合-u選項,不檢查UID的唯一性
  • -g GID: 指明用戶所屬的基本組,可為組名,也可以為GID
  • -c ”COMMMENT”: 用戶的註釋信息
  • -d home_dir 以指定的路徑(不存在)為家目錄
  • -s shell: 指明用戶的默認shell程序,可用列表在/etc/shells
  • -G group1.. 為用戶指明附加組,須存在
  • -N 不創建私有組做主組,使用users組做主組100
  • -r 創建系統用戶
  • -m 創建家目錄,用於系統用戶
  • -M 不創建家目錄,用於非系統用戶,家目錄不存在則登錄會進入”/”

默認值設定:/etc/default/useradd文件中

useradd -D 顯示基本設置
[root@sentos7 ~]#useradd -D
GROUP=100 -N選項,如果不創建同名主組,則屬於這個組
HOME=/home 家目錄
INACTIVE=-1 賬號過期的寬限期,為-1,不會鎖定
EXPIRE= 賬號有效期,默認99999
SHELL=/bin/bash 默認使用的shell類型
SKEL=/etc/skel 創建家目錄的源文件地址
CREATE_MAIL_SPOOL=yes 是否創建mail
useradd -D -s 修改默認shell類型
useradd -D -b 修改默認家目錄
usreadd -D -g group -N選項之後默認的主組

*/etc/default/useradd 新建用戶默認信息
/etc/skel/ 家目錄復制地址
/etc/login.defs 添加用戶配置信息
/var/spool/mail 郵箱路徑
newusers /etc/passwd格式文件: 批量創建用戶
cat filename | chpasswd 格式:username:passwd

usermod:用戶屬性修改

語法:usermod [options] login

  • -u UID 新UID
  • -g GID或者group 新主組
  • -G Group1[,Group].. 新附加組,原來的附加組將會被覆蓋
  • -aG 若保留原有,則要同時使用-a 選項
  • -s shell 新的默認使用shell
  • -c ’comment‘: 新的註釋信息
  • -d home 修改家目錄,新的家目錄不會自動創建
  • -dm home 創建新家目錄並移動原家數據
  • -l login.name 新的名字,改名之後家目錄,郵箱不變
  • -L: lock指定用戶,在/etc/shadow密碼欄增加!
  • -U: unlock指定用戶,將/etc/shadow密碼欄的!拿掉
  • -e yyyy-MM-DD:指明用戶賬號過期時間
  • -f INACTIVE: 設定非活動期限,寬限期

userdel:刪除用戶

語法:userdel [option]… login.name

  • -r: 刪除用戶家目錄

id:查看用戶的ID信息

語法:id [option]…[USER]

  • -u: 顯示UID
  • -g: 顯示GID
  • -G: 顯示用戶所屬附加組的ID
  • -n: 顯示名稱,需配合ugG使用

passwd:設置密碼:

語法:passwd [options] username: 修改指定用戶的密碼

  • -d 刪除指定用戶的密碼
  • -l lock鎖定指定用戶,加!
  • -u unlock,解鎖指定用戶,去掉!
  • -e 強制用戶下次登錄修改密碼
  • -f 強制操作
  • -n mindays: 指定最短使用期限
  • -x maxdays: 最大使用期限
  • -w warndays: 提前多少天開始警告
  • -i inactivedays:過期還可以使用的天數
  • --stdin:從標準輸入接收用戶密碼
    echo helloyou |passwd --stdin username

groupadd:創建組

語法:groupadd [option]…group.name

  • -g GID 指明GID號,[DID_MIN,GID-max]
  • -r: 創建系統組

groupmod:組屬性修改

語法:groupadd [option]…group

  • -n group.name 修改組名
  • -g GID: 新的GID

groupdel:組刪除
groupdel GROUP

gpasswd:更改組密碼

語法:gpasswd [option] group

  • gpasswd username 創建與修改組密碼
  • -a user 將user添加至指定組中
  • -d user 從指定組中移除用戶user
  • -A user1,user2,.. 設置有管理權限的用戶列表
    • -r 刪除組密碼

newgrp:臨時切換主組

臨時切換主組
如果用戶本不屬於此組,則需要組密碼

groupmems :更改組成員

語法:groupmems [options] [action]

  • -g,–group groupname 更改為指定組
  • -a,–add username 指定用戶加入組
  • -d,–delete username 指定用戶從組中刪除
  • -p,–purge 刪除組所有組成員
  • -l,–list 顯示組成員列表

groups: 查看用戶屬於哪些組

語法: groups [OPTION]... [USERNAME]...

Linux用戶和組