lamp-linux2

LAMP編程之Linux(2)

1、進階指令

一、du指令

做用:du表示directory used,顯示出目錄所佔的磁盤空間大小的狀況。php

語法:#du -sh 目錄路徑html

選項說明:linux

         -s:表示summary,彙總統計面試

         -h:表示以較高可讀性的形式顯示shell

 

案例:使用du -sh指令統計出「/etc」的大小狀況apache

 

二、df指令

做用:disk free,查看磁盤的剩餘空間的狀況。編程

語法:#df -hvim

選項說明:windows

         -h:表示以較高可讀性單位進行查看。數組

 

三、free指令

做用:查看內存的使用狀況

語法:#free -m

選項含義:

                  -m:表示以mb爲單位進行查看

 

注意:

       第一行表示memory,是內存各項的數字。

              其中,若是查看可用的剩餘內存,應該是3527的位置。

                       若是看的是剩餘的內存,則應該是3725的位置。

四、find指令

做用:表示根據條件去查詢文檔的所在位置。

語法:#find 範圍路徑 選項 選項的值

常見的選項:

                  -name:根據名字進行查詢

                  -type:根據文檔的類型進行查詢。[d表示文件夾,f表示普通文件,s表示套接字文件,l表示鏈接文件,c表示字符設備文件,b表示塊狀設備文件]

                  -user:根據全部者進行查詢

                  -group:根據所屬的用戶組進行查詢

                  -size:根據大小進行查詢

 

案例:咱們記不清一個文件httpd.conf所在位置,如今要求使用find指令進行查詢

#find / -name httpd.conf -type f

 

 

補充:-name選項支持通配符(「*」),模糊查詢。

例如:假設我須要查詢磁盤中所有的.conf文件,則能夠寫成:#find / -name *.conf -type f

五、ps指令

做用:表示process show,查看進程

語法:#ps -ef

選項含義:

                  -e:等價於-A,all,表示所有

                  -f:表示full,顯示所有的列

操做效果:

 

UID:該進程的啓動用戶名;

PID:process id,進程的id號

PPID:parent process id,父級進程id號

C:表示的cpu的使用狀況

STIME:start time,啓動時間

TTY:終端的設備編號,「?」表示該進程不是由終端發起的

TIME:持續運行的時間

CMD:command,顯示進程的名稱或者位置

 

補充:結束進程的指令

#kill PID

六、service指令

做用:操做服務的(啓動/中止/重啓)

語法:#service 服務名 start/stop/restart

 

案例:使用service指令啓動apache(httpd)

#service httpd start

 

 

注意:對於服務名是存在要求的,要求服務名必須存在於「/etc/init.d」目錄下。

 

除了能夠用service指令操做服務,還能夠經過以下語法:

#/etc/init.d/服務名 start/stop/restart

因此剛纔apache的啓動指令還能夠寫成:#/etc/init.d/httpd start

 

七、grep指令(重點)

做用:搜索、過濾,主要用於對文件/內容進行篩選,選出須要的內容

語法:#grep [選項] 關鍵詞 文件路徑/內容

常見的選項:

                  -v:排除

案例:使用grep篩選出php2018.txt中的admin

 

 

案例:使用grep -v實現排除admin所在行

 

 

擴展用法:

#grep -E 「關鍵詞1|關鍵詞2|…」 文件路徑或內容

         選項:-E表示extension,該語法表示多條件篩選,「|」表示or

 

上述擴展用法等價於:

#egrep 「關鍵詞1|關鍵詞2|….」 文件的內容或路徑

八、wc指令

做用:word count,其做用是用於統計文件的各項數值(行、單詞數、字節數)

語法:#wc -lwc 文檔的路徑

選項含義:

                  -l:line,行數

                  -w:word,單詞數

                  -c:byte,字節數

 

案例:使用wc指令分別統計文件/etc/passwd的行、單詞數、字節數

#wc -lwc /etc/passwd

 

 

注意:lwc選項的順序,不影響其指令輸出的結果的順序,結果順序必定是行 單詞 、字節。

 

九、管道(重點)

管道嚴格意義上說其不是指令,其只是一個符號「|」。該符號主要起到輔助的做用,可以將多個指令合在一行上進行操做。主要用在搜索過濾等上面。

 

語法:# 必須在終端中有輸出內容的指令 | 有輸入的指令[要求有讀取文件內容的需求]

 

管道的核心理解概念:管道前面的指令的輸出其實就是管道後面指令的輸入

 

案例:經過ps指令查看進程,只查看httpd的進程。

#ps -ef | grep 「httpd」

 

 

課堂做業:

「/etc/passwd」文件是存儲用戶信息的文件,該文件中一行即爲一個用戶,要求使用所學的指令統計出當前計算機中一共有多少個用戶。

#cat /etc/passwd | wc -l

 

2、vim編輯器

一、vi介紹

Vi編輯器是全部Unix及Linux系統下標準的編輯器,相似於windows系統下的notepad(記事本)編輯器,因爲在Unix及Linux系統的任何版本,Vi編輯器是徹底相同的,所以能夠在其餘任何介紹vi的地方都能進一步瞭解它,Vi也是Linux中最基本的文本編輯器,學會它後,咱們將在Linux的世界裏暢行無阻,尤爲是在終端中

 

關於vim:

vi和vim都是Linux中的編輯器,不一樣的是,vim比較高級,能夠視爲vi的升級版本。vi使用於文本編輯,可是vim更適用於coding(寫代碼的)。

 

Vim重點是光標的移動,模式切換,刪除,查找,替換,複製,粘貼,撤銷命令的使用

 

在後期使用的Linux系統中,有些可能沒有初始自帶vim,而自帶了vi,那麼vim指令是不能直接使用的,須要先安裝。

二、三種模式

Vim中存在三種模式(大衆的認知):命令模式、編輯模式(輸入模式)、末行模式(尾行模式)

 

命令模式:在該模式下是不能對文件直接編輯,能夠輸入快捷鍵(命令)進行一些操做(刪除行,複製行,移動光標,粘貼等等)【打開文件以後默認進入的模式】;

編輯模式:在該模式下能夠對文件的內容進行編輯;

末行模式:能夠在末行輸入命令來對文件進行操做(搜索、替換、保存、退出、撤銷、高亮等等);

 

Vim的打開文件的方式:

#vim 文件路徑                                         做用:打開指定的文件(能夠是不存在的)

#vim  +數字  文件的路徑                   做用:打開指定的文件,而且將光標移動到指定行

#vim  +/關鍵詞  文件的路徑             做用:打開指定的文件,而且高亮顯示關鍵詞(搜索)

 

重點:先複製出一個/etc/passwd文件,複製當前目錄下(千萬不要在etc下直接修改!!!

 

2.一、命令模式

注意:該模式是打開文件的第一個看到的模式(打開文件便可進入)

2.1.一、光標移動

①光標移動到行首

按鍵:shift + 6 或 ^(T字母上面的6,不要按小鍵盤的6)

 

②光標移動到行尾

按鍵:shift + 4 或 $(R字母的左上角的4,不是小鍵盤的4)

 

③光標移動到首行行首

按鍵:gg

 

④光標移動到末行行首

按鍵:G                   [Capslk 再加 G鍵] / [Shift + G鍵]

 

⑤翻屏

向上翻屏:按鍵ctrl + b   (before)      或            PgUp

向下翻屏:按鍵ctrl + f           (after)           或             PgDn

 

⑥快速定位到指定行

數字G

2.1.二、複製操做

①複製光標所在行

按鍵:yy

粘貼:在想要粘貼的地方按下p鍵【將粘貼在光標所在行的下一行】,若是想粘貼在光標所在行以前,則使用P

 

②以光標所在行爲準(包含當前行),向下複製指定的行數

按鍵:數字yy

 

 

2.1.三、剪切/刪除

①剪切/刪除光標所在行

按鍵:dd                          (刪除以後下一行上移)

注意:dd嚴格意義上說是剪切命令,可是若是剪切了不粘貼就是刪除的效果。

 

②剪切/刪除光標所在行爲準(包含當前行),向下刪除/剪切指定的行

按鍵:數字dd                (刪除以後下一行上移)

 

③剪切/刪除光標所在的當前行(光標所在位置)以後的內容,可是刪除以後下一行不上移

按鍵:D                            (刪除以後當前行會變成空白行)

2.1.四、撤銷/恢復

撤銷:輸入「:u」(不屬於命令模式)  或者   u                   (undo)

恢復:ctrl + r                   恢復(取消)以前的撤銷操做【重作,redo】

 

 

2.二、模式間的切換

 

末行模式進入以後的特徵:光標在最後一行上

編輯模式進入以後的特徵:在最後一行有相似於「------插入(insert)-----」的提

 

注意:末行模式和編輯模式之間是沒有辦法直接切換的,必須先走命令模式。

 

2.三、末行模式

進入方式:由命令模式進入,按下「:」或者「/(表示查找)」便可進入

退出方式:

                  a. 按下esc

                  b. 連按2次esc鍵

                  c. 刪除末行所有輸入字符     

 

①保存操做(write

輸入:「:w」                                    保存文件

輸入:「:w  路徑」               另存爲 (瞭解)

 

②退出(quit

輸入:「:q」                              退出文件

默認狀況下,退出的時候須要對已經進行修改的文件進行保存(:w),而後才能退出。

 

③保存並退出

輸入:「:wq」                                   保存而且退出

 

④強制 (!)  

輸入:「:q!」                            表示強制退出,剛纔作的修改操做不作保存

 

⑤搜索/查找

輸入:「/關鍵詞」,再按下回車                  【按下/也是進入末行模式的方式之一】

例如:想在passwd文件中搜索「sbin」關鍵詞

 

在搜索結果中切換上/下一個結果:N/n                (next

若是須要取消高亮,則須要在末行模式中輸入:「:nohl」【no highlight】

 

⑥替換

:s/搜索的關鍵詞/新的內容                            替換光標所在行的第一處符合條件的內容

:s/搜索的關鍵詞/新的內容/g                        替換光標所在行的所有符合條件的內容

:%s/搜索的關鍵詞/新的內容                         替換整個文檔中每行第一個符合條件的內容

:%s/搜索的關鍵詞/新的內容/g                     替換整個文檔的符合條件的內容

 

%表示整個文件

g表示全局(global)

 

案例:將測試文件中的bin關鍵詞所有替換成xxxx

:%s/bin/xxxx/g

 

⑦顯示行號(臨時)

輸入:「:set nu」[number]

若是想取消顯示,則輸入:「:set nonu」

 

補充:要想永久顯示行號,須要進行對vim的配置。

建議建立文件:「~/.vimrc」(該配置是針對用戶的,每一個用戶本身家下有一個獨立.vimrc)

 

 

⑧擴展:部分命令模式操做使用末行模式實現

 

瞭解:

末行模式下的複製(yy)、剪切(dd)、刪除(dd)操做

複製語法:「:開始行號,結束行號y」,例如輸入「:1,10y」

剪切刪除語法:「:開始行號,結束行號d」,例如輸入「:1,10d」

 

一步到位的複製語法——「:開始行號,結束行號 co 粘貼到的行號」

剪切粘貼一步到位語法——「:開始行號,結束行號 m 粘貼到的行號」

 

 

2.四、編輯模式

 

重點看前2個進入方式:i(insert)、a(after)。

退出方式:按下esc鍵

 

三、vim其餘   

3.一、異常退出

什麼是異常退出:在編輯文件以後並無正常的去wq(保存退出),而是遇到忽然關閉終端或者斷電的狀況,則會顯示下面的效果,這個狀況稱之爲異常退出:  

 

 

 

 

解決辦法:刪除「.文件名.swp」文件便可解決上述問題。

3、用戶與用戶組(重點)

Linux系統是一個多用戶多任務的操做系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個帳號,而後以這個帳號的身份進入系統。

用戶的帳號一方面能夠幫助系統管理員對使用系統的用戶進行跟蹤,並控制他們對系統資源的訪問;另外一方面也能夠幫助用戶組織文件,併爲用戶提供安全性保護。

每一個用戶帳號都擁有一個惟一的用戶名和各自的密碼。

用戶在登陸時鍵入正確的用戶名和密碼後,就可以進入系統和本身的主目錄。

要想實現用戶帳號的管理,要完成的工做主要有以下幾個方面:

用戶帳號的添加、刪除、修改以及用戶密碼的管理。

用戶組的管理。

 

注意三個文件:

/etc/passwd                               存儲用戶的關鍵信息

/etc/group                                 存儲用戶組的關鍵信息

/etc/shadow                              存儲用戶的密碼信息

一、用戶管理

①添加用戶

語法:#useradd 選項 用戶名

經常使用選項:

         -g:表示指定用戶的用戶主(主要)組,選項的值能夠是用戶組的id,也能夠是組名

         -G:表示指定用戶的用戶附加(額外)組,選項的值能夠是用戶組的id,也能夠是組名

         -u:uid,用戶的id(用戶的標識符),系統默認會從500以後按順序分配uid,若是不想使用系統分配的,能夠經過該選項自定義【相似於騰訊QQ的自選靚號狀況】

         -c:comment,添加註釋(選擇是否添加)

         -s:指定用戶登入後所使用的shell 解釋器 【專門的接待員】

         -d:指定用戶登入時的啓始目錄(家目錄位置)

         -n:取消創建以用戶名稱爲名的羣組(瞭解)

 

案例:建立用戶zhangsan,不帶任何選項

#useradd zhangsan

 

驗證是否成功:

         a. 驗證/etc/passwd的最後一行,查看是否有zhangsan的信息;

         #tail -1 /etc/passwd

         b. 驗證是否存在家目錄(在Centos下建立好用戶以後隨之產生一個同名家目錄);

 

擴展:認識passwd文件

 

用戶名:密碼:用戶ID:用戶組ID:註釋:家目錄:解釋器shell

用戶名:建立新用戶名稱,後期登陸的時候須要輸入;

密碼:此密碼位置通常狀況都是「x」,表示密碼的佔位;

用戶ID:用戶的識別符;【-u】

用戶組ID:該用戶所屬的主組ID;【-g】

註釋:解釋該用戶是作什麼用的;【-c】

家目錄:用戶登陸進入系統以後默認的位置;【-d】

解釋器shell:等待用戶進入系統以後,用戶輸入指令以後,該解釋器會收集用戶輸入的指令,傳遞給內核處理;【若是解釋器是/bin/bash表示用戶能夠登陸到系統,/sbin/nologin表示該用戶不能登陸到系統】【-s】

 

注意:在不添加選項的時候,執行useradd以後會執行一系列的操做

         a. 建立同名的家目錄;

         b. 建立同名的用戶組;

 

案例:添加選項,建立用戶lisi,讓lisi屬於501主組,附加組500,自選靚號666,而且要求不能登陸到系統,能夠寫註釋爲「user lisi」。

#useradd -g 501 -G 500 -u 666 -s /sbin/nologin -c 「user lisi」 lisi

 

驗證是否建立成功:

 

 

注意:查看用戶的主組能夠查看passwd文件,查看附加組能夠查看group文件。

 

 

 

linux123行的含義:在linux123的組裏(組id是500)有一個組內用戶lisi(lisi的附加組就是500,附加組的名字是linux123)。

若是須要爲一個用戶指定多個附加組,只須要將多個附件組的id經過英文逗號「,」分割便可。

 

【主組只能有1個(相似於親生父母只有一對),附加組能夠多個,也能夠沒有附加組(相似於認乾爹乾媽,能夠有也能夠沒有,也能夠有多個)】

【主組必須有】

【文檔的屬組指的是主組】

 

②修改用戶

語法:#usermod 選項 用戶名

Usermod:user modify,用戶修改

經常使用選項:

         -g:表示指定用戶的用戶主組,選項的值能夠是用戶組的id,也能夠是組名

         -G:表示指定用戶的用戶附加組,選項的值能夠是用戶組的id,也能夠是組名

         -u:uid,用戶的id(用戶的標識符),系統默認會從500以後按順序分配uid,若是不想使用系統分配的,能夠經過該選項自定義【相似於騰訊QQ的自選靚號狀況】

         -l:修改用戶名

         -c<備註>:修改用戶賬號的備註文字

-d<登入目錄>:修改用戶登入時的目錄

-s<shell>:修改用戶登入後所使用的shell

 

案例:修改zhangsan用戶主組爲500,附加組改成501

#usermod -g 500 -G 501 zhangsan

 

案例:修改zhangsan用戶用戶名,改成wangerma

#usermod -l wangerma zhangsan 這裏的豎槓是   英文字母 l

 

③設置密碼

Linux不容許沒有密碼的用戶登陸到系統,所以前面建立的用戶目前都處於鎖定狀態,須要設置密碼以後才能登陸計算機。

 

語法:#passwd [用戶名]             【若是不指定用戶名則修改本身的密碼】

案例:設置wangerma用戶的密碼

#passwd wangerma

 

在設置密碼的時候也是沒有任何輸入提示的,放心輸入,確保兩次輸入的密碼一致,按下回車便可。

 

也可使用弱密碼,可是不建議,不然會看到如下的提示:

 

 

設置密碼以後shadow文件中的體現:可以看出lisi用戶沒有密碼的。

 

 

在設置用戶密碼以後能夠登陸賬號,例如此處須要登陸wangerma

切換用戶命令:#su [用戶名]   (switch user)

若是用戶名不指定則表示切換到root用戶。

 

切換用戶須要注意的事項:

       a. 從root往普通用戶切換不須要密碼,可是反之則須要root密碼;

       b. 切換用戶以後先後的工做路徑是不變的;

       c. 普通用戶沒有辦法訪問root用戶家目錄,可是反之則能夠;

 

④刪除用戶

語法:#userdel 選項 用戶名

Userdel:user delete(用戶刪除)

經常使用選項:

         -r:表示刪除用戶的同時,刪除其家目錄;

案例:刪除wangerma用戶

#userdel -r wangerma

 

 

注意:已經登陸的wangerma用戶刪除的時候提示刪除失敗,可是沒有登陸的lisi用戶能夠正常刪除

 

解決辦法:簡單粗暴,kill對應用戶的所有進程

 

 

提示:全部跟用戶操做的命令(除passwd外,只能修改本身的密碼,即不指定用戶名)只有root超級管理員有權限執行。

 

備註:也能夠在登陸須要刪除的用戶以後,按下快捷鍵「ctrl+d」進行對當前用戶的註銷,隨後退回到上一個用戶(root)此時就能夠對須要刪除的用戶進行刪除操做。

 

二、用戶組管理

每一個用戶都有一個用戶組,系統能夠對一個用戶組中的全部用戶進行集中管理。不一樣Linux 系統對用戶組的規定有所不一樣,如Linux下的用戶屬於與它同名的用戶組,這個用戶組在建立用戶時同時建立

用戶組的管理涉及用戶組的添加、刪除和修改。組的增長、刪除和修改實際上就是對/etc/group文件的更新。

 

文件結構:

用戶組名:密碼:用戶組ID:組內用戶名

密碼:X表示佔位符,雖然用戶組能夠設置密碼,可是絕大部分的狀況下不設置密碼;

組內用戶名:表示附加組是該組的用戶名稱;

 

①用戶組添加

語法:#groupadd 選項 用戶組名

經常使用選項:

         -g:相似用戶添加里的「-u」,-g表示選擇本身設置一個自定義的用戶組ID數字,若是本身不指定,則默認從500以後遞增;

 

案例:使用groupadd指令建立一個新的用戶組,命名爲admins

#groupadd admins

 

②用戶組編輯

語法:#groupmod 選項 用戶組名

經常使用選項:

         -g:相似用戶修改裏的「-u」,-g表示選擇本身設置一個自定義的用戶組ID數字

         -n:相似於用戶修改「-l」,表示設置新的用戶組的名稱

案例:修改admins用戶組,將組ID改爲520,將名稱改成admin123

#groupmod -g 520 -n admin123 admins

 

③用戶組刪除

語法:#groupdel 用戶組名

 

案例:刪除admin組

#groupdel admin

 

 

注意:當若是須要刪除一個組,可是這個組是某個用戶的主組時,則不容許刪除(附加組是能夠的);若是確實須要刪除,則先從組內移出全部用戶。

 

 

提示

針對用戶和用戶組的管理指令,除了passwd指令以外,其餘指令通常狀況下只有root用戶能夠執行。

4、權限管理

一、權限介紹(重點)

在Linux中分別有讀、寫、執行權限:

讀權限:

       對於文件夾來講,讀權限影響用戶是否可以列出目錄結構

       對於文件來講,讀權限影響用戶是否能夠查看文件內容

 

寫權限:

       對文件夾來講,寫權限影響用戶是否能夠在文件夾下「建立/刪除/複製到/移動到」文檔

       對於文件來講,寫權限影響用戶是否能夠編輯文件內容

 

執行權限:

       通常都是對於文件來講,特別腳本文件。

       對於文件來講,執行權限影響文件是否能夠運行。

       對於文件夾來講,執行權限影響對應的用戶是否能夠在文件夾內執行指令。

 

二、身份介紹(重點)

Owner身份(文件全部者,默認爲文檔的建立者)

因爲Linux是多用戶、多任務的操做系統,所以可能經常有多人同時在某臺主機上工做,但每一個人都可在主機上設置文件的權限,讓其成爲我的的「私密文件」,即我的全部者。由於設置了適當的文件權限,除本人(文件全部者)以外的用戶沒法查看文件內容。

 

例如某個MM給你發了一封Email情書,你將情書轉爲文件以後存檔在本身的主文件夾中。爲了避免讓別人看到情書的內容,你就能利用全部者的身份去設置文件的適當權限,這樣,即便你的情敵想偷看你的情書內容也是作不到的。

Group身份(與文件全部者同組的用戶)

與文件全部者同組最有用的功能就體如今多個團隊在同一臺主機上開發資源的時候。例如主機上有A、B兩個團體(用戶組),A中有a1,a2,a3三個成員,B中有b1,b2兩個成員,這兩個團體要共同完成一份報告F。因爲設置了適當的權限,A、B團體中的成員都能互相修改對方的數據,可是團體C的成員則不能修改F的內容,甚至連查看的權限都沒有。同時,團體的成員也能設置本身的私密文件,讓團隊的其它成員也讀取不了文件數據。Linux中,每一個帳戶支持多個用戶組。如用戶a1、b1便可屬於A用戶組,也能屬於B用戶組【主組和附加組】

Others身份(其餘人,相對於全部者與同組用戶)

這個是個相對概念。打個比方,大明、二明、小明一家三兄弟住在一間房,房產證上的登記者是大明(owner全部者),那麼,大明一家就是一個用戶組,這個組有大明、二明、小明三個成員;另外有我的叫張三,和他們三沒有關係,那麼這個張三就是其餘人(others)了。

同時,大明、二明、小明有各自的房間,三者雖然能自由進出各自的房間,可是小明不能讓大明看到本身的情書、日記等,這就是文件全部者(用戶)的意義。

Root用戶(超級用戶)

在Linux中,還有一個神同樣存在的用戶,這就是root用戶,由於在全部用戶中它擁有最大的權限 ,因此管理着普通用戶。所以之後在設置文檔的權限的時候沒必要考慮root用戶。

 

三、Linux的權限查看

要設置權限,就須要知道文件的一些基本屬性和權限的分配規則。在Linux中,ls命令經常使用來查看文檔的屬性,用於顯示文件的文件名和相關屬性。

#ls -l 路徑          【ls -l  等價於 ll】

 

標紅的部分就是Linux的文檔權限屬性信息。

Linux中存在用戶(owner)、用戶組(group)和其餘人(others)概念,各自有不一樣的權限,對於一個文檔來講,其權限具體分配以下:

 

十位字符表示含義:

第1位:表示文檔類型,取值常見的有「d表示文件夾」、「-表示文件」、「l表示軟鏈接」、「s表示套接字」、「c表示字符設備」、「b表示塊狀設備」等等;

第2-4位:表示文檔全部者的權限狀況,第2位表示讀權限的狀況,取值有r、-;第3位表示寫權限的狀況,w表示可寫,-表示不可寫,第4位表示執行權限的狀況,取值有x、-。

第5-7位:表示與全部者同在一個組的用戶的權限狀況,第5位表示讀權限的狀況,取值有r、-;第6位表示寫權限的狀況,w表示可寫,-表示不可寫,第7位表示執行權限的狀況,取值有x、-。

第8-10位:表示除了上面的前2部分的用戶以外的其餘用戶的權限狀況,第8位表示讀權限的狀況,取值有r、-;第9位表示寫權限的狀況,w表示可寫,-表示不可寫,第10位表示執行權限的狀況,取值有x、-。

 

注意:除了權限位上的rwx以及-以外,還有一些特殊的權限代碼「s」、「t」,這些不在本次考慮範圍內。

 

權限分配中,均是rwx的三個參數組合,且位置順序不會變化。沒有對應權限就用 – 代替。

 

四、權限設置(重點)

語法:#chmod [選項] 權限模式 文檔

注意事項:

         經常使用選項:

                           -R:遞歸設置權限        (當文檔類型爲文件夾的時候)

         權限模式:就是該文檔須要設置的權限信息

         文檔:能夠是文件,也能夠是文件夾,能夠是相對路徑也能夠是絕對路徑。

注意點:若是想要給文檔設置權限,操做者要麼是root用戶,要麼就是文檔的全部者。

4.一、字母形式

 

 

給誰設置:

         u:表示全部者身份owner(user)

         g:表示給全部者同組用戶設置(group)

         o:表示others,給其餘用戶設置權限

         a:表示all,給全部人(包含ugo部分)設置權限

                  若是在設置權限的時候不指定給誰設置,則默認給全部用戶設置

 

權限字符:

         r:讀

         w:寫

         x:表示執行

         -:表示沒有權限

 

權限分配方式:

         +:表示給具體的用戶新增權限(相對當前)

         -:表示刪除用戶的權限(相對當前)

         =:表示將權限設置成具體的值(注重結果)【賦值】

 

設置多個身份的權限時候,每一個身份之間須要經過英文逗號分開。

 

例如:須要給/root/anaconda-ks.cfg文件(-rw-------.)設置權限,要求全部者擁有所有的權限,同組用戶擁有讀和寫權限,其餘用戶只讀權限。

答案:

         全部者(u):rwx

         同組用戶(g):rw

         其餘用戶(o):r

方式1:

#chmod u=rwx,g=rw,o=r /root/anaconda-ks.cfg

方式2:

#chmod u+x,g+rw,o+r /root/anaconda-ks.cfg

 

 

提示:當文檔擁有執行權限(任意部分),則其顏色在終端中是綠色。

 

#chmod ug=rwx  形式,若是有兩部分權限同樣則能夠合在一塊兒寫的

等價於:

       #chmod u=rwx,g=rwx

 

例如:若是anaconda-ks.cfg文件什麼權限都沒有,可使用root用戶設置全部的人都有執行權限,則能夠寫成

什麼權限都沒有應該是:----------

目標的效果:---x--x--x

#chmod a=x anaconda-ks.cfg

#chmod a+x anaconda-ks.cfg

#chmod u+x,g+x,o+x anaconda-ks.cfg

#chmod ugo=x anaconda-ks.cfg

#chmod ugo+x anaconda-ks.cfg

#chmod +x anaconda-ks.cfg

 

 

案例:設置文件「~/yunwei/yunwei.txt」權限,要求全部者所有權限,同組用戶擁有讀權限、寫權限,其餘人擁有讀權限

#chmod u=rwx,g=rw,o=r ~/yunwei/yunwei.txt

 

更改要求:全部者所有權限,同組用戶擁有讀權限、寫權限,其餘人擁有讀權限、寫權限

 

 

練習:

         ①設置文件夾/tmp/yunwei的權限(若是文件夾不存在,自行建立),要求權限爲遞歸權限,而且全部者有所有權限,同組用戶有讀執行權限,其餘用戶只讀權限;

 

         ②設置文件/tmp/yunwei/class04.sh權限,文件若是不存在則自行建立,要求權限爲全部者所有權限,同組用戶讀和執行權限,其餘用戶沒有權限;

 

         ③使用普通用戶在/tmp/yunwei目錄下建立test目錄,設置目錄權限爲全部者擁有所有權限,同組用戶只讀,其餘用戶只讀;

        

4.二、數字形式

常常會在一些技術性的網頁上看到相似於#chmod  777  a.txt  這樣的一個權限,這種形式稱之爲數字形式權限(777)。

 

讀:r        4

寫:w              2

執行:x          1

沒有任何權限(-):0

 

 

例如:須要給anaconda-ks.cfg設置權限,權限要求全部者擁有所有權限,同組用戶擁有讀執行權限,其餘用戶只讀。

分析:

         全部者:所有權限 = + + 執行 = 4 + 2 + 1 = 7

         同組用戶:讀執行權限 = + 執行 = 4 + 1 = 5

         其餘用戶:只讀權限 = = 4 

 

最終得出的結果是754

#chmod 754 anaconda-ks.cfg

 

面試題:用超級管理員設置文檔的權限命令是#chmod -R 731 aaa,請問這個命令有沒有什麼不合理的地方?

全部者 = 7 = 4 + 2 + 1 = 讀 + 寫 + 執行

同組用戶 = 3 = 2 + 1 = 寫 + 執行

其餘用戶 = 1 = 執行

問題在權限731中3表示寫+執行權限,可是寫又沒必要鬚鬚要能打開以後才能夠寫,所以必須須要具有讀權限,所以權限不合理。之後建議各位在設置權限的時候不要設置這種「奇葩權限」。單獨出現二、3的權限數字通常都是有問題的權限

 

注意:在寫權限的時候千萬不要設置相似於上面的這種「奇葩權限」。若是一個權限數字中但凡出現2與3的數字,則該權限有不合理的狀況。

 

練習:

         ①使用root用戶設置文件夾/root/20180811的權限爲:全部者所有權限,同組用戶擁有讀和執行權限,其餘用戶沒有權限,請使用數字權限的形式設置,寫出指令;750

         ②請使用root用戶寫出設置文件/root/20180811.txt文件的權限,權限要求爲:全部者擁有所有權限,同組用戶要求能夠讀寫,其餘用戶只讀,要求使用數字形式;764

         ③張三瘋(root)收到某個MM的情書,請使用數字形式設置張三瘋的Email情書權限(文件爲/root/email.doc),權限要求只有全部者能夠讀寫,除此以外任何人沒有權限;600

4.三、注意事項

使用root用戶建立一個文件夾(/oo),權限默認,權限以下:

 

須要在oo目錄下建立文件(oo/xx.txt),須要給777權限:

 

 

擴展:

       在Linux系統中,建立文檔的權限有一個默認值,以當前的系統爲例,其建立文件夾以後的默認權限是755,建立文件以後的權限是644。

       之因此會這樣是受到了系統中umask(掩碼)的值的影響,其是用於指定文檔建立好以後的權限,umask默認爲022。

       計算方式:

              對於文件:文件的權限 = 666 – umask掩碼

              對於文件夾:文件夾的權限 = 777 - umask掩碼

切換到linux123用戶(不是文檔全部者,也不是同組用戶,屬於other部分):

 

問題1:linux123用戶是否能夠打開oo/xx.txt文件?

問題2:linux123用戶是否能夠編輯oo/xx.txt文件?

問題3:linux123用戶是否能夠刪除oo/xx.txt文件?

 

Linux中,若是要刪除一個文件,不是看文件有沒有對應的權限,而是看文件所在的目錄是否有寫權限,若是有才能夠刪除

 

五、屬主與屬組

屬主:所屬的用戶(文件的主人),文檔全部者

屬組:所屬的用戶組(同組用戶的組名稱)

 

前面的那個root就是屬主

後面的那個root就是屬組

 

這兩項信息在文檔建立的時候會使用建立者的信息(用戶名、用戶所屬的主組名稱)。

 

之因此須要設置這個:若是有時候去刪除某個用戶,則該用戶對應的文檔的屬主和屬組信息就須要去修改(相似離職以前的工做交接)。

5.一、chown(重點)

做用:更改文檔的所屬用戶(change owner

語法:#chown  [-R]  新的username 文檔路徑

 

案例:將先前設置的/oo目錄的全部者設置成成linux123

#chown -R linux123 /oo

 

 

 

5.二、chgrp(瞭解)

做用:更改文檔的所屬用戶組(change group

語法:#chgrp  [-R]  groupname  文檔的路徑

案例:將剛纔oo目錄的全部用戶組名改成linux123

#chgrp -R linux123 /oo

 

 

 

 

 

思考,如何經過一個命令實現既能夠更改所屬的用戶,也能夠修改所屬的用戶組呢?

答:能夠實現的,經過chown命令

       語法:#chown  [-R]  username:groupname   文檔路徑

 

案例:將剛纔oo的文檔的所屬組所屬用戶修改成root

#chown -R root:root /oo

 

 

問題:zhangsan用戶使用本身的賬號建立文件index.html,而且當時默認的權限是644,後續管理員root將該文件的屬主改爲了lisi,屬組改爲lisi,則zhangsan對文件的操做權限有變化嗎?若是有權限是多少?

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息