溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

bash特性續(xù)寫以及用戶和組的管理

發(fā)布時(shí)間:2020-07-11 20:09:16 來源:網(wǎng)絡(luò) 閱讀:265 作者:Runs_ 欄目:開發(fā)技術(shù)

 本周繼續(xù)學(xué)習(xí)了bash的相關(guān)知識(shí),bash的變量需要注意書寫規(guī)范和強(qiáng)弱變量以及bash變量的種類等,然后開始學(xué)習(xí)用戶和組的管理,重點(diǎn)學(xué)習(xí)了組管理命令,用戶管理的命令,用戶認(rèn)證相關(guān)的命令,組認(rèn)證相關(guān)的命令,其他命令這些知識(shí)點(diǎn),需要我們課后學(xué)習(xí)記憶。

             

                    bash 特性之變量

  程序=指令+數(shù)據(jù)

  數(shù)據(jù):文件  變量

  變量:一段連續(xù)的內(nèi)存空間cell=8bit  (32bit字長(zhǎng)支持4GB內(nèi)存)為這一段內(nèi)存空間取名 稱之為變量名:在這段內(nèi)存空間中所存儲(chǔ)的數(shù)據(jù)稱為變量值

  賦值操作:

= 賦值操作符

  賦值方法 變量=變量值(VARNAME=VALUE)

變量的命名規(guī)范

   1 只能以字母或者下劃線為首字符 不能使用數(shù)字 后面可以是任意字母 數(shù)字 下劃線

   2 大小寫嚴(yán)格區(qū)分

   3 見名知意

   4 書寫規(guī)范  

1)全大寫:FILES

2)駝峰式:MyFiles

          5 不能與已知變量名相同

根據(jù)不同的編程語言 變量可以分為兩類

      強(qiáng)變量:必須在使用前聲明 而且要聲明變量的類型 嚴(yán)格區(qū)分變量的類型

           255  字符類型:38bytes

                整數(shù)型:1byte

                null:

      弱變量:可以隨時(shí)使用隨時(shí)聲明 甚至可以不聲明即使用 另外不對(duì)變量類型做硬性要求 如果沒有指明變量類型 統(tǒng)一按照字符型對(duì)待

      bash的變量即為弱變量:


引用變量的值 :${變量名}=$變量名   也稱為變量替換 

   bash的變量種類:

         全局變量(環(huán)境變量):作用范圍為整個(gè)shell進(jìn)程 包括其子shell

         本地變量:作用范圍僅僅只是當(dāng)前登錄的shell 不包括子shell

       局部變量:作用范圍僅僅只是當(dāng)前的程序段 一般用于函數(shù)

       默認(rèn)全局變量:

              位置參數(shù)變量:$1 $2 $3 $4……$n

              特殊變量  $? $# $@ $* $$……

  $? 表示 展開為最近一次所執(zhí)行的命令狀態(tài)返回值(退出狀態(tài))

  $# 表示 位置參數(shù)的個(gè)數(shù) 以十進(jìn)制表示

  $* 表示 從一開始展開為位置參數(shù) 當(dāng)使用雙引號(hào)引用展開的時(shí)候 它展開為以特殊變量“IFS”的第一個(gè)字符分隔的值 

  $@ 表示 從一開始展開為位置參數(shù) 當(dāng)使用雙引號(hào)引用展開的時(shí)候 它展開為一個(gè)單獨(dú)的字符串

  $$ 表示 展開為當(dāng)前shell的進(jìn)程的標(biāo)識(shí)符

  $0 表示 展開為當(dāng)前shell或者shell腳本的文件名

變量的使用

   變量的賦值:變量=標(biāo)量名  聲明本地變量

   撤銷變量:~]# unset 變量名

聲明環(huán)境變量 

   export 變量

   export 變量=變量名

declare

   -a聲明索引數(shù)組(如果支持)

   -A聲明關(guān)聯(lián)數(shù)組(如果支持)

   -i聲明整型變量

   -l聲明變量并將變量值中的字符轉(zhuǎn)換為小寫字母

   -u聲明變量并將變量值中的字符轉(zhuǎn)換為大寫字母

   -x聲明變量并將其導(dǎo)出為環(huán)境變量

   -r聲明變量為只讀變量(常量)

查看環(huán)境變量

   set

   export

   env

聲明局部變量

   local 變量=變量名

配置文件:

  通用配置文件 /etc/bashrc   /etc/profile

  私人配置文件~/.bashrc    ~/.bash_profile

注意  一般情況下 聲明變量都是現(xiàn)做現(xiàn)用 因此我們并不需要改配置文件



                    用戶和組的管理


  用戶賬戶

  組賬戶

  權(quán)限的分配


  Cisco 思科公司開發(fā)的AAA認(rèn)證體系

Authentication 認(rèn)證 核實(shí)身份是否正確

Authorization 授權(quán) 對(duì)已經(jīng)核實(shí)身份的用戶進(jìn)行資源分配

Accounting 審計(jì) 監(jiān)管資源被使用的情況


多用戶、多任務(wù)的系統(tǒng)

能夠?qū)崿F(xiàn)資源使用和完成任務(wù)的主體是:應(yīng)用程序進(jìn)程

安全上下文:secure context

進(jìn)程是以其發(fā)起者的身份運(yùn)行的 可以理解為進(jìn)程的所有者就是發(fā)起者 會(huì)將發(fā)起者的信息標(biāo)記在進(jìn)程上


當(dāng)進(jìn)程試圖去訪問資源的時(shí)候 安全上下文會(huì)比對(duì)進(jìn)程的所有者和資源所有者的關(guān)系

首先查看進(jìn)程的所有者是不是資源的所有者 如果是 就按照屬主的權(quán)限使用資源

如果不是 則判斷進(jìn)程的所有者是否屬于資源所屬組 如果是 按照屬組的權(quán)限使用資源

如果不是 則直接使用資源的其他人訪問權(quán)限來使用資源


用戶賬戶: 就是計(jì)算機(jī)操作者在操作過程中的身份映射 在滿足了認(rèn)證條件之后的身份映射


1.用戶分類

超級(jí)用戶 (管理員)root

普通用戶

    系統(tǒng)用戶:   為了保證安全 必須讓那些運(yùn)行在后臺(tái)的進(jìn)程或者服務(wù)類以非管理員的身份運(yùn)行 這類用戶一般不需要登錄到系統(tǒng)

    登錄用戶:   能夠正常使用整個(gè)系統(tǒng)資源的用戶

用戶的標(biāo)識(shí) 

用戶的登錄名稱:  為操作者準(zhǔn)備的簡(jiǎn)單易記的字符串標(biāo)識(shí)

用戶的ID (UID):  為計(jì)算機(jī)系統(tǒng)準(zhǔn)備的數(shù)字標(biāo)識(shí)

   超級(jí)用戶的ID號(hào)碼為: 0

   系統(tǒng)用戶:

       centos5、6:1-499

       centos7: 1-999

  登錄用戶 :

       centos5、6: 500 -60000

       centos7 : 1000-60000

    60000以上的標(biāo)識(shí)符為用戶自定義標(biāo)識(shí)       

名稱解析:

    把名字解析成UID


解析庫:/etc/passwd

系統(tǒng)利用解析庫完成認(rèn)證機(jī)制 驗(yàn)證登錄用戶是否是你聲稱的那個(gè)人

用戶的認(rèn)證信息庫:/etc/shadow

組的認(rèn)證信息庫:/etc/group


采用密碼認(rèn)證的機(jī)制:

    設(shè)置密碼的一般性策略

       1.盡量使用隨機(jī)字串作為密碼

       2.密碼長(zhǎng)度一般不要少于八個(gè)字符

       3.密碼中至少包括大寫字母、小寫字母、數(shù)字、標(biāo)點(diǎn)符號(hào)四類中的三類

       4.不定期更換密碼 

在Linux中 保存中認(rèn)證庫中的密碼信息是經(jīng)過加密保存的

    hash單項(xiàng)加密算法:抽取原始數(shù)據(jù)的特征信息,數(shù)據(jù)指紋

    單項(xiàng)加密算法的特征:

1.只要數(shù)據(jù)相同 其加密結(jié)果就必然相同

       2.無論數(shù)據(jù)多大 其加密結(jié)果定長(zhǎng)輸出

       3.雪崩效應(yīng) 

       4.不可逆

  單項(xiàng)加密常用的算法:

    1.md5:Message Digest 消息摘要  128bit的定長(zhǎng)輸出

    2.sha1:Secure Hash Algorithm 安全的哈希算法 160bit 定長(zhǎng)輸出

    3.sha224

    4.sha256

    5.sha384

    6.sha512


salt:隨機(jī)數(shù)

    /dev/random: 僅僅只是從熵池中返回隨機(jī)數(shù) 如果熵池隨機(jī)數(shù)耗盡 則進(jìn)程被阻塞

   /dev/urandom: 試圖先從熵池中返回隨機(jī)數(shù) 如果熵池耗盡 則利用偽隨機(jī)數(shù)生成器生產(chǎn)偽隨機(jī)數(shù)


最終認(rèn)證的字符串:算法+salt+密碼

  在認(rèn)證庫中存放的信息:$6$salt$crytped_password


用戶組:

將具有某些相同或者相似屬性的用戶聯(lián)系在一起以便集中授權(quán)的容器

   組類別;

       管理員組:

       普通用戶組:

           系統(tǒng)組:

           登錄組:

      組的標(biāo)識(shí)方法:

           組名:方便操作者使用的

       組的ID(GID):為系統(tǒng)提供組標(biāo)識(shí)

          管理員組:0

           系統(tǒng)組:

           centos5、6: 1-499

           centos7 : 1-999

       登錄組:

           centos5、6: 500 -60000

           centos7 : 1000-60000

          解析庫:/etc/group

組也需要認(rèn)證,組也有認(rèn)證庫:/etc/gpasswd

組也需要密碼保護(hù)

   如果組沒有設(shè)置密碼保護(hù)的話 則不能隨時(shí)加入

以用戶為核心來對(duì)組進(jìn)行分類:

   用戶的主要組(基本組):primary group 

對(duì)用戶來說 這樣的組必須要有而且只能有一個(gè)

用戶的附加組(附屬組、額外組):Addition Group 

這樣的組對(duì)于用戶來說 可以沒有 也可以有多個(gè)

根據(jù)組所容納的用戶來分:

   私有組:組名與用戶登錄名相同 并且組中只有此用戶

   公共組:組中可以包含其他多個(gè)不同用戶

注意:默認(rèn)情況下 用戶的主要組都是其私有組


用戶和組的管理:

   主要使用命令完成:

     組管理相關(guān)的命令:

groupadd、groupdel、groupmod

     用戶管理相關(guān)的命令:

        useradd、userdel、usermod

     認(rèn)證管理相關(guān)的命令:

        passwd、gpasswd、chage

其他的相關(guān)管理命令:

        chsh、finger、su、id


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

name:登錄名

password:密碼字段 現(xiàn)在在使用了shadow機(jī)制的系統(tǒng)中 通常使用“X”作為占字符

UID:用戶ID

GID:此用戶主要組的ID

GECOS:comment 注釋類的信息 現(xiàn)在一般都會(huì)用來存放用戶的說明信息或全名

directory:用戶的家目錄的絕對(duì)路徑

shell:用戶的默認(rèn)登錄shell的絕對(duì)路徑

/etc/group:


group_name:password:GID:user_list

group_name:組名

password:組密碼占位符 默認(rèn)為空

GID:組的ID

user_list:以該組的附加組的用戶的列表


/etc/shadow:

login name:用戶的登錄名

encrypted password:加密了的密碼

   格式:$算法$salt$真正意義的加密密碼

如果該位置為!則表明用戶的密碼被禁止

如果該位置為*則表明該用戶為系統(tǒng)用戶 不能登錄

如果該字段為空 則用戶可以不輸入密碼即可登錄系統(tǒng) 不推薦使用

date of last password change:

  相對(duì)概念 表示從1970年1月1日開始的天數(shù) 到最后一次更改密碼的時(shí)間

minimum password age:

  在多長(zhǎng)時(shí)間內(nèi)無法修改密碼 默認(rèn)值為0 意思即為:隨時(shí)修改密碼  如果是非0的其他數(shù)字 意思是在這么長(zhǎng)的天數(shù)里不能改密碼

maximum password age:

  在多長(zhǎng)時(shí)間后密碼過期 默認(rèn)為99999 意思是永久有效

password warning period:

  密碼過期之前的友善提醒天數(shù) 默認(rèn)值是七天

password inactivity period:

  密碼過期后的寬限期 默認(rèn)為-1 意思是永久寬限

account expiration date:

  一個(gè)用戶賬戶密碼過期的日期 這是一個(gè)絕對(duì)的過期期限 

reserved field

  保留字段 以備以后使用


/etc/gpasswd:

group name:encrypted password:administrators:members


組管理命令:

  groupadd:新建組賬戶、添加組

    -g gid  在創(chuàng)建組賬戶的時(shí)候 指定組賬戶的GID 如果不使用該選項(xiàng)指定 系統(tǒng)會(huì)選擇在組解析文件中出現(xiàn)在的不大于60000最大GID加1

    -r  創(chuàng)建系統(tǒng)組 意思是創(chuàng)建一個(gè)GID在1-999(1-499)之間的組

 groupmod:修改組的一些相關(guān)屬性信息

     groupmod[選項(xiàng)]GROUP

   -g gid:修改組賬戶的ID

   -n NEW_GROUPNAME:修改組名

 groupdel:刪除組賬戶

   groupdel[選項(xiàng)]GROUPNAME

   注意:如果某個(gè)組是某個(gè)用戶的主要組或者私有組 則該組無法刪除


用戶管理的命令

   useradd:創(chuàng)建用戶賬戶

   useradd [選項(xiàng)] 登錄名

  /etc/default/useradd

  /etc/login.defs

  /etc/skel

以上三個(gè)文件和目錄能夠幫助管理員在未指定任何選項(xiàng)時(shí) 也能創(chuàng)建用戶 并為用戶賦予默認(rèn)的屬性

  -c, --comment ‘COMMENT’: 在創(chuàng)建用戶時(shí)為用戶添加注釋信息 一般為全名

  -d –home /PATH/TO/HOME _DIR : 在創(chuàng)建用戶的時(shí)候?yàn)橛脩糁付夷夸浀慕^對(duì)路徑 被指定的目錄應(yīng)該是事先不存在的目錄

  -g, --gid GROUPNAME:在創(chuàng)建用戶時(shí) 為用戶指定組

  -G, --groupsGROUP1[,GROUP2,...[,GROUPN]]: 在創(chuàng)建用戶時(shí)為用戶添加附加組

  -m, --create-home  在創(chuàng)建目錄時(shí)強(qiáng)制性為用戶創(chuàng)建家目錄

  -M  在創(chuàng)建用戶時(shí)不創(chuàng)建用戶家目錄 即使在/etc/login.defs中CREATE_HOME的值為yes也不創(chuàng)建

  -r –system 創(chuàng)建系統(tǒng)用戶

  -u, --uid UID  在創(chuàng)建用戶的時(shí)候?yàn)橛脩糁付║ID 這個(gè)UID可以超過60000的限制

  -s, --shell /PATH/TO/SHELL  在創(chuàng)建用戶的時(shí)候 為用戶指定默認(rèn)shell 使用絕對(duì)路徑

  -D  --defaults  顯示或修改用戶默認(rèn)屬性值

  -s, --shell /PATH/TO/SHELL 修改/etc/default/useradd文件中SHELL的默認(rèn)值


usermod:修改用戶賬戶信息

   usermod [選項(xiàng)] 登錄名

   -c, --comment ‘COMMENT’ 修改用戶的注釋信息

-g, --gidGROUPNAME  修改用戶的主要組

-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]  修改用戶的附加組為列表中的組

-a, --append 與-G選項(xiàng)同時(shí)使用 給用戶添加新的附加組

-d, --home /PATH/TO/HOME_DIR 修改用戶的家目錄

-m, --move-home  與-d選項(xiàng)同時(shí)使用意味著將舊的家目錄中的數(shù)據(jù)移動(dòng)到新家之中

-l, --login NEW_LOGIN 更改用戶賬戶的登錄名

-s, --shell/PATH/TO/SHELL 修改用戶賬戶的登錄shell

-u, --uid UID  修改用戶的UID

-L, --lock  鎖定用戶的密碼

-U, --unlock 解鎖用戶的密碼


userdel 刪除用戶賬戶

  userdel [選項(xiàng)] 登錄名

   -r 刪除用戶的同時(shí) 清除用戶的家目錄


用戶認(rèn)證相關(guān)的命令

passwd  設(shè)置或者查看用戶密碼信息的命令

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

1.如果省略用戶名 意味著更改當(dāng)前登錄用戶密碼

2.如果指定用戶名 更改指定用戶密碼 只能root使用

選項(xiàng):

  -l, --lock  鎖定用戶的密碼

  -u, --unlock  解鎖用戶的密碼

     相比較usermod –L|-U 而言 其優(yōu)先級(jí)更高

     如果使用usermod –L鎖定的用戶密碼 可以使用passwd –u解鎖

     而是用passwd –l鎖定的用戶密碼 無法使用usermod –U解鎖

  -d,-–delete  刪除用戶密碼 將/etc/shadow文件中第二字段清空

  -S, --status  查看用戶的密碼狀態(tài)

  --stdin  借助于管道將輸入數(shù)據(jù)流當(dāng)做標(biāo)準(zhǔn)輸入信息送給passwd命令

    echo“PASSWORD”|passwd—stdin USERNAME

組認(rèn)證相關(guān)的命令

gpasswd

gpasswd [選項(xiàng)] groupname

-a, --adduser  向名為 group 的組中添加用戶 user。

   -d, --deleteuser  從名為 group 的組中移除用戶 user。


其他命令

   su switch user 切換用戶身份

     su USERNAME 部分切換 半切換  在切換用戶的時(shí)候不會(huì)重新讀取用戶的配置文件 因此 用戶并沒有登錄行為 所以 工作環(huán)境不初始化

     su-USERNAME 完全切換 在切換用戶的時(shí)候 重新讀取目標(biāo)用戶的配置文件并且初始化工作環(huán)境  相當(dāng)于su –l USERNAME

     -c“COMMAND”并不切換用戶身份 而是以目標(biāo)用戶的身份執(zhí)行某命令

使用su命令的時(shí)候 從root切換到其他普通用戶 無需密碼 但普通登錄用戶進(jìn)行切換時(shí) 必須給出目標(biāo)用戶的密碼

 進(jìn)行用戶切換之后 不要連續(xù)切換 而是用exit命令返回之前的用戶

newgrp GOUPNAME 臨時(shí)更改當(dāng)前登錄用戶的主要組 使用exit返回之前的狀態(tài)

id  顯示真實(shí)的和有效的用戶和組的ID

  真實(shí)ID 在/etc/passwd定義的用戶的UID和GID

  有效的ID  當(dāng)前生效的用戶的UID和GID

id [OPTION]... [USER]

  -g 只顯示用戶的有效GID

  -n 只顯示用戶的有效UID

  -G 顯示用戶所有組的ID

  -n 以名稱代替ID來顯示


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI