bash 特性及用戶和組管理
bash 特性及用戶和組管理
上篇博文中總結了bash的一些特性,這次做補充:
bash變量
變量:一段由名稱的連續的內存空間;這段內存空間的名稱,就是變量名,在這 段內存空間存儲數據 就是變量值;
程序=指令+數據
數據:文件,存在值;
向內存空間存儲數據的過程,就是復制操作,賦值符號“=”;
變量的類型: 123 -- 整型:01111011
-- 字符型:ASCII:3字節
-- 字符型:UTF-8:9字節
變量:
強變量:使用之前必須事先予以聲明;必須聲明變量類型;
弱變量:在使用之前無需聲明,無需指明變量類型;(bash變量)
變量的賦值方法:
VARNAME=VALUE
其含義:將某數值(VALUE)通過賦值操作(=)存儲於特定的內存空間中 (VARNAME);
bash中變量名稱的命名規範:
1.變量名只能以"_"或"字母"為起始字符,後面的其他字符可以是任意字母,數 字或下劃線;
2.變量名中的字母是大小寫敏感的;
3.命名的書寫格式:
全大寫:HISTSIZE
全小寫:myvar
駝峰式:MyNewVariable
連接式:My_New_Var
4.變量名要能做到見名知意;
5.變量名不能與已知變量或bash的內置變量重復;
bash中變量的分類:
根據變量的作用範圍來分:
全局變量(環境變量):作用範圍為整個shell進程,包括其子 shell;
本地變量:作用範圍為當前登錄時打開的shell進程,不包括子shell;
局部變量:作用範圍僅僅是是當前程序段,一般用於函數;
根據變量的聲明方式來分:
bash的內置變量:
普通的內置變量:HISTSIZE ...
位置參數變量:$0,$1,$2...
特殊變量:$?,$#,$*,$@,$$....
$?:展開為最近一次執行的命令的狀態返回值(退出狀態碼)用以表示最 近一次執行命令是否成功;
$#:不包括$0在內的其余的位置參數的個數,以十進制數字表示;
$*:從$1開始展開為位置參數。當雙引號引用展開的結果時,它展開為 特殊變量IFS的第一個字符分割的值;
$@:從$1開始展開為位置參數。當雙引號引用展開的結果時,它展開為一 個單獨的字符串;
$$:展開為當前shell的進程標識;
自定義變量:
1.變量的聲明和賦值;
1):聲明全局變量(環境變量):
export VARNAME
export VARNAME=VALUE
declare命令:
declare - Set variable values and attributes.
格式:declare [-aAfFgilrtux] [-p] [name[=value] ...]
常用選項:
-a:聲明索引數組(如果支持)
-A:聲明關聯數組(如果支持)
-i:聲明整型變量
-l:聲明變量並將變量值中的字母轉換為小寫字母
-u:聲明變量並將變量值中的字母轉換為大寫字母
-r:聲明只讀變量,該變量只能進行一次賦值操作
-x:聲明變量並將其導出為全局變量
declare -x VARMNAME[=VARLUE]
2):聲明本地變量:
VARMNAME=VALUE
也可以將局部變量轉換為全局變量:
3):聲明局部變量(多用於函數):
local VARNAME=[=VALUE]
2:查看環境變量:
set命令:
查看和改變shell屬性的值及查看shell變量的變量名和變量值;
export命令:
查看變量名稱,也可以為變量賦值
env命令;
3:查看變量的值:
echo ${VARNAME}
4.撤銷變量的賦值及變量聲明
unset VARNAME
有關於保存變量的shell配置文件:
通用配置文件:
/etc/bashrc
/etc/profile
/etc/profile.d/*
私人配置文件:
~/.bashrc
~/.bash_profile
註意:
1.一般情況下,變量都是隨用隨聲明,除非由必要,否則不建議修改配置文件 的內容。
2.聲明的變量在使用完以後,最好使用unset命令予以撤銷。
用戶和組管理:
1.用戶賬戶
2.組賬戶
3.權限分配
用戶賬戶:實現操作者和計算機交互式操作的基礎,是操作者的身份在滿足了驗 證條件之後的計算機系統中的映射;
用戶賬戶分類;
超級用戶(管理員):root
普通用戶:
1.系統用戶(非登錄用戶)
為了保證安全,往往會讓某些進程或服務必須以非管理員的用戶身份 運行;這類非管理員用戶稱為系統用戶;此類用戶一般不允許登陸到 系統;
2.登陸用戶
能夠登陸進而獲取資源訪問權限並可以對資源進行操作的用戶,可以 稱為登錄用戶;
用戶賬戶的標識方式:
用戶登陸名稱:
操作者提供簡單容易記的字符串標識;
用戶的數字ID(UID)
為計算機操作系統提供標準的數字表示符號,0-2^32-1
超級用戶:
用戶名:root
UID:0
普通用戶:
1.系統用戶:
Centos 6-:1~499
Centos 7+:1~999
2.登陸用戶
Centos 6-:500+
Centos 7+:1000+
註意:6000+的用戶UID通常需要用戶自定義標識;
名稱解析:
用戶名<-->UID
用戶名解析庫:/etc/passwd
操作系統的認證組件通過解析庫實現認證機制,即驗證登錄用戶是否 為已經存在的用戶;
用戶認證庫:/etc/shadow
通過此前的解析庫認定的用戶是存在的,在經過認證庫的認證,來證 明登陸用戶就是其聲明的用戶;
默認的認證機制:密碼認證;
密碼復雜性的要求:
1.盡量避免使用有規律或者來源於自字典中的字符串作為密碼;
2.密碼要足夠長,一般不到少於6個字符;
3.密碼要足夠復雜,其中應該至少包括大寫字母,小寫字母,數字及 其它符號中的三類;
4.不定期的更換。
在Linux中,保存到認證庫的密碼是經過單向加密算法處理的;
能夠加密密碼的算法:
MD:
MDS,Message Digest Version 5:消息摘要算法第五版;
128位定長輸出;
SHA:Secure Hash Algorithm:安全的哈希算法;
sha1:160加密輸出
sha224:
sha256:
sha384:
sha512:默認的加密算法;
salt:通過隨機算法計算得到的隨機數;
隨機數的生成裝置;
/dev/random:僅僅從熵池中返回隨機數;如果熵池中隨 機數耗盡,進程會被阻塞
/dev/urandom:首先試圖從熵池中返回隨機數,如果熵 池中隨機數耗盡,則利用偽隨機數生成器生成偽隨機數;
再認證庫系統中密碼的 最終形態:算法+salt+加密字符串;
算法:$1~$6
salt:$隨機字符串
加密字符串:$單項加密的結果;
組賬戶:
將具有某些相同或相似屬性的用戶聯系在一起以便可以集中授權的容器
組的分類;
1.超級用戶組
2.普通用戶組:
1)系統用戶組
2)登陸用戶組
組賬戶的標識方法:
組賬戶名稱:
組賬戶ID(GID):
超級用戶組:0
系統用戶組:
Centos 6-:1~499
Centos 7+:1~999
登陸用戶組:
Centos 6-:500+
Centos 7+:1000+
組名解析:
解析庫:/etc/passwd
認證庫:/etc/shadow
註意:組也需要密碼加密保護;
用戶賬戶和組賬戶之間的關系:
在Linux中,每個用戶必須至少屬於一個組;
用戶賬戶的GID標識被稱為用戶的主要組(基本組),Primary
Group:每個用戶必須要有主要組,且只能有一個;
在主要組的基礎上,用戶可以和其他的組賬戶存在邏輯關系,此類 組稱為用戶的附加組,AdditionGroup:對於用戶來說,此類組可 以沒有,也可以由多個;
用戶和組的管理命令:
組賬戶的管理命令:
groupadd,groupdel,groupmod
用戶賬戶的管理命令:
useradd,userdel,usermod
認證相關的命令:
passwd、gpasswd
其他的相關命令:
chage,chsh,finger,su,id
與用戶和組相關的命令:
1.groupadd
groupadd - 創建一個新組
格式:groupadd [Options...] group
常用選項:
-g GID:指定要創建的組的GID;
-r:將組創建為系統組,此時應該保證GID在系統組範圍內;
2.groupdel
groupdel - 刪除一個組
格式:groupdel [Options...] group
註意:如果某個組是某個用戶的主要組,則該組不能刪除;
3.groupmod
groupmod - modify a group definition on the system
格式: groupmod [Options...] group
常用選項:
-g GID:修改指定組的GID;
-n GROUP_NAME:修改指定組的組帳戶名稱;
4.useradd
useradd - 創建一個新用戶或更新默認新用戶信息
格式:useradd [選項] username
useradd -D [選項]
常用選項:
-c, --commentCOMMENT:為用戶添加註釋信息;
-d, --homeHOME_DIR:為用戶指定家目錄的路徑;此目錄不能事先在;
-e, --expiredateEXPIRE_DATE:用戶密碼的過期的絕對時間 如:2018/01/01
-f, --inactiveINACTIVE:為用戶指定密碼使用達到最大時間之後的寬 限期;
-g, --gidGROUP:為用戶指明GID;如果不寫此選項,系統會創建一個與 用戶名相同的組並且將之設置為誒此用戶的主要組;
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:為用戶添加附加組;
-m, --create-home:必須為用戶創建家目錄;
-M:不為用戶創建家目錄;在創建系統用戶時常用此選項;
-r, --system:創建系統用戶;
-s, --shellSHELL:為用戶指定默認的shell;
-u, --uidUID:為用戶指定UID;
5.userdel
userdel - 刪除用戶賬戶和相關文件
格式:userdel [選項] username
常用選項:
-r, --remove:刪除用戶的同時刪除用戶的家目錄及用戶郵箱文件;
6.usermod
usermod - 修改一個用戶賬戶
格式:usermod [選項] username
常用選項:
-c, --commentCOMMENT:修改用戶的註釋信息;
-d, --homeHOME_DIR:修改用戶的家目錄;
-e, --expiredateEXPIRE_DATE:修改用戶密碼過期的絕對日期;
-f, --inactiveINACTIVE:修改用戶密碼過期之後的寬限期;
-g, --gidGROUP:修改用戶的主要組(GID);
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用戶的附加組為此 列表中的組,如果同時使用了-a選項,則保留原有的附加組,將此 列表中的組追加至用戶的附加組列表;
-l, --loginNEW_LOGIN:修改用戶的登錄名;
-s, --shellSHELL:修改用戶的登錄shell;
-u, --uidUID:修改用戶的UID;
-L, --lock:鎖定用戶;
-U, --unlock:解鎖被usermod -L鎖定的用戶;
7.passwd
passwd - update user‘s authentication tokens
格式:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
常用選項:
-l, --lock:鎖定用戶;
-u, --unlock:解鎖用戶;
--stdin:通過標準輸入接受密碼,可以用於管道;
-d, --delete:刪除用戶的密碼,也可以用於解除用戶鎖定;
-e, --expire:直接設置用戶密碼過期;
-n, --minimum DAYS:用戶密碼的最短使用時長;默認值為0;
-x, --maximum DAYS:用戶密碼的最長使用時長;默認值為99999;
-w, --warning DAYS:用戶密碼過期之前多少天開始發送警告信息;
-i, --inactive DAYS:用戶密碼過期之後的寬限期;
-S, --status:查看用戶密碼的狀態信息;
8.chage
chage - 更改用戶密碼過期信息
格式:chage [選項] username
常用選項:
-d, --lastdayLAST_DAY
-E, --expiredateEXPIRE_DATE
-I, --inactiveINACTIVE
-l, --list
-m, --mindaysMIN_DAYS
-M, --maxdaysMAX_DAYS
-W, --warndaysWARN_DAYS
9.chsh
chsh - change your login shell == usermod -s
格式:chsh [-s shell] [-l] [-u] [-v] [username]
10.finger
finger — user information lookup program
格式:finger [-lmsp] [user ...] [user@host ...]
11.id
id - print real and effective user and group IDs
格式:id [OPTION]... [USER]
常用選項:
-u:顯示用戶的有效UID;
-g:顯示用戶的有效GID;
-n:顯示名稱;
12.su
su - run a command with substitute user and group ID
格式:su [options...] [-] [user [args...]]
常用選項:
-l, --login:以後面的用戶身份登錄到系統;
-c "COMMAND":以前面指定的用戶身份運行COMMAND;不進行身份登錄 切換;
本文出自 “計算機基礎” 博客,轉載請與作者聯系!
bash 特性及用戶和組管理