您好,登錄后才能下訂單哦!
本周繼續學習了bash的相關知識,bash的變量需要注意書寫規范和強弱變量以及bash變量的種類等,然后開始學習用戶和組的管理,重點學習了組管理命令,用戶管理的命令,用戶認證相關的命令,組認證相關的命令,其他命令這些知識點,需要我們課后學習記憶。
bash 特性之變量
程序=指令+數據
數據:文件 變量
變量:一段連續的內存空間cell=8bit (32bit字長支持4GB內存)為這一段內存空間取名 稱之為變量名:在這段內存空間中所存儲的數據稱為變量值
賦值操作:
= 賦值操作符
賦值方法 變量=變量值(VARNAME=VALUE)
變量的命名規范
1 只能以字母或者下劃線為首字符 不能使用數字 后面可以是任意字母 數字 下劃線
2 大小寫嚴格區分
3 見名知意
4 書寫規范
1)全大寫:FILES
2)駝峰式:MyFiles
5 不能與已知變量名相同
根據不同的編程語言 變量可以分為兩類
強變量:必須在使用前聲明 而且要聲明變量的類型 嚴格區分變量的類型
255 字符類型:38bytes
整數型:1byte
null:
弱變量:可以隨時使用隨時聲明 甚至可以不聲明即使用 另外不對變量類型做硬性要求 如果沒有指明變量類型 統一按照字符型對待
bash的變量即為弱變量:
引用變量的值 :${變量名}=$變量名 也稱為變量替換
bash的變量種類:
全局變量(環境變量):作用范圍為整個shell進程 包括其子shell
本地變量:作用范圍僅僅只是當前登錄的shell 不包括子shell
局部變量:作用范圍僅僅只是當前的程序段 一般用于函數
默認全局變量:
位置參數變量:$1 $2 $3 $4……$n
特殊變量 $? $# $@ $* $$……
$? 表示 展開為最近一次所執行的命令狀態返回值(退出狀態)
$# 表示 位置參數的個數 以十進制表示
$* 表示 從一開始展開為位置參數 當使用雙引號引用展開的時候 它展開為以特殊變量“IFS”的第一個字符分隔的值
$@ 表示 從一開始展開為位置參數 當使用雙引號引用展開的時候 它展開為一個單獨的字符串
$$ 表示 展開為當前shell的進程的標識符
$0 表示 展開為當前shell或者shell腳本的文件名
變量的使用
變量的賦值:變量=標量名 聲明本地變量
撤銷變量:~]# unset 變量名
聲明環境變量
export 變量
export 變量=變量名
declare
-a聲明索引數組(如果支持)
-A聲明關聯數組(如果支持)
-i聲明整型變量
-l聲明變量并將變量值中的字符轉換為小寫字母
-u聲明變量并將變量值中的字符轉換為大寫字母
-x聲明變量并將其導出為環境變量
-r聲明變量為只讀變量(常量)
查看環境變量
set
export
env
聲明局部變量
local 變量=變量名
配置文件:
通用配置文件 /etc/bashrc /etc/profile
私人配置文件~/.bashrc ~/.bash_profile
注意 一般情況下 聲明變量都是現做現用 因此我們并不需要改配置文件
用戶和組的管理
用戶賬戶
組賬戶
權限的分配
Cisco 思科公司開發的AAA認證體系
Authentication 認證 核實身份是否正確
Authorization 授權 對已經核實身份的用戶進行資源分配
Accounting 審計 監管資源被使用的情況
多用戶、多任務的系統
能夠實現資源使用和完成任務的主體是:應用程序進程
安全上下文:secure context
進程是以其發起者的身份運行的 可以理解為進程的所有者就是發起者 會將發起者的信息標記在進程上
當進程試圖去訪問資源的時候 安全上下文會比對進程的所有者和資源所有者的關系
首先查看進程的所有者是不是資源的所有者 如果是 就按照屬主的權限使用資源
如果不是 則判斷進程的所有者是否屬于資源所屬組 如果是 按照屬組的權限使用資源
如果不是 則直接使用資源的其他人訪問權限來使用資源
用戶賬戶: 就是計算機操作者在操作過程中的身份映射 在滿足了認證條件之后的身份映射
1.用戶分類
超級用戶 (管理員)root
普通用戶
系統用戶: 為了保證安全 必須讓那些運行在后臺的進程或者服務類以非管理員的身份運行 這類用戶一般不需要登錄到系統
登錄用戶: 能夠正常使用整個系統資源的用戶
用戶的標識
用戶的登錄名稱: 為操作者準備的簡單易記的字符串標識
用戶的ID (UID): 為計算機系統準備的數字標識
超級用戶的ID號碼為: 0
系統用戶:
centos5、6:1-499
centos7: 1-999
登錄用戶 :
centos5、6: 500 -60000
centos7 : 1000-60000
60000以上的標識符為用戶自定義標識
名稱解析:
把名字解析成UID
解析庫:/etc/passwd
系統利用解析庫完成認證機制 驗證登錄用戶是否是你聲稱的那個人
用戶的認證信息庫:/etc/shadow
組的認證信息庫:/etc/group
采用密碼認證的機制:
設置密碼的一般性策略
1.盡量使用隨機字串作為密碼
2.密碼長度一般不要少于八個字符
3.密碼中至少包括大寫字母、小寫字母、數字、標點符號四類中的三類
4.不定期更換密碼
在Linux中 保存中認證庫中的密碼信息是經過加密保存的
hash單項加密算法:抽取原始數據的特征信息,數據指紋
單項加密算法的特征:
1.只要數據相同 其加密結果就必然相同
2.無論數據多大 其加密結果定長輸出
3.雪崩效應
4.不可逆
單項加密常用的算法:
1.md5:Message Digest 消息摘要 128bit的定長輸出
2.sha1:Secure Hash Algorithm 安全的哈希算法 160bit 定長輸出
3.sha224
4.sha256
5.sha384
6.sha512
salt:隨機數
/dev/random: 僅僅只是從熵池中返回隨機數 如果熵池隨機數耗盡 則進程被阻塞
/dev/urandom: 試圖先從熵池中返回隨機數 如果熵池耗盡 則利用偽隨機數生成器生產偽隨機數
最終認證的字符串:算法+salt+密碼
在認證庫中存放的信息:$6$salt$crytped_password
用戶組:
將具有某些相同或者相似屬性的用戶聯系在一起以便集中授權的容器
組類別;
管理員組:
普通用戶組:
系統組:
登錄組:
組的標識方法:
組名:方便操作者使用的
組的ID(GID):為系統提供組標識
管理員組:0
系統組:
centos5、6: 1-499
centos7 : 1-999
登錄組:
centos5、6: 500 -60000
centos7 : 1000-60000
解析庫:/etc/group
組也需要認證,組也有認證庫:/etc/gpasswd
組也需要密碼保護
如果組沒有設置密碼保護的話 則不能隨時加入
以用戶為核心來對組進行分類:
用戶的主要組(基本組):primary group
對用戶來說 這樣的組必須要有而且只能有一個
用戶的附加組(附屬組、額外組):Addition Group
這樣的組對于用戶來說 可以沒有 也可以有多個
根據組所容納的用戶來分:
私有組:組名與用戶登錄名相同 并且組中只有此用戶
公共組:組中可以包含其他多個不同用戶
注意:默認情況下 用戶的主要組都是其私有組
用戶和組的管理:
主要使用命令完成:
組管理相關的命令:
groupadd、groupdel、groupmod
用戶管理相關的命令:
useradd、userdel、usermod
認證管理相關的命令:
passwd、gpasswd、chage
其他的相關管理命令:
chsh、finger、su、id
name:password:UID:GID:GECOS:directory:shell
name:登錄名
password:密碼字段 現在在使用了shadow機制的系統中 通常使用“X”作為占字符
UID:用戶ID
GID:此用戶主要組的ID
GECOS:comment 注釋類的信息 現在一般都會用來存放用戶的說明信息或全名
directory:用戶的家目錄的絕對路徑
shell:用戶的默認登錄shell的絕對路徑
/etc/group:
group_name:password:GID:user_list
group_name:組名
password:組密碼占位符 默認為空
GID:組的ID
user_list:以該組的附加組的用戶的列表
/etc/shadow:
login name:用戶的登錄名
encrypted password:加密了的密碼
格式:$算法$salt$真正意義的加密密碼
如果該位置為!則表明用戶的密碼被禁止
如果該位置為*則表明該用戶為系統用戶 不能登錄
如果該字段為空 則用戶可以不輸入密碼即可登錄系統 不推薦使用
date of last password change:
相對概念 表示從1970年1月1日開始的天數 到最后一次更改密碼的時間
minimum password age:
在多長時間內無法修改密碼 默認值為0 意思即為:隨時修改密碼 如果是非0的其他數字 意思是在這么長的天數里不能改密碼
maximum password age:
在多長時間后密碼過期 默認為99999 意思是永久有效
password warning period:
密碼過期之前的友善提醒天數 默認值是七天
password inactivity period:
密碼過期后的寬限期 默認為-1 意思是永久寬限
account expiration date:
一個用戶賬戶密碼過期的日期 這是一個絕對的過期期限
reserved field
保留字段 以備以后使用
/etc/gpasswd:
group name:encrypted password:administrators:members
組管理命令:
groupadd:新建組賬戶、添加組
-g gid 在創建組賬戶的時候 指定組賬戶的GID 如果不使用該選項指定 系統會選擇在組解析文件中出現在的不大于60000最大GID加1
-r 創建系統組 意思是創建一個GID在1-999(1-499)之間的組
groupmod:修改組的一些相關屬性信息
groupmod[選項]GROUP
-g gid:修改組賬戶的ID
-n NEW_GROUPNAME:修改組名
groupdel:刪除組賬戶
groupdel[選項]GROUPNAME
注意:如果某個組是某個用戶的主要組或者私有組 則該組無法刪除
用戶管理的命令
useradd:創建用戶賬戶
useradd [選項] 登錄名
/etc/default/useradd
/etc/login.defs
/etc/skel
以上三個文件和目錄能夠幫助管理員在未指定任何選項時 也能創建用戶 并為用戶賦予默認的屬性
-c, --comment ‘COMMENT’: 在創建用戶時為用戶添加注釋信息 一般為全名
-d –home /PATH/TO/HOME _DIR : 在創建用戶的時候為用戶指定家目錄的絕對路徑 被指定的目錄應該是事先不存在的目錄
-g, --gid GROUPNAME:在創建用戶時 為用戶指定組
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]: 在創建用戶時為用戶添加附加組
-m, --create-home 在創建目錄時強制性為用戶創建家目錄
-M 在創建用戶時不創建用戶家目錄 即使在/etc/login.defs中CREATE_HOME的值為yes也不創建
-r –system 創建系統用戶
-u, --uid UID 在創建用戶的時候為用戶指定UID 這個UID可以超過60000的限制
-s, --shell /PATH/TO/SHELL 在創建用戶的時候 為用戶指定默認shell 使用絕對路徑
-D --defaults 顯示或修改用戶默認屬性值
-s, --shell /PATH/TO/SHELL 修改/etc/default/useradd文件中SHELL的默認值
usermod:修改用戶賬戶信息
usermod [選項] 登錄名
-c, --comment ‘COMMENT’ 修改用戶的注釋信息
-g, --gidGROUPNAME 修改用戶的主要組
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]] 修改用戶的附加組為列表中的組
-a, --append 與-G選項同時使用 給用戶添加新的附加組
-d, --home /PATH/TO/HOME_DIR 修改用戶的家目錄
-m, --move-home 與-d選項同時使用意味著將舊的家目錄中的數據移動到新家之中
-l, --login NEW_LOGIN 更改用戶賬戶的登錄名
-s, --shell/PATH/TO/SHELL 修改用戶賬戶的登錄shell
-u, --uid UID 修改用戶的UID
-L, --lock 鎖定用戶的密碼
-U, --unlock 解鎖用戶的密碼
userdel 刪除用戶賬戶
userdel [選項] 登錄名
-r 刪除用戶的同時 清除用戶的家目錄
用戶認證相關的命令
passwd 設置或者查看用戶密碼信息的命令
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
1.如果省略用戶名 意味著更改當前登錄用戶密碼
2.如果指定用戶名 更改指定用戶密碼 只能root使用
選項:
-l, --lock 鎖定用戶的密碼
-u, --unlock 解鎖用戶的密碼
相比較usermod –L|-U 而言 其優先級更高
如果使用usermod –L鎖定的用戶密碼 可以使用passwd –u解鎖
而是用passwd –l鎖定的用戶密碼 無法使用usermod –U解鎖
-d,-–delete 刪除用戶密碼 將/etc/shadow文件中第二字段清空
-S, --status 查看用戶的密碼狀態
--stdin 借助于管道將輸入數據流當做標準輸入信息送給passwd命令
echo“PASSWORD”|passwd—stdin USERNAME
組認證相關的命令
gpasswd
gpasswd [選項] groupname
-a, --adduser 向名為 group 的組中添加用戶 user。
-d, --deleteuser 從名為 group 的組中移除用戶 user。
其他命令
su switch user 切換用戶身份
su USERNAME 部分切換 半切換 在切換用戶的時候不會重新讀取用戶的配置文件 因此 用戶并沒有登錄行為 所以 工作環境不初始化
su-USERNAME 完全切換 在切換用戶的時候 重新讀取目標用戶的配置文件并且初始化工作環境 相當于su –l USERNAME
-c“COMMAND”并不切換用戶身份 而是以目標用戶的身份執行某命令
使用su命令的時候 從root切換到其他普通用戶 無需密碼 但普通登錄用戶進行切換時 必須給出目標用戶的密碼
進行用戶切換之后 不要連續切換 而是用exit命令返回之前的用戶
newgrp GOUPNAME 臨時更改當前登錄用戶的主要組 使用exit返回之前的狀態
id 顯示真實的和有效的用戶和組的ID
真實ID 在/etc/passwd定義的用戶的UID和GID
有效的ID 當前生效的用戶的UID和GID
id [OPTION]... [USER]
-g 只顯示用戶的有效GID
-n 只顯示用戶的有效UID
-G 顯示用戶所有組的ID
-n 以名稱代替ID來顯示
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。