馬哥學習周總結第二週→常用命令------李洋個人筆記。

bash的基礎特性
globbing 整體文件名通配(非部分),對多個文件進行匹配的一種匹配模式。
匹配模式需要用到 元字符(元數據相當於一本書的目錄)。windows中也有元字符 也叫萬能通配符 ,代表任意長度的任意字符,linux也是.
舉例
pa, 所有以pa開頭的所有文件都符合這個條件。
pa 所有以pa結尾的所有文件都符合這個條件。
pa 所有文件名中間包含pa的都符合這個條件。
pa 所有文件中包含p和a的都符合這個條件。
但是
pa只能用來描述p在a之前,不能來描述p在a之後。
? 用來代替任意一個單獨字符。
舉例
pa? 以pa開頭的文件,且文件名長度只能是3個,所以 pa不符合,paa符合,passwd不符合
??pa 以pa結尾的文件,且文件名長度只能是4個
p?a 以p開頭,以a結尾,且文件名只能是3個的文件。

[]中括號,匹配指定範圍內的任意單個字符
有幾種特殊格式
[a-z],[A-Z]都用來表示所有字母a-z的,不區分大小寫.
PS 由於[a-z]的順序是aAbB...zZ的緣故,a-z會
漏掉一個大寫的Z.同理A-Z會漏掉一個小的的z]
表示完整的a-z是[a-Z]或[A-z].

[0-9]用來表示所有數字

[a-Z][0-9]用來表示所有數字和字母.

中括號內只要出現一個符合在這個範圍內的條件,就匹配成功.
舉例
pa[0-9] 用來尋找以pa開頭,後面數字0到9範圍內的文件.且文件名長度不能超過3
pa[a-z] 用來尋找以pa開頭.後面字符a到z範圍內的文件.且文件名長度不能超過3
pa[0-9][0-9] 用來尋找以pa開頭.後面存在2個數字的文件,文件名長度不能超過4
搜索包含200到299之間的文件, 2[0-9][0-9]即可.

小細節 匹配中[a-z]不區分大小寫,但用戶指定的話除外
舉例.當前目錄中存在 pa和Pa兩個文件
使用 p[a-z] 只會顯示pa這一個文件,因爲Pa是大寫P開頭,不符合用戶限定的小寫條件.而 [a-z][a-z] 則會顯示 pa和Pa兩個文件,所以說匹配不區分大小寫。

強制查找大寫字母,則使用固定格式[:upper:],表示所有大寫字母.
舉例,查找包含大寫字母a-z字母的文件
[[:upper:]],外側的中括號表示指定範圍,內側的中括號[:upper:]則爲固定格式.
[取值[:upper:]範圍],且只代替一個字符位置.
舉例

touch PpP

ls [[:upper:]]p[[:upper:]]

PpP

[[:upper:]] 表示所有大寫字母,
[[:lower:]] 表示所有小寫字母,
[[:alpha:]] 表示所有字母,
[[:digit:]] 表示所有數字.
[[:alnum:]] 所有的字母和數字,
[[:space:]] 所有空白字符,空格、TAB、及回車。水平及垂直製表符。
[[:punct:]] 所有標點符號。
[[:blank:]] 表示空格(水平製表符)及TAB
創建名字包含空白字符的文件時,需使用轉意符\,舉例
touch p a 這樣執行後是創建兩個文件(a和b)
touch p\ a 這樣執行後創建的文件纔是名字爲p a的一個文件.
不加轉意符,touch p a中,p和a之間的空格是用來表示兩各參數的分隔符的
加入轉意符\,則表示p和a之間的空格就是空白字符本身,不再作爲參數分隔數識別.

[^] 匹配指定範圍外的任意單個字符
舉例
[^[:upper:]] 除了大寫字母外的所有文件名.
[^[0-9]] 除了數字外的所有文件名,
[^[:alnum:]] 除了字母和數字外的文件名,即特殊符號的文件.

tr命令 去除字符命令
tr + -d+要去的字符,舉例

echo abc | tr –d b

ac

ln 創建軟鏈接,硬鏈接
格式 : ln 源文件+目標文件 創建硬鏈接

ln /etc/issue /tmp/123

將etc下的issue創建爲硬鏈接,目標指向tmp下的123,此時123的所有值,權限,大小.時間戳等完全一致.即這兩個文件是同一個文件.就是位置不一樣.

PS: 硬鏈接只能是在同一個分區(文件系統)內進行,不能跨分區(文件系統)進行.查看是否是統一分區命令 # df即可.
Ln -s 源路徑+目標路徑 創建軟鏈接

ln -s /tmp/issue /app/123

#將etc下的issue創建爲軟鏈接,此時運行/app下的123文件,其數據與/etc下
的issue相同,但權限,時間戳,路徑不一致.用windows的說法就是:/app/123理解爲/etc/issue的快捷方式.
PS :軟鏈接可以跨分區(文件系統來進行). 如果創建的{軟、硬}鏈接文件事先不存在,則自動創建同名的文件.

套接字 客戶端端口(隨機)與服務器端口(固定)的連接方式。也就是兩個端口號連接 叫套接字。
大部分套接字都是遠程的,需要進程建立端口來實現,本機的套接字需要套接字文件實現。
以後連接Mysol就是用端口遠程連接來實現。

nc -Ul name 創建一個套接字

nc -U name 加入這個套接字 (在同一個tty下,新建一個tty)

兩個tty可以像QQ那樣聊天了.

IO(輸入輸出設備)重定向及管道管理

程序=指令+數據
程序自己也有輸入輸出的概念(運行一段指令得出結果再保存到某處,比如計算機的後臺服務程序)

數據來源 1 設備輸入:2 程序自帶:

程序的數據流有三種
輸入的數據流 標準輸入(stdin) 默認爲鍵盤
輸出的數據流 標準輸出(stdout) 默認爲顯示器
錯誤數據輸出流 錯誤輸出(stderr) 默認爲顯示器

fd:文件描述符
對程序來說,標準輸入用0表示,標準輸出用1,錯誤輸出用2來表示

io重定向

正確輸出重定向 > 覆蓋式
可以重新指定程序的默認輸出位置,包括其他的終端(虛擬或實體).舉例

cat /etc/issue > /tmp/issue.out 執行後,會先在/tmp目錄下創建一個issue.out
的文件,再把/etc/issue當中的值複製過去.

通常用來在各設備之間來互相傳遞數據.
PS cat /etc/issue /dev/sda 會幹掉硬盤上的所有數據.
另外這種重新定向輸出的結果是覆蓋式的,且不詢問用戶.

正確輸出重定向 >> 追加內容
與>覆蓋原有內容不同的是,它會保留之前的內容,並在後面輸出定向的內容.

set 設置或撤銷shell選項的值以及位置參數.
set -C 禁止使用覆蓋重定向符 > 來覆蓋已存在文件內容
set+C 關閉 set -C的效果
使用了set-C後,若想執行本次的覆蓋指令,可在>後面加上|豎線即可.
(豎線 shift+回車旁邊的鍵) 強制覆蓋操作 >|
舉例

set-C set -C 的設定,只對當前shell有效。

cat /etc/issue > /tmp/issue.out

提示 無法覆蓋已存在的文件

cat /etc/issue >| /tmp/issue.out

執行成功

set +C

cat /etc/issue >| /tmp/issue.out

執行成功

錯誤輸出流重定向 2> 覆蓋式
錯誤輸出流重定向 2>> 追加內容

cat /etc/issue1 2> /tmp/issue.err

本行的錯誤消息,被2>錯誤輸出重定向轉移到ieesu.err文件裏去了

所以此時cat /tmp/issue.err的值爲 沒有那個文件或目錄.

>> 2> 2>> 是正確輸出和錯誤輸出
合併這兩者的命令 &> &>>
不論是正確的還是錯誤的,都會輸出重定向到指定位置.
舉例,a文件值位 hello

cat a &>> /tmp/b

此時b的值爲hello

cat abc &>> /tmp/b

因爲abc文件不存在,同時使用了追加命令,所以此時b文件內容爲 hello 沒有那個文件或目錄

cat a &>> /tmp/b 等於 cat a >> /tmp/b 2>&1

2>&1 默認錯誤輸出爲2,&符號相當於and,1是正確輸出的意思.此指令代表如果命令正確,則輸出文件到正確的1當中,如果不正確,就將錯誤的2追加到1指定的文件中. 2>&1 不能寫爲2>>&1

輸入重定向 < 和管道的區別是,管道後可以接命令,輸入重定向的目的地不能接命令.

mail命令
mail+ -s +主題+目的用戶 回車編輯內容。編輯完後用 .結束
查看郵件 切換到目的用戶,輸入 mail,在出現的列表中選擇郵件前的數字編號輸入並回車,則顯示.
回覆郵件則按r鍵

tr 命令
tr set1 [set2] ,也可以<+文件的形式來讀取數據
如果set1比set2長,那麼多出的部分將按照set2中最後的一個符號來轉換
如果set2比set1長,那麼轉換完set1後將停止轉換。

tr -s set1 連續的字符只顯示一個
tr -d set1 刪除指定範圍的字符
以上倆種不會修改原文件,只把指定的結果顯示在屏幕上.

把輸入的數據當中的字符,凡是在set1定義中出現的,按位對應轉化爲set2當中出現的字符.
舉例 tr[a-z] [A-Z] 意思爲,把輸入的英文字符轉爲爲大寫的形式,第一個a-z是set1,A-Z是set2.

tr[a-z] [A-Z] < /tmp/issue.err

將輸入定向改爲issue.err文件內的內容,並將其中的所有小寫字符轉換爲大寫,輸出到屏幕上.

tr命令通常用來轉換.壓縮,刪除,替換字符等來使用.

<< 此處創建文檔的意思,用法(多行重定向)

cat << eof

執行後,以文本形式輸入數據,當輸入eof後回車結束輸入,並將所輸入的內容顯示在屏幕上.

cat > tmp/issue << eof

執行後,以文本形式輸入數據,當輸入eof後回車結束輸入,並將所輸入的內容保存到tmp/下的

issue文件中.

管道命令 | :連接程序.將前一個命令的輸出位置,直接定向後一個程序,當做輸入數據流.

cat /etc/issue | tr[a-z] [A-Z]

將cat的輸出,當做了tr命令的輸入,此時會在屏幕上顯示大寫的issue文件內容.

因爲tr的輸出位置沒有發生變化.還是按cat的默認輸出--屏幕.
可以存在多個管道

cat /etc/issue | tr [a-z] [A-Z] |tr -d [0-9]

將issue當中的小寫字母換成大寫的,並且刪除當中的所有數字,將結果顯示在屏幕上.

|命令是一次輸入,一次輸出

管道命令前可直接加命令
who | tr a-z A-Z
將who的信息改爲大寫並顯示在桌面上。

輸入重定向 < 和管道的區別是,管道後可以接命令,輸入重定向的目的地不能接命令.

tee 命令,它可以實現一次輸入,二次輸出.一份放指定文件內,一份放管道里.

cat /etc/issue | tee /tmp/issue.tee | tr [a-z] [A-Z]

執行結果 先經過tee命令,將issue當中的數據保存至issue.tee當中

然後執行tr命令,將小寫切換爲大寫,並將結果輸出在屏幕上.

小技巧 tee命令可以創建出實際不存在的文件.

特殊設備 /dev/null 數據黑洞,放入當中的數據會自動丟棄
主要用來 只需要執行命令後的成功與否,不需要命令的執行結果時用

ls /var &> /dev/null 查看目錄/var,並將結果輸出到/dev/null中

echo $? 查看上一次命名執行後的參數,只有爲0纔是正確

0 執行成功

通常這種辦法是用來運行編程或腳本時,查看有無錯誤時用,不要執行結果,只看正確與否.

用戶,組和權限管理。

用戶: 每個計算機使用者都是用戶。通常是賬號密碼的形式來進行。
賬號是識別這個用戶唯一的標識,而密碼是用來認證這個用戶。
認證完畢後,計算機再分配對應的權限給這個用戶。然後再審計(監督)這個用戶。使用權限是否超標。
即 認證--授權---審計(監督)3A政策。
用戶類別
1 管理員組 組ID號爲 0
2 系統用戶的數字ID取值範圍 centos5和6 1-499 centos7 1-999
3 登錄用戶的數字ID取值範圍 centos5和6 500--60000 centos7 1000-60000
4 普通用戶是1-65535來表示。但一般只用到60000,後面的省略了。

linux上的運行的進程,所擁有的權限取決於用戶本身,不同的用戶,權限大不相同。系統用戶是爲了能夠讓那些後臺進程或服務類進程以非管理員的身份運行而存在的。這樣就達到了限制權限的目的。爲此,通常需要創建多個普通用戶,但這些用戶從不登錄。也可以說,系統用戶是運行內核服務的普通用戶。而通常說的進程,其實也是按發起者(用戶)所擁有的權限來運行的。

計算機只認二進制數字,用戶名也是用16位二進制來表示,取值範圍0-65535.管理員默認爲0.

名稱解析:將用戶名字轉換爲計算機能理解的名字的過程。使用名稱解析庫進行。名稱解析庫包含了 用戶名和ID名的對應關係。linux的解析庫就是 /etc/passwd.最開始是把用戶名跟密碼都放這裏的,但爲了安全,又將密碼單獨放入/etc/shadow數據庫中並單獨加密組的密碼庫文件是在 /etc/gshadow 。

用戶組:用戶的容器,能將多個用戶合併在一起作爲一個單獨的邏輯組件。
它和文件的屬主和屬組一起形成一個完整的邏輯,便於對權限的授予及撤銷。一個用戶,對自己屬主的文件擁有全部權限,而對屬組的文件只有部分權限。linux用這種形式,對文件和用戶進行立體化管理。

而判斷當前用戶對文件是否有訪問權限順序 文件所屬人>文件所屬組>其他 ,前面只要判定成功,則不再判定.

用戶組按分類有如下三種:

組類別1 管理員組 0
普通用戶組 1-65535
系統用戶組 centos5和6 1-499 centos7 1-999
登錄用戶組 centos5和6 500--60000 centos7 1000-60000
同樣需要用到解析庫. 組的解析庫爲 /etc/group

組類別2 用戶的基本組 即主組
用戶的附加組 用戶的額外組

組類別3 用戶的私有組 組名同用戶名,且只包含一個用戶。
用戶的公共組 組內包含了多個用戶。
公共組不×××全。因爲當組中某個用戶創建了文件,這個文件對於組成員來說是共享的。

密碼的使用策略
1 使用隨機密碼
2 長度不低於八位
3 使用包含大寫字母,數字,標點符號,小寫字母的混合組合
4 定期更換、

密碼的加密算法
1 對稱加密 加密和解密使用同一個加解密方式,將明文轉換爲密文。
2 非對稱加密 加密和解密使用一對密碼鑰匙來加解密。每一對分爲 公鑰和私鑰。
3 單向加密 只能加密,不能解密。提取數據指紋(特徵碼)來進行。
特點:
1 定長輸出 不看源數據長短,算出的特徵碼是固定長度。
2 雪崩效應 任何一點數據的變化,都會導致結果絕不相同。
加密命令
md5 定長輸出128位
sha1 定長輸出160位
sha224 定長輸出224位
sha256 定長輸出256位
sha384 定長輸出384位
sha512 定長輸出512位
爲了避免多個用戶設置的密碼一樣,導致加密的結果一樣,故在加密計算時會加入隨機數(salt)來進行區分。(同一種加密,只要數據一樣,結果必定相同,加入隨機數會改變數據)在校隊密碼時候,將之前的隨機數提取出來,再加上輸入的密碼進行計算,然後跟保存下來的結果相對比,一樣的話就證明密碼輸入正確。

/etc/passwd 用戶的信息庫,包括用戶名,用戶密碼等等,格式
name用戶名 password密碼 UID賬號ID GID組ID GECOS註釋信息 directory家目錄 shell默認shell.
第一字段 用戶名
第二字段 早期的用戶密碼,現在用x代替,x作爲佔位符,表示密碼轉移到/etc/shadow中去了
第三字段 指的是UID,用戶的數字ID號。
第四字段 GID 用戶所屬的主組的ID號
第五字段 GECOS 用戶的註釋信息,比如公司電話啊,家庭電話等等.
第六字段 用戶的家目錄.
第七字段 用戶的默認shell。
舉例:# root:x:0:0:root:/root:/bin/bash中,root是用戶名,x是密碼佔位符,第一個0是UID,第二個0是組ID.rott是用戶的註釋信息,/root是用戶家目錄,/bin/bash則是用戶的默認shell.

/etc/shadow 存放用戶密碼及用戶賬號期限的信息,格式

登錄名 加密了的密碼 最後一次更改密碼的日期 密碼的最小年限 密碼的最大年限 密碼警告時間段 密碼禁用期 賬戶過期日期 保留字段,中間用冒號隔開.
登錄名 必須是系統內有效且存在的用戶名
加密了的密碼 用加密方式加密過的密碼,包含算法.
最後一次更改密碼的日期 從1970年1月1日開始,最近一次修改密碼的時間.

密碼的最小年限 用戶修改一次密碼後,多久後需要再次更改密碼的時間.爲0或空字段表示沒有限制,

密碼的最大年限 過了這些天之後,用戶必須改密碼.爲0的話表示用戶不能改密碼.空字段表示沒有密碼最大年限,包括沒有密碼警告時間段及密碼禁用時間段.

密碼警告時間段 密碼過期之後,用來警告用戶改密碼的天數,空字段或0則表示沒有警告時間
.
密碼禁用期 密碼過期後,接受這個密碼的天數,空字段表示沒有禁用期.它跟密碼警告時間段的區別: 密碼警告時間段內,用戶不改密碼依然可以登錄計算機,但是密碼禁用期內,不改密碼則無法登錄.

賬戶過期日期 從1970年一月一日起,賬戶過期的天數.

舉例 # centos:$6$yp8y6.dV$ 當中.
centos是登錄名,$6$之間的6是說明採用了什麼算法(6代表的是sha512算法) $yp8y6.dV$之間的yp8y6.dV 表示隨機數(即salt)後面的長字符串
Ein8fv4JL2Wkc8NVovgT1cp.CgGQzGduumUc6cqlzYyMlIi8yGQd6UtxwZ./xzMt/04OZP38cxnpPbCCHvqvn/纔是加密後的密碼形式.其後的:17640:0:99999:7:::內

17640是指這個賬號從1970年一月一日開始,截止到最近一次更改密碼所
用的天數.後面的0是密碼最小年限,爲0或空字段則表示沒有最小年齡.99999是密碼最大年限.7是警告時間天數.密碼禁用期爲空,表示密碼不會強制過期,賬戶過期日期爲空,表示賬戶永不過期.保留字段爲空,也就是沒有將來使用的字段。

/etc/group 組的信息庫
分爲:組名,組密碼佔位符,組ID號,用戶列表,該組的用戶成員,以此組爲附加組的用戶的用戶列表。

創建,更改,刪除用戶

useradd創建一個用戶或更新默認新用戶信息
格式 選項+用戶名
創建後的用戶會自動創建一個與其名字一個的組,稱爲該用戶的主組。
-u 指定UID號。

-o 配合-u選項,不檢查UID的唯一性。

-g 指定其所屬的主組ID,這個組事先必須存在。

-c 用戶註釋信心。 格式 useradd -c +註釋內容+用戶名

-d 創建用戶指定的家目錄,它是通過複製/etc/skel此目錄並改名爲用戶名來實現的.如果指定的目錄事先實在,則不會爲用戶複製環境配置文件.不加此選項,默認是在home目錄下,與用戶名一樣的目錄。格式 # useradd -d +指定路徑+用戶名

手工創建家目錄

mkdir /home/magetest 創建一個目錄

cp -r /etc/skel/.[^.]* /home/magetest 複製源家目錄文件到新建目錄中

chown -R magetest:magetest /home/magetest 將新建目錄的屬主和屬組改爲magetest.

-s 指定用戶的默認shell. 常規shell列表存儲在/etc/shellls文件中.這裏面的shell是安全的.如果指定的shell中無法使用,則用戶無法登陸.如果默認shell被改爲nologin,則代表這個用戶屬於啓動系統服務的特定用戶,一樣無法登錄.

-G 指明用戶所屬的附加組,多個組之間用逗號分隔。組必須事先存在。
格式 useradd -G 附加組名,附加組名... 用戶名

-N 不創建私用組做主組,使用users組做主組 極端不安全,相當於自己建立的文件都被users這個默認公共組內的組成員共享了.

-r 創建系統用戶.centos6的系統ID號小於500, 7的系統ID號小於1000.

-m 創建家目錄,用於系統用戶。

-M 不爲用戶創建家目錄.

特殊:
-D 顯示創建用戶後的一些默認配置信息.內容如下:
GROUP=100 爲用戶創建的私有組
HOME=home 家目錄
INACTIVE=-1 賬戶過期時間,-1是永不過期,默認爲99999天.
SHELL=/bin/bash 默認shell
CRRATE MAIL SPOOL=yws 是否在/var/spool/mail/下給用戶創建一個郵箱.yes爲創建.

修改默認選項,uesradd -D +選項 舉例

useradd -D -s /bin/csh

將默認shell改爲/bin/csh

默認信息文件保存在 /etc/login.defs中
修改後的保存在/etc/default/useradd中,可以通過編輯這個文件來實現.

修改用戶屬性 usermod 格式 uesrmod+選項+用戶名
-u 修改用戶的UID
-g 修改用戶的基本組,即主組. 若用其他組來修改,則修改的放前.被改的組放後面 # usermod -g mage5 mage3 # 將mage3的主組改爲mage5
-G 修改用戶所屬的附加組,原來的附加組會被覆蓋.如果不想被覆蓋,則需要加上-a選項 .
-a 追加新的附加組,跟-G一起使用纔有效.
-c 修改註釋信息.
-d 修改用戶的家目錄.如果用戶原來的家目錄裏面有文件,則會丟失這些文件.如果不想丟失這些文件,需要加上-m一起使用 -d必須放在目錄前面,否則報錯。
-m 將原來的家目錄文件移動到新的家目錄下保存,只能與-d一起使用纔有效. 格式爲 -m -d
-l 修改用戶名.
-s 修改用戶的默認shell.
-L 鎖定用戶密碼,即禁止用戶登陸.鎖定是在用戶的密碼字符串之前加一個感嘆號!
-U 解鎖用戶的密碼. 解鎖是把加的!號解除.

刪除用戶 userdel 格式 userdel+選項+用戶名
-r 刪除用戶時,一併刪除其家目錄.

組創建命令 groupadd
格式 groupadd +選項+組名
-g 自定義GID,不指定的話,默認是上一個組的GID加1.

groupadd -g 702 liyang

創建一個ID號爲702,名字爲liyang的組

-r 創建系統組

groupadd -r ningbaobao

創建一個名字爲ningbaobao的系統組

組修改命令 groupmod
格式 groupmod+選項+組名

-g 修改GID 沒加-o選項的話 不能與其他組ID名相同

groupmod -g 701 liyang

將組名爲liyang的組ID改爲701

-n 修改組名字

gropmod -n kkk liyang

將組名字爲liyang的改爲kkk 被改名的組當中,如果有其他加入的組,其所屬組也會改變。

組刪除命令 groupdel
格式 groupdel+組名

如果刪除的組中還包含其他的用戶,那麼這些用戶將沒有組織。

gruopdel liyang

刪除組名爲liyang的組。

示例:
1 創建用戶gentoo,UID爲4001,主組爲gentoo,附加組爲distro(GID爲5000)和peguin(GID爲5001).

useradd -u 4001 gentoo

groupadd -g 5000 diatro,

groupadd -g 5001 gentoo

useradd -G diatro,peguin gentoo

id gentoo

2 創建用戶fedora,其註釋信息爲"Fedora core",默認shell爲/bin/tcsh.

useradd fedora -c "Fedora core" -s /bin/tcsh

id fedora

3 修改gentoo用戶的家目錄爲/var/tmp/gentoo:要求其原有文件仍能被用戶訪問:

usermod -m -d /var/tmp/gentoo gentoo

4 爲gentoo新增附加組netadmin

groupadd netadmin

usermod -a -G netadmin gentoo

密碼管理命令 passwd

格式:passwd+選項+用戶名
直接passwd,不帶選項是修改自己的密碼,passwd,後面加上用戶名,則是修改指定用戶的密碼,但是默認只有root用戶纔有此權限. 密碼默認保存位置
在/etc/passwd當中.也可以直接修改這個文件來實現一些變動,但一般不建議這麼做.

-l和-u 鎖定和解鎖用戶.
-d 清除用戶密碼.
-e+天數 密碼過期期限
-i+天數 非活動期限,密碼過期之後還能活動幾天的期限
-n+天數 密碼的最短使用期限
-x+天數 密碼的最長使用期限
-w+天數 密碼的警告期限.

--stdin 改變輸入方式至標準輸入,從管道讀入新的密碼 通常這麼使用 echo"密碼" | passwd --stdin 用戶名通過管道的形式,將密碼輸送到指定用戶名下.一般在腳本中這麼用.可以批量修改用戶密碼

組密碼管理命令 gpasswd
格式:選項+用戶名+組名 密碼保存在 /etc/gshadow

-a+用戶名 向組中添加此用戶,也就是 讓此用戶以此組爲附加組。不能添加多個用戶。PS:組管理員也可執行該命令

-d+用戶名+組名 從指定組中移除此用戶。組管理員也可執行該命令.

gpasswd -d liyang1 usrs 將用戶liyang1從公共組user中刪除

-r 將指定組的組密碼刪除掉 組管理員也可執行該命令

-R +組名 限制組成員訪問該組 臨時性限制,root可取消此限制.

-M, +USER1,USER2,... 一次性設置組成員(僅root執行)

-A+用戶名1,用戶名2....+組名,將指定的用戶設定爲該組的管理員.(僅root執行)

gpasswd hr1,hr2 zhangsan 將用戶hr1,hr2都設置爲zhangsan組的組管理員

chage修改密碼期限命令
格式:chage+選項+用戶名
-d 上一次更改的日期
-e 賬戶到期的日期,過了就不可用。
-w 用戶密碼到期前,提前收到警告信息的天數
-m 密碼可更改的最小天數,爲0則表示隨時可以
-M 密碼保持有效的最大天數。
-l 列出當前的設置。由普通用戶來確定他們的密碼或賬號何時過期。
-i 停滯時期。如果一個密碼已過期這些天,那麼此賬號將不可用。

groupmems 更改和查看組成員(僅root可用)
格式 選項+組 選項+用戶.

-g 更改爲指定組 使用該命令指定組時必須加上

-a 指定用戶加入組

-d 從組中刪除用戶

-p 從組中清除所有成員

-l 顯示組成員列表

groupmems -g zhangsan -a lisi

將lisi加入zhangsan的組

#groupmems -g zhangsan -d lisi

將lisi踢出zhangsan的組

groups+用戶名 查看用戶所屬組列表。

newgrp +組名 當前用戶的主組臨時切換指定的組爲主組

使用nesgrp命令臨時加入組時,要加入的組必須事先有密碼.當一個用戶組加上密碼後,不屬於這個組的用戶,在切換到這個組作爲基本主的時候,必須輸入密碼纔可以.若該組屬於用戶的附加組之一,則無需輸入密碼。要轉入進去的組,必須設置上密碼,沒有密碼則無法轉入進去,避免任意用戶切換到root組。

顯示用戶實際和有效的ID信息 id
id+選項+用戶名,直接id顯示自己的信息。
-u 僅顯示有效的UID
-g 僅顯示有效的GID
-G 僅顯示用戶所屬的所有組的ID號,基本組合附加組的。
-n 僅顯示名稱 # id -G -n 僅顯示組的名字,不再顯示ID號。

切換用戶命令 su - +選項+用戶名
加上 - 會通過讀取用戶的配置文件來重新初始化
不加 -不會讀取目標用戶的配置文件來初始化,但是可以傳遞給管道,用這個用戶的身份去執行一些命令.只有管理員可以無密碼的形式,切換至任意用戶。非管理員切換至任意用戶時,必須提供目標用戶的密碼。特殊用法 -c ,切換至目標用戶,只執行一次命名再返回

su - yangyang -c “whoami” 切換到yangyang用戶,並執行命令whoami

yangyang 執行結果。

修改用戶所用shell chsh(只能root用戶使用)
chsh+用戶名

chsh yangyang

提示修改,輸入 /bin/csh

head /etc/passwd

yangyang用戶的默認shell改爲了/bin/csh

pwck.grpck檢查用戶/組密碼是否有問題,如有則列出.

newusers命令用於批處理的方式一次創建多個命令。
格式 命令+文件 文件的格式要與/etc/passw相同。即:
用戶名1:x:UID:GID:用戶說明:用戶的家目錄:所用SHELL.
舉例:

namo 123 編輯內容如下

liyang1:x:521:521::/home/yangyang1:/bin/bash

liyang2:x:522:522::/home/yangyang2:/bin/bash
liyang3:x:523:523::/home/yangyang3:/bin/bash

保存爲 123.txt

newusers 123.txt

批量創建成功。

chpasswd 批量創建密碼
語法 用戶密碼文件,格式爲 用戶名+冒號+密碼

nano 456 編輯內容如下

liyang1:789

liyang2:789
liyang3:789

保存爲 456.txt

chpasswd < 456.txt

liyang1,2,3密碼同時設置爲789.

chfn+用戶名 設置指定用戶個人信息,比如名字,電話等等.

chsh 指定用戶shell 等同於 usermod -s 不解釋

finger 列出指定用戶的信息,在chfn中輸入的信息這裏可以看到
格式 選項+用戶名.
-l 列出該用戶的帳號名稱,真實姓名,用戶專屬目錄,登入所用的 Shell,登入時間,轉信地址,電子郵件狀態,還有計劃文件和方案文件內容。

-m 排除查找用戶的真實姓名。

-s 列出該用戶的帳號名稱,真實姓名,登入終端機,閒置時間,登入時間以及地址和電話。

-p 列出該用戶的帳號名稱,真實姓名,用戶專屬目錄,登入所用的 Shell,登入時間,轉信地址,電子郵件狀態,但不顯示該用戶的計劃文件和方案文件內容。

getent 可以用來察看系統的數據庫中的相關記錄,
格式 命令+文件/組 +組名/用戶 +用戶名

示例:

getent shadow 查看用戶密碼 不管是否在這個數據庫的目錄下,都可執行,無需加路徑.

getent shadow liyang1 單獨查看用戶liyang1的密碼.如果用戶不存在,則無反應,什麼也不顯示.

genent group liyang 單獨查看liyang組信息

chown 改變某個文件或目錄的所有者和所屬的組
格式 用戶名字+文件/目錄名字

chown zhangsan a

將文件a的所屬用戶改爲zhangsan。 文件的所屬主可修改文件的權限.

-R+用戶+目錄 遞歸處理,將指令目錄下的所有文件及子目錄一併處理,舉例

chown -R zhangsan /home/magetest

將目錄/home/magetest及其子目錄的所屬主改爲zhangsan

chown+用戶名+:組名+文件名/目錄名 可以一次性改文件/目錄的所屬人,所屬組.(rott用戶可以運行)

chown zhangsan:lisi a 將文件a的所屬人改爲zhangsan,所屬組改爲lisi.

chown --reference=參考文件 替換文件 將按照參考文件的權限來設置要替換的文件權限.

chown --reference= zhangsan lisi

將lisi的文件權限改爲和張三一模一樣的.

chgrp修改組權限 僅root和文件的所屬人可以更改文件的所屬組(但所屬人一定要屬於目標組)
格式:chgrp+組名+文件/目錄名 將文件/目錄的所屬組改爲指定組.

chgrp zhangsan a

將文件a的所屬組改爲zhangsan

文件的權限歸屬及類型
u User, 即文件或目錄的擁有者;

g Group,即文件或目錄的所屬羣組;

o Other,除了文件或目錄擁有者或所屬羣組之外,其他用戶皆屬於這個範圍;

a All,即全部的用戶,包含擁有者,所屬羣組以及其他用戶;

r 讀取權限,數字代號爲“4”;

w 寫入權限,數字代號爲“2”;

x 執行或切換權限,數字代號爲“1”;

  • 不具任何權限,數字代號爲“0”;

s 特殊功能說明:變更文件或目錄的權限(後面在ACL詳細說明)

文件的權限分佈信息爲 rwx rwx rwx 共計9位.rwx依次可理解爲 讀,寫,執行
第一個rwx是指所屬用戶, 用u代替
第二個rwx是指所屬組, 用g代替
第三個rwx是指所屬其他人, 用o代替

判定權限的方式:
1 如果文件的屬主(u)不是當前用戶,那麼先後順序爲 所屬用戶>所屬組>所屬其他人.
2 如果文件的屬主(u)是當前用戶,如果當前用戶沒有權限,那就結束判定,也不會去組或其他人裏面再判定。

對於文件來說:
*當僅r權限作用在文件上的時候,表示用戶可以讀取該文件的內容
當僅w權限作用在文件上的時候,表示用戶可以修改該文件的內容 寫日誌用。
當僅x權限作用在文件上的時候,沒有意義。
當rw同時作用在文件上的時候,表示用戶可以讀寫文件
當rx同時作用在文件上的時候,表示用戶可以讀且可以執行該文件
當wx同時作用在文件上的時候,權限與僅w相同
**當rwx同時作用在文件上的時候,用戶可以讀寫執行。

對於目錄來說:
當僅r權限作用在目錄上的時候,表示用戶可以短列出查看目錄下的文件名
當僅w權限作用在目錄上的時候,沒有意義
*當僅x權限作用在目錄上的時候,表示用戶可以進入且可以訪問目錄下的文件,但不能列出文件名
當僅rw權限同時作用在目錄上的時候,權限等同於僅r權限作用在目錄
*當僅rx權限同時作用在目錄上的時候,表示用戶可以進入,可以訪問子文件,同時可以長列出文件
當僅wx權限同時作用在目錄上的時候,表示用戶可以進入,可以訪問子文件,可以創建及刪除,但不能列出
**當rwx權限同時作用在目錄上的時候,表示用戶有完整權限
X 對於批量增加x權限時,可以跳過文件而只對目錄加x ,x對於文件來說意味着執行,對於目錄來說代表着進入。

用數字來表示權限
r: 4
w: 2
x: 1

出現的組合種類:
7: rwx
6: rw
5: rx
4: r
3: wx
2: w
1: x
示例:
文件 123所屬用戶爲root,所屬組爲liyang,權限表達爲rwx -w- --x 那麼理解爲root用戶對這個文件有讀寫刪除等權限,liyang用戶對這個文件不能看和直接修改,但可以通過追加>>的方式來寫入數據.而其他人則無法對此文件來進行任何操作.

添加或刪除權限使用 +或-或=號來區分 舉例

chown u-r lisi(原本權限爲rwx) # chown g+r lisi(原本權限爲-wx)

用戶李四的權限減去r變爲-wx # 用戶組李四的權限加上r變爲rwx

chown o=r-- 其他用戶的權限變爲 r--。

=號不可以直接加上之前不存在的權限,但能減去已存在的權限。

#chmod --reference a b 將a的權限應用在b的上面。

權限設置示例(chgrp,chown,chmod)

chgrp sales testfile
將文件testfile的所屬組改爲sales組。

chown root:admins testfile
將文件testfile的所屬主改爲root,所屬組改爲admins。

chmod u+wx,g-r,o=rx file
將文件file的屬主權限加上wx,屬組權限減去r,其他人權限設置爲rx。

chmod -R g+rwX /testdir
將目錄/testdir其下的所有文件,屬組的權限改爲rw,目錄/testdir屬組權限爲rwX.

chmod 600 file
將文件file的權限設置爲 rw- --- ---

chown mage testfile
將文件testfile的所屬人改爲mage.

默認權限 umask
umask碼通常用來計算,文件或目錄創建時的默認權限.
但是文件屬性帶x不×××全,所以在創建文件時候,默認權限不是777,而是666,只有目錄纔是777.

umask碼可以通過umask +數字的形式來調整默認值,所輸入的數字是從右向左排列,如果只輸入一位的話,其他位用0來補充.可以在 .bashrc當中永久修改umask的值.示例:

umask 2

0002 此時創建的目錄權限爲775,文件權限爲666

1 文件:666-002=664 即rw- rw- r--

2 目錄:777-002=775 即rwx rwx r-x

對於文件來說,用umask碼創建的文件,如果設置的權限減去umask默認值,其後的值爲奇數,那麼將奇數按照最終的值+1再執行,目錄無此限制.

在使用touch等創建文件的命令時,所建立的文件權限是基於umask默認值的
而在使用cp這類複製文件的命令是,複製後的文件權限是按照 源文件的權限減去默認umask值後得出值來計算.如果值爲負數,則負數值那一項的權限爲---.此外,如果源文件的權限沒有讀權限的話直接失敗不讓複製~!.
示例

umask 444

touch a 此時a的權限爲 666-444=222 即 -w- -w- -w-

chmod 000 a

cp a /app/li 此時複製失敗,因爲源文件a權限爲 -w- -w- -w-無法讀取。

特殊的權限格式 當文件權限中x位表示爲 s 的時候:

當s在u位上時(rws rwx rwx), (將一個文件屬主上,加上特殊權限 chown u+s 文件名/文件路徑.)對於可執行的二進制文件而言,任何人在執行該文件時,臨時擁有其屬主的權限. ps :rws, s是臨時遮擋了x的位置,但不代表s就代替了x. 而如果想知道一個rws文件原本是否擁有x的權限時候,可以通過權限位上的S以及T是否是大寫來決定(大寫代表着之前沒有x權限,小寫代表之前有x權限)也可以通過stat+文件名/目錄來查看.

stat+文件/文件路徑 列出文件的詳細信息(具體權限,絕對路徑,inode號,特殊權限位等等)

將一個文件屬組上,加上特殊權限 chown g+s 文件名/文件路徑.
當s在g上時(rws rwx rwx),對於可執行的二進制文件而言,任何人在執行該文件時,臨時擁有其屬組的權限.對於目錄作用了sgid權限之後,任何人在該目錄下創建的文件的所屬組,都會繼承目錄的所屬組。通過這種方式,可以實現多用戶共享方式的管理

mkdir wc 建立一個公共目錄.

chgrp users wc/ 將這個公共目錄的屬組改爲一個包含多用戶的附加組。

chmod g+s wc/ 在這個公共目錄的屬組權限上上加一個s

實現了在wc這個公共目錄裏面,所有文件都共享的目的.

PS: 任何人在該目錄下創建的文件的所屬組,都繼承該目錄的所屬組而不是自己的主組。包括root也是繼承這個目錄的所屬組。

sticky 可以在other(其他人)權限上加一個特殊權限 T 。只對目錄起效果,文件加T無意義。
格式 chmod o+t
加上T之後,在公共目錄當中,除了這個目錄的所屬人以及root之外,其他人,只要不是自己創建的文件,是沒有權限對其進行刪除操作的。(對文件加上T並沒有其他意義)

用數字表示 u位上的s,g位上的s, o位上的t 分別表示爲 4 2 1 .umsk碼共4位,從左向右第一位就是用來表達特殊權限值的。示例:

umask 222

touch a ; ll

r-- r-- r--

chmod 4444 a;ll 給文件a加上u+s權限並顯示

r-S r-- r--

chmod 2444 a;ll 給文件a加上g+s權限並顯示

r-- r-S r--

chmod 1444 a;ll 給文件a加上o+t權限並顯示

r-- r-- r-T

其餘特殊格式 一般是給root來準備的,防止一些誤操作.
chattr+i 不能刪除,改名,更改
格式 添加 chattr +i 文件 取消 chattr -i 文件

chattr+a 只能追加內容.
格式 添加 chattr +a 文件 取消 chattr -a 文件

lsattr 查看文件是否擁有特性屬性.
格式 lsattr + 文件.

取消目錄上的特殊權限 格式 chattr -R -a/i +目錄名。

訪問控制列表 ACL
又稱存取控制串列,是使用以訪問控制矩陣爲基礎的訪問控制方法,每一個對象對應一個串列主體[1]。訪問控制表描述每一個對象各自的訪問控制,並記錄可對此對象進行訪問的所有主體對對象的權限。
ACL:實現靈活的權限管理,除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限
ACL的生效順序: owner > acl user > group acl group 誰多誰優先 > other
傳統屬主>acl屬主>acl屬組或傳統屬組>其他用戶,acl屬組和傳統屬組之間,誰的權限大,就優先執行那個.

CentOS7 默認創建的xfs和ext4文件系統具有ACL功能 .

CentOS7 之前版本,默認手工創建的ext4文件系統無ACL功能,需手動增加

centos6有時候不支持acl,可以用下列方法解決:

1 創建新分區添加ACL功能.

fdisk /dev/sda

輸入n回車開始創建

回車

要求輸入最小柱面及最大柱面,可以直接輸入N+G,比如1G. 分區完成

輸入w回車保存

parrx -a /dev/sda 通知內核更改分區信息.

mkfs.ext4 /dev/sda3 將sda3分區格式轉換爲ext4.

2 執行命令 setfacl -m u:root:rwx test 如果不報錯,則證明當前系統支持ACL.

或者tune2fs -l /dev/sda3 |grep acl 可以檢查sda3分區是否可以設置ACL.

出現 Default mount options: user_xatter acl 代表可以設置.

出現 none爲不可用ACL ,這個時候執行命令:

tune2fs -o acl /dev/sda6 就可以執行acl權限了。

setfacl 爲目錄設置acl權限 getfacl 查看指定文件或目錄的acl權限

格式 :添加 setfacl -m (u/g):目錄屬主:rwx(要設置的權限) 文件或目錄名/
刪除 setfacl -x (u/g):目錄屬主:文件或目錄名/

setfacl -m 是設定的意思,u/g是權限位,目錄屬主是被設置目錄的屬主名字.

其餘選項:

-m u:uname:rwx 文件/目錄名 設置u位置上的指定acl權限.

-m g:gname:rwx 文件/目錄名 設置g位置上的指定acl權限.

-m d:u:wang:rx 目錄名. 設置指定位置上的默認acl權限

-x u:uname 文件/目錄名 刪除指定文件/目錄上對用戶的acl權限.

setfacl -Rm g:sales:rwX 目錄名 遞歸設置指定位置的acl權限.大寫的X表示,碰到文件就不加x.

setfacl -M file.acl 文件名/目錄名 從可讀取文件當中讀取事先安排好的acl權限.文件內容遵循以下格式來保存.
u:屬主名:rwx
g:屬組名:rwx

setfacl -X file.acl 目錄名 同-M,批量刪除指定目錄的acl權限,刪除時文件格式保存爲
u:屬主名
g:屬組名

tune2fs -o acl /dev 設置指定分區上的acl永久生效

getfacl +文件/目錄名 查看指定文件/目錄上的acl權限.

setfacl -b 刪除指定文件/目錄上的所有acl權限.

setfacl -k 目錄名/ 刪除指定目錄的默認acl權限.

同一個目錄上可以設置多個不同的u/s的ACL權限.

將house/目錄yangyang用戶的用戶位權限上加上rwx的acl權限.

setfacl -m u:yangyang:rwx house/

成功後目錄權限最後邊的.變爲+(..rwx.變爲..rwx+)

設置後用 getfacl house/可以查看具體到個人的acl權限.例如:

file: 當前目錄/

owner: 屬主

group: 屬組

user::rwx 傳統的u位權限 兩個冒號

user:yangyang:rwx(所設置yangyang的ACL權限) 單個冒號

user:yangyang2:r-x(所設置yangyang2的ACL權限)單個冒號

group::r-x 傳統的屬組權限 兩個冒號

mask::rwx 只有當設置了acl權限的時候纔會出現,代表當前目錄的權限上限,任何acl權限超過這個上限的權限均無效.設置上限方式: setfacl -m m:rwx(可隨意設置) 文件或目錄名,舉例

house/下 ,a文件權限 rwx .b文件權限 r-x ,c文件權限 -wx .

setfacl -m m:rw- house/ ; ll 設置權限上限爲rw-並顯示

a文件權限 rw- ,b文件權限 r-- ,c文件權限 -w-

設置權限上限後,超出的會刪除,本來沒有的也不會額外添加上去.但是這種方式對 acl的u和g,以及

傳統的組有效果.傳統用戶及其他人權限不受影響.其他人權限可單獨設置.chmod o+(rwx).

設置了acl後,chmod g+(rwx)+目錄名就不是設置組權限了,而是mask的值了.所以在 rwx rwx rwx當中,中間的rwx實際上顯示的就是mask的權限上限.

other::r-x 其他人權限 傳統的其他人權限 兩個冒號

ACL生效順序:屬主>acl用戶>傳統組=acl組>其他人(組與acl組是誰的權限是最大誰優先,實際工作中,設置了acl組之後,基本上用不到傳統組了).

通過setfacl -m 設置的acl權限只對當前已經存在的文件及目錄生效,未來的不會
設置對一個目錄默認的acl權限:

setfacl -m d:u:屬主:rwx 目錄名/

對未來創建的文件和目錄都保留一致的acl權限,當前已經存在的不受影響.

想對當前也起效,則再執行一條命令,如下

setfacl -Rm d:u:屬主:rwx 目錄名/

設置成功後會在other下方多出一堆default選項。

備份和恢復acl
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。但是tar等常見的備份工具.是不會保留目錄和文件的ACL信息。

tar cvf 123.tar 123/ 在123目錄下創建壓縮包123.tar

getfacl -R 123 > acl.txt 將123目錄的acl備份爲acl.txt

tar xvf 123.tar -C /var/tmp/ 解壓縮到/var/tmp/

mv acl.txt /var/tmp/ 備份文件轉入到/var/tmp/下

serfacl --restore acl.txt 恢復acl.

--restore=file:從文件恢復備份的acl規則(這些文件可由getfacl -R產生)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章