在Linux系統中創建用戶
在創建用戶之前我們要先學習一下Linux系統上的用戶:
用戶user
令牌token,identity
Linux用戶:Username/UID
管理員:root, 0
普通用戶:1-65535
系統用戶:1-499, 1-999(CentOS7)
對守護進程獲取資源進行權限分配
登錄用戶:500+, 1000+(CentOS7)
交互式登錄
passwd文件格式:
login name:登錄用名(wang)
passwd:密碼(x)
UID:用戶身份編號(1000)
GID:登錄默認所在組編號(1000)
GECOS:用戶全名或註釋
home directory:用戶主目錄(/home/wang)
shell:用戶默認使用shell (/bin/bash)
shadow文件格式:
登錄用名
用戶密碼:一般用sha512加密
從1970年1月1日起到密碼最近一次被更改的時間
密碼再過幾天可以被變更(0表示隨時可被變更)
密碼再過幾天必須被變更(99999表示永不過期)
密碼過期前幾天系統提醒用戶(默認爲一週)
密碼過期幾天後帳號會被鎖定
從1970年1月1日算起,多少天后帳號失效
設置密碼
passwd[OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限
passwd: 修改自己的密碼
常用選項:
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登錄修改密碼
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-i inactivedays:非活動期限
--stdin:從標準輸入接收用戶密碼
echo "PASSWORD" | passwd--stdinUSERNAME
Linux 計算日期的時間是以 1970 年 1 月 1 日作爲 1 不斷累加得到的時間
密碼期限:
修改用戶密碼策略:chage
用法:chage [選項] 登錄
選項:
-d, --lastday 最近日期 將最近一次密碼設置時間設爲“最近日期”
-E, --expiredate 過期日期 將帳戶過期時間設爲“過期日期”
-h, --help 顯示此幫助信息並推出
-I, --inactive INACITVE 過期 INACTIVE 天數後,設定密碼爲失效狀態
-l, --list 顯示帳戶年齡信息
-m, --mindays 最小天數 將兩次改變密碼之間相距的最小天數設爲“最小天數”
-M, --maxdays 最大天數 將兩次改變密碼之間相距的最大天數設爲“最大天數”
-R, --root CHROOT_DIR chroot 到的目錄
-W, --warndays 警告天數 將過期警告天數設爲“警告天數”
示例:
chage-d 0 tom 下一次登錄強制重設密碼
chage-m 0 –M 42 –W 14 –I 7 tom
chage-E 2016-09-10 tom
1、設置過期日期:
2、設置兩次密碼之間最大天數:
3、設置兩次修改密碼之間最小天數:
4、設置過期前幾天提示警告:
group組
Linux組:Groupname/GID
管理員組:root, 0
普通組:
系統組:1-499, 1-999(CENTOS7)
普通組:500+, 1000+(CENTOS7)
組的類別:
Linux組的類別:
用戶的主要組(primary group):
用戶必須屬於一個且只有一個主組
組名同用戶名,且僅包含一個用戶:私有組
用戶的附加組(supplementary group):
一個用戶可以屬於零個或多個輔助組
用戶和組的配置文件:
Linux用戶和組的主要配置文件:
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性
用戶管理:useradd userdel usermod —增,刪,改
/etc/passwd:用戶信息【用戶】【密碼x表示加密】【-u 用戶id】【-g 用戶組id】【-c 用戶描述信息】【-d 用戶家目錄】【-s 用戶shell解釋器】
/etc/group:組信息 【組信息】【組密碼】【-g 組id】【-G 所屬附加組用戶】
/etcadow:用戶密碼信息,用來記錄密碼策略,【用戶名】【密碼】【1970年到上一次修改密碼時間】【/etc/login.defs 密碼多少天內不能修改密碼,0表示隨時可修改】【/etc/login.defs 密碼有效期是多少天,99999表示密碼永不更改】【/etc/login.defs 密碼到期前7天通知信息】【useradd/mod -f 參數,密碼寬限期】【useradd/mod -e 參數 用戶失效時間】【保留】
/etc/gshadow:組密碼信息,【用戶組信息】【用戶組密碼】【組管理員列表】【組員信息】
用戶添加:
核心關注配置文件:
- /etc/default/useradd 此配置文件用來配置添加用戶的默認配置如SHELLL、HOME等, SHELL可以指向python3解釋器,可以通過python解釋器與內核交互
- /etc/skel 此文件是用戶在創建家目錄時,給家目錄默認繼承的文件,內容存儲的是環境變量的腳本,如果我們想每次創建家目錄時給定我們所定義的文件可以放在此目錄
- /etc/login.defs 此文件是定義登陸時環境變量,密碼策略PASS_MAX_DAYS,PASS_MIM_DAYS,系統ID等
我們在創建用戶時不知道怎麼創建可以通過 useradd --help
命令來查看
用法:useradd [選項] 登錄
useradd -D
useradd -D [選項]
選項:
-b, --base-dir BASE_DIR 新賬戶的主目錄的基目錄
-c, --comment COMMENT 新賬戶的 GECOS 字段
-d, --home-dir HOME_DIR 新賬戶的主目錄
-D, --defaults 顯示或更改默認的 useradd 配置
-e, --expiredate EXPIRE_DATE 新賬戶的過期日期
-f, --inactive INACTIVE 新賬戶的密碼不活動期
-g, --gid GROUP 新賬戶主組的名稱或 ID
-G, --groups GROUPS 新賬戶的附加組列表
-h, --help 顯示此幫助信息並推出
-k, --skel SKEL_DIR 使用此目錄作爲骨架目錄
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默認值
-l, --no-log-init 不要將此用戶添加到最近登錄和登錄失敗數據庫
-m, --create-home 創建用戶的主目錄
-M, --no-create-home 不創建用戶的主目錄
-N, --no-user-group 不創建同名的組
-o, --non-unique 允許使用重複的 UID 創建用戶
-p, --password PASSWORD 加密後的新賬戶密碼
-r, --system 創建一個系統賬戶
-R, --root CHROOT_DIR chroot 到的目錄
-s, --shell SHELL 新賬戶的登錄 shell
-u, --uid UID 新賬戶的用戶 ID
-U, --user-group 創建與用戶同名的組
-Z, --selinux-user SEUSER 爲 SELinux 用戶映射使用指定 SEUSER
--extrausers Use the extra users database
使用不同的useradd命令會得到不同的用戶,大致可以分爲五種:
案例1. useradd 不指定shell時,家目錄爲/,變量PS1爲$,SHELL爲/bin/sh
案例2. useradd 指定shell爲python3時,切換用戶直接進入python解釋器
案例3. useradd 指定shell爲/bin/bash時,變量PS1ok,但是家目錄依然爲/
案例4. useradd -m 創建用戶時,指定創建價目,但沒有指定shell爲bash,默認爲sh,所以家目錄下有環境變量,但是家目錄下的腳本
是由bash解釋器纔可以解釋執行,sh解釋器無法解釋執行,所以環境變量依然有問題
案例5. useradd -m -s /bin/bash時,家目錄,環境變量都ok
修改bash
若我們只是使用命令useradd 用戶名
來創建用戶的話,創建出來的用戶使用的shell均爲/bin/sh
,這樣我們創建出來的用戶就會有上述案例1的結果,所以我們要將shell進行修改:
這裏顯示爲:SHELL =/bin/sh
修改爲:SHELL =/bin/bash
並保存退出這樣我們創建用戶之後的shell即爲bash了cat /etc/gshadow
我們可以看到用戶的組密碼信息
cat /etc/shadow
:用戶密碼信息
cat /etc/group
:組信息
cat /etc/passwd
:用戶信息
用戶刪除
用法:userdel [選項] 登錄
選項:
-f, --force 即使不屬於此用戶,也強制刪除文件
-h, --help 顯示此幫助信息並推出
-r, --remove 刪除主目錄和郵件池
-R, --root CHROOT_DIR chroot 到的目錄
-Z, --selinux-user 爲用戶刪除所有的 SELinux 用戶映射
用戶屬性修改
用法:usermod [選項] 登錄
選項:
-c, --comment 註釋 GECOS 字段的新值
-d, --home HOME_DIR 用戶的新主目錄
-e, --expiredate EXPIRE_DATE 設定帳戶過期的日期爲 EXPIRE_DATE
-f, --inactive INACTIVE 過期 INACTIVE 天數後,設定密碼爲失效狀態
-g, --gid GROUP 強制使用 GROUP 爲新主組
-G, --groups GROUPS 新的附加組列表 GROUPS
-a, --append GROUP 將用戶追加至上邊 -G 中提到的附加組中,
並不從其它組中刪除此用戶
-h, --help 顯示此幫助信息並推出
-l, --login LOGIN 新的登錄名稱
-L, --lock 鎖定用戶帳號
-m, --move-home 將家目錄內容移至新位置 (僅於 -d 一起使用)
-o, --non-unique 允許使用重複的(非唯一的) UID
-p, --password PASSWORD 將加密過的密碼 (PASSWORD) 設爲新密碼
-R, --root CHROOT_DIR chroot 到的目錄
-s, --shell SHELL 該用戶帳號的新登錄 shell
-u, --uid UID 用戶帳號的新 UID
-U, --unlock 解鎖用戶帳號
-v, --add-subuids FIRST-LAST add range of subordinate uids
-V, --del-subuids FIRST-LAST remove range of subordinate uids
-w, --add-subgids FIRST-LAST add range of subordinate gids
-W, --del-subgids FIRST-LAST remove range of subordinate gids
-Z, --selinux-user SEUSER 用戶賬戶的新 SELinux 用戶映射
小小的案例:修改用戶的註釋信息
組group管理命令:
groupadd groupdel groupmod——增 刪 改
創建組:
groupadd[OPTION]... group_name
-g GID: 指明GID號;[GID_MIN, GID_MAX]
-r: 創建系統組
CentOS 6: ID<500
CentOS 7: ID<1000
組刪除:groupdel
groupdel 組名
組屬性修改:groupmod
groupmod[OPTION]... group
-n group_name: 新名字
-g GID: 新的GID
案例(增、改、刪):
更改組密碼:gpasswd
組密碼:gpasswd
gpasswd[OPTION] GROUP
-a user: 將user添加至指定組中
-d user: 從指定組中移除用戶user
-A user1,user2,...: 設置有管理權限的用戶列表
newgrp命令:臨時切換主組
如果用戶本不屬於此組,則需要組密碼
更改和查看組成員:groupmems
groupmems[options] [action]
options:
-g, --group groupname更改爲指定組(只有root)
Actions:
-a, --add username 指定用戶加入組
-d, --delete username 從組中刪除用戶
-p, --purge 從組中清除所有成員
-l, --list 顯示組成員列表
groups [OPTION].[USERNAME]... 查看用戶所屬組列表
查看用戶相關的ID信息
Usage: id [OPTION]... [USER]
Print user and group information for the specified USER,
or (when USER omitted) for the current user.
-a ignore, for compatibility with other versions
-Z, --context print only the security context of the process
-g, --group print only the effective group ID
-G, --groups print all group IDs
-n, --name print a name instead of a number, for -ugG
-r, --real print the real ID instead of the effective ID, with -ugG
-u, --user print only the effective user ID
-z, --zero delimit entries with NUL characters, not whitespace;
not permitted in default format
--help 顯示此幫助信息並退出
--version 顯示版本信息並退出
切換用戶或以其他用戶身份執行命令
su[options...] [-] [user [args...]]
切換用戶的方式:
su UserName:非登錄式切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄
su - UserName:登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換
root su至其他用戶無須密碼;非root用戶切換時需要密碼
換個身份執行命令:
su[-] UserName-c 'COMMAND'
選項:-l --login
su-l UserName相當於su-UserName
案例:
文件權限
文件屬性:
文件屬性操作者
chown 設置文件的所有者
chgrp 設置文件的屬組信息
other 其他用戶
修改文件的屬性和屬組:
修改文件的屬主:chown
chown[OPTION]... [OWNER][:[GROUP]] FILE...
用法:
OWNER
OWNER:GROUP
:GROUP
命令中的冒號可用.替換
-R: 遞歸
chown[OPTION]... --reference=RFILE FILE...
修改文件的屬組:chgrp
chgrp[OPTION]... GROUP FILE...
chgrp[OPTION]... --reference=RFILE FILE...
-R 遞歸
兩個小案例:
文件權限:
文件的權限主要針對三類對象進行定義:
owner: 屬主, u
group: 屬組, g
other: 其他, o
每個文件針對每類訪問者都定義了三種權限:
r: Readable
w: Writable
x: eXcutable
文件和目錄都包含有權限:
文件:
r: 可使用文件查看類工具獲取其內容
w: 可修改其內容
x: 可以把此文件提請內核啓動爲一個進程
目錄:
r: 可以使用ls查看此目錄中文件列表
w: 可在此目錄中創建文件,也可刪除此目錄中的文件
x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此目錄
X:只給目錄x權限,不給文件x權限