Linux以安全性和穩定性在世界上自居,在Linux發明之初就在安全領域作了不少手段,其中最簡單就是提供了密碼的登陸和密碼修改的功能,在Linux系統當中不管什麼用戶都必須具備密碼才能登陸Linux操做系統.php
命令格式: passwd [用戶名]mysql
命令做用:更新或者設置用戶登陸的密碼linux
緣由在大部分的人安裝Linux的時候,不少人沒有設置裝載引導的密碼,因此就致使黑客能夠利用這個漏洞來破解超級用戶的密碼.nginx
單用戶模式在Linux當中是用於維護操做系統的一個模式,就至關於windows當中的安全模式,這個單用戶模式在沒有設置裝載密碼狀況下是能夠隨意的切換到密碼的修改狀態當中的,因此這個過程是很是的危險的,破解root密碼只有有如下步驟就能夠完成:c++
第1步:暴力關機(拔掉電源)算法
第2步:從新開機sql
第3步:在系統啓動的倒數頁面當中回車數據庫
第4步:出現如下界面的時候apache
第5步:出現如下界面的時候vim
第6步:在如下界面當中輸入1 fastboot切換到單用戶模式的登陸選擇界面
回車便可
第7步:在如下界面中輸入b,切換到命令界面當中
切換成功後,會出現單用戶模式的命令界面以下:
第8步:使用passwd命令破解root的密碼,出現update successfully就證實破解成功
破解成功後,立刻重啓linux操做系統
重啓成功就可使用單用戶模式中修改root密碼從新成功登陸linux操做系統了,這個就是黑客破解root密碼的通常手段,這個手段的危害顯而易見,所以咱們須要屏蔽這個黑客的攻擊,咱們應該怎麼作呢?若是但願屏蔽這個攻擊,那麼咱們就須要修改/etc目錄下的grub.conf文件來設置Linux啓動裝載密碼.
在Linux當中Linux只要一啓動那麼首先就會去需找grub.conf文件,用來啓動Linux時加載相關的啓動配置,其中包括倒數啓動,包括標題,包括用戶裝載密碼等等,因此在安全領域當中咱們安裝一臺Linux的服務器就應該爲grub.conf文件設置一個裝載密碼.
使用vim打開/etc/grub.conf文件,內容以下:
第10行:表明當前操做系統的id,默認爲0
第11行:timeout就是系統啓動時倒數時間,默認的狀況下,系統啓動須要5秒鐘
第12行:Linux圖形操做界面的相關素材和背景素材的文件
第13行:隱藏式菜單設置,通常咱們不多會使用
第14行:設置啓動Linux操做系統時候的相關歡迎信息,通常也不多會修改
第15-17行:Linux相關的配置信息,通常咱們不作源碼研究無需理會
可是這文件默認的狀況下少一個很是重要的選項是password選項,password用於設置單用戶模式的裝載引導密碼,只有知道這個密碼才能切換到單用戶模式,因此咱們須要加入當前這個選項
命令格式:grub-md5-crypt
命令做用:用於生成linux的裝載引導密碼的Md5加密形式
執行效果以下:
獲取了123456的裝載密碼後,咱們通常須要複製當前密碼來使用
第1步:打開/etc/grub.conf文件,在hiddenmeun和title之間插入一個空行,按下vim中的小寫o
第2步:在新起的行中插入如下內容,就能夠設置了裝載密碼
保存並退出(:x)
第3步:重啓Linux操做系統,使用reboot命令
第4步:出現如下界面時,提示以下:
第5步:輸入裝載密碼
第6步:若是可以成功切換到單用戶模式的編輯界面,那麼就證實密碼設置成功
其實在linux存在多種操做界面,常見的有圖形操做界面也有字符操做界面(黑窗口),這麼的操做界面像阿里雲默認通常會給字符操做界面給你管理,這時就會有一個這樣的問題了,阿里雲的Linux爲何在啓動的時候會選擇字符操做而不是圖形界面,而咱們的虛擬機在啓動的時候選擇是圖形操做界面而不是字符操做界面呢?
緣由是Linux其實有一個核心的文件叫inittab文件,這個文件是用於linux啓動的時候選擇用戶的登陸操做界面的文件,該文件位於/etc目錄下,使用vim打開inittab文件
內容以下:
第18行: 表明Linux關機模式,代號爲0,若是把linux設置成爲該模式,那麼linux將沒法啓動,由於一啓動就關機,因此咱們不能設置該模式.
第19行:表明Linux單用戶模式,代號爲1,若是設置爲該模式,Linux一啓動就會進入單用戶模式,通常用於系統維護比較多,但這個選項通常是運維人員會使用,可是php開發者使用的概率比較低.
第20行:多用戶的字符操做界面,代號爲2,但這個模式沒有NFS的網絡配置,所以該模式不可以鏈接互聯網,因此通常人不多使用這個模式,這個是一個歷史遺留的問題,由於之前沒有今天的互聯網時代,因此在20年前纔會有人使用
第21行:功能齊全的多用戶多任務的字符操做界面,通常真實的服務器(如:阿里雲)就會使用這個模式,這個模式代碼爲3,開發中咱們使用這個模式佔據了99%的可能性
第22行:自定義的Linux模式,通常使用C語言或者C++語言開發Linux內核人員都會使用該模式,該模式的代號爲4,這個模式除非你具有很是強悍的Linux源碼技術,不然很難使用,通常php開發者儘可能不要接觸.
第23行:Linux圖形操做界面模式,其代號爲5,通常在咱們學習和使用虛擬機的時候這個模式使用得很是普遍,在公司的內部服務器當中不少運維人員爲了方便也會設置該模式,在現實開發當中,這個模式使用的概率也很高.
第24行:Linux重啓模式,這個模式一旦設置,Linux開機就會重啓,因此不能設置這個模式,不然Linux一樣沒法啓動,其代號爲6
第26行:表明當前操做系統的設置模式爲5,也就是圖形操做界面模式,所以Linux啓動的時候就會使用圖形操做界面進行用戶的登陸,而阿里雲設置該模式爲3因此啓動的時候就會以齊全功能的字符操做界面模式讓你管理阿里雲服務器.
從以上文件分析可知,Linux一共存在7中模式,咱們做爲php開發者只須要使用3和5這兩種模式就夠了,然而0和6現今的互聯社會是沒有人使用的,但爲何又會存在0和6這兩種模式呢?0和6其實最先是在軍事當中使用,今題使用0和6的應用只有單片機和電子產業,互聯網是不會使用的.
若是咱們但願把虛擬機設置爲黑窗口(字符操做)的登陸界面,咱們應該怎麼作呢?
修改/etc/inittab文件,以下:
保存並退出(:x),而後重啓linux操做系統,設置成功就會出現如下界面:
若是登陸成功後,會出現如下界面,默認的狀況下字符操做界面會讓用戶處於宿主目錄的位置當中:
而且字符界面太支持中文的顯示,由於Linux默認的狀況下建議使用英文字符
這個系統很是的安全,也很是的傑出,使得今天航天航空科技可使用Linux操做系統,可是對於php開發者來講,就是一種悲哀,由於selinux安全過頭了,它會阻礙用戶鏈接mysql數據庫和阻礙用戶鏈接sphinx全文索引等軟件,由於若是你但願把linux運用在php開發當中,那麼咱們就須要關閉selinux的子安全系統,其配置配置位於/etc/selinux目錄當中,使用vim打開/etc/selinux/conf文件
內容以下所示:
這時若是你有阿里雲服務器,你能夠看看阿里雲服務器默認是關閉仍是開啓的,默認是關閉的
所以咱們也能夠學習阿里雲服務器同樣,關閉虛擬機中的selinux,/etc/selinux/conf內容修改以下:
保存退出(:x),若是修改了selinux你不重啓linux操做系統是不會生效的,所以記住,修改完成必須立刻重啓linux,只要關閉子安全系統,你後面的lamp配置工做就可以順利完成.
第1步:假設咱們對當前的狀態很是滿意,那麼咱們就能夠對Linux當前狀態進行拍攝
第2步:對快照進行一個詳細的描述便於往後的參考
若是拍攝快照成功,那麼在快照管理當中就會出現當前的快照狀態,以下圖所示:
第3步:假設你當前繼續工做,生成了一個bad.txt的文件在桌面當中而這個操做假設你不臺滿意或者是開發當中作錯的某些配置工做,那麼咱們就可使用快照進行狀態轉回工做,步驟以下:
而後在如下界面選擇肯定:
點擊後就會返回到一個你快照滿意的狀態
Linux是一個多任務多用戶的操做系統,在Linux當中使用組文件和用戶文件對用戶進行管理,不少軟件的安裝都必需要有對應的用戶和用戶組,不然軟件沒法啓動,例如:mysql和nginx,apache等軟件.
① /etc/group (用戶的組文件,很是重要)
②/etc/gshadown(用戶的組密碼文件,被棄用了,瞭解便可,通常不會使用)
①/etc/passwd文件(這個文件不是用來存儲用戶密碼而拿來存儲用戶的信息)
②/etc/shadow文件(這個文件是用戶的密碼文件)
使用vim打開/etc/group文件
內容以下所示:
以:進行分隔能夠把一行內容分紅4個列
第1列:表示組名稱
第2列:表示組密碼(x是一個佔位符,真正的密碼存放在/etc/gshadow文件當中,但已經被棄用了)
第3列:表示組的id
組id爲0-499是系統安裝時定義的默認組,其中0表明超級管理員組,組名稱必定是root
組id爲500-500之後這個些組有多是軟件安裝時定義的組,也有多是你本身定義的組id,因此咱們統稱500到500以上id的組爲自定義的用戶組
第4列:表示組內的用戶(但這個選項不多被關注)
使用vim打開/etc/gshadow文件
以:進行分隔,一共能夠分爲4列
第1列 :組名稱
第2列:通常表示爲組密碼,可是由於被棄用了,因此不會存放組密碼了
第3列:通常表示爲組的權限,由於被棄用了,因此也爲空了
第4列:表示組的管理員,這個選項通常被c和c++的開發者所關於,但php開發者瞭解便可
在Linux當中咱們能夠經過命令對用戶組進行管理,主要能夠管理用戶組的增刪查該功能
命令格式:groupadd [-選項][組名稱]
命令做用:添加用戶組,通常使用該命令添加的用戶組大於500
例子1:添加一個名爲itcast的用戶組,執行命令以下:groupadd itcast
查看/etc/group文件內容以下:
例子2:添加一個名爲itheima,組id爲600的組
在groupadd當中加入-g選項,-g選項的做用就用戶組的id,執行命令以下:
groupadd -g 600 itheima
查看/etc/group文件內容以下:
若是咱們要查看咱們所添加的組信息,每一次用vim打開是否是很是的麻煩啊?
命令格式: grep [搜索關鍵字][文件或者目錄]
命令做用:搜索和定位內容中關鍵字,能夠結合其餘的命令一塊兒使用,也能夠單獨使用
例子1:在/etc/group文件當中搜索組id爲600的信息,命令以下:
grep 600 /etc/group
例子2:在/etc/group文件當中搜索組名爲itcast的信息,命令以下:
grep itcast /etc/group
命令格式:groupmod [-選項][修改的內容][舊的組名稱]
命令做用:更新一個組的信息
例子1:修改itheima的組名稱爲heima
選項-n,是修改組的名稱,執行代碼以下:
groupmod -n heima itheima
可使用grep搜索id爲600的組信息以下:
例子2:修改heima的組id爲601
選項-g,是修改組的id,執行代碼以下:
groupmod -g 601 heima
可使用grep搜索祖名爲heima的組信息以下:
命令格式:groupdel [組名稱]
命令做用:刪除一個用戶組
例子:刪除祖名爲heima的組信息,執行命令以下:
groupdel heima
使用grep命令查找組id爲601的組信息
沒有返回任何組信息就表明組不存在,刪除成功
CentOS6.5和CentOS6.8或者CentOS7.0當中有一些運維人員他們會使用一種監測工具叫zippitias工具,該工具安裝完成後,groupdel會被這個刪除掉這個命令,由於這個監測認爲groupdel是一個危險操做,因此會把這個命令刪除,會使用zippitias_grp_del命令來代替groupdel命令
使用vim打開/etc/passwd文件
內容以下圖所示:
以:進行分隔,一共有7列
第1列:表示用用戶名
第2列:表示用戶密碼(x佔位符表示密碼,真實密碼存放在/etc/shadow文件中)
第3列:表示用戶的id,0表示超級管理員
第4列:表示用戶所在的組的id
第5列:表示用戶的備註信息,通常跟用戶名同樣,但也能夠不同,通常最好不要修改
第6列:用戶的宿主目錄
第7列:表示一個用戶是否具有了登陸linux操做系統的資格
若是是/bin/bash表示該用戶能夠登陸linux操做系統
若是是/sbin/nologin表示該用戶不能登陸linux操做系統
在linux當中用戶必須具備密碼才能登陸操做系統,因此密碼文件咱們只須要記住兩個重要的列就能夠了,使用vim打開/etc/shadow文件,內容以下
以:進行分隔,咱們只需記住第1和第2列便可
第1列:表示用戶名
第2列:表示用戶的密碼(密碼的算法是linux特有的散列md5算法,這個算法通常用於軍事領域,通常人很難破解)
若是在密碼列當中出現!!表示用戶沒有密碼,而且沒法登陸操做系統
命令格式:id [用戶名]
命令做用:顯示用戶的基本信息
例子:顯示zhangsan的基本信息,執行命令以下:
id zhangsan
以上命令在現實開發當中使用的概率基本是100%
命令格式:groups [用戶名]
命令做用:以用戶:組的鍵值對形式展現用戶的信息
例子:使用groups展示zhangsan的鍵值對信息
以上命令是紅帽子認證工程師必考的命令,因此不少運維就會問一些這個命令的使用方法
命令格式:useradd[-選項][用戶名稱]
命令做用:添加一個linux用戶
例子1:添加一個用戶名爲wangwu的用戶,執行命令以下:
useradd wangwu
使用id或者groups命令查看wangwu的用戶信息,以下
在默認的狀況下使用useradd命令,建立一個用戶的同時會建立一個與用戶名相關的組,因此由此能夠看出每一個在linux當中用戶必須歸屬一個用戶組,所以刪除用戶組可能會致使用戶出現一些未知bug,因此刪除組是一個危險的操做
例子2:添加一個用戶名爲jimmy的用戶,把該用戶放在itcast的組當中
使用-g選項,該選項用於添加用戶時指定用戶所在的組,執行命令以下:
useradd -g itcast jimmy
使用id或者groups命令查看jimmy的用戶信息,以下
使用grep命令查看/etc/passwd文件中jimmy的信息
注意事項:添加了一個用戶,那麼這個用戶在默認的狀況沒法登陸操做系統,若是但願用戶添加後能夠登陸linux操做系統,就必須給用戶添加一個用戶的登陸密碼
命令格式:usermod[-選項][用戶名稱]
命令做用:修改用戶的相關信息
例子:把用戶wangwu的修改成lisi,使用選項-l,該選項用於修改用戶的名稱
執行命令以下所示:
usermod -l lisi wangwu
使用id查詢wangwu和lisi的相關信息以下所示
注意:修改了wangwu爲lisi以後,id查詢wangwu沒法返回用戶信息,使用id查詢lisi,發覺lisi會在wangwu這個用戶組當中
命令格式:userdel[-選項][用戶名稱]
命令做用:刪除用戶的相關信息
例子1:把lisi這個用戶刪除,執行命令:userdel lisi
刪除後用id查詢lisi的確刪除成功
注意,刪除用戶若是不加任何選項,不會刪除用戶的宿主目錄
例子2:把jimmy這個用戶刪除,同時刪除jimmy的宿主目錄
使用-r選項,該選項用於刪除用戶時刪除用戶的宿主目錄,執行命令以下:
userdel -r jimmy
注意:刪除一個用戶同時刪除用戶的宿主目錄其實與目錄名稱無關。
既然使用-r能夠刪除jimmy的目錄,那麼咱們在添加的用戶的時候是否是必定要使用與用戶名同樣的宿主目錄呢?
擴展例子:添加一個名爲tommy的用戶,其實宿主目錄爲php25
這時若是但願完成以上的例子,咱們須要在useradd命令中加入-d選項,執行命令以下:
useradd -d /home/php25 tommy
若是切換用戶tommy而且使用cd ~,結果以下所示:
命令格式:chfn [用戶名]
命令做用:編輯用戶的詳細備註信息,通常配置finger命令一塊兒使用
例子:爲zhangsan這個用戶添加詳細的備註信息
使用finger命令查看用戶的相關備註詳細信息,使用命令格式以下:
finger [用戶名]
例子:查看zhangsan的詳細備註信息,執行命令: finger zhangsan
注意:在現實中多使用chfn命令,而且安裝finger命令配合使用
例子:禁止羅鴻登陸linux操做系統,步驟以下:
第1步:使用vim打開/etc/passwd文件,而後使用末行模式搜索/luohong
第2步:找到luohong所在是行,而後修改其登陸操做系統的權限爲/sbin/nologin
保存並退出(:x)
第3步:註銷退出後沒法登陸操做系統,發覺用戶不管如何都不能登陸操做系統了,咱們把這種成爲凍結單個用戶登陸
第4步:若是但願對某一個用戶進行解凍操做那麼就能夠把/etc/passwd的第7列修改成/bin/bash
問題:若是在一個公司裏面,有一個運維總監管理着100個運維人員,他們用戶名分爲爲user1-user100,那麼這時若是系統須要進行維護,總監要求除了root用戶之外全部的普通用戶都不能進入linux操做系統,直到維護完成以後才能夠進入,這時咱們其實須要對user1-user100逐個進行凍結和解凍嗎?咱們若是你真的一個個去凍結和解凍是沒有效率,所以遇到以上場景,咱們須要禁止全部普通用戶登陸,步驟以下:
第1步:使用root登陸linux操做系統,而且切換到/etc目錄下,以下圖所示:
第2步:使用touch命令,建立一個名爲nologin的文件
完成以上的操做,那麼就禁止了全部的普通用戶(除root之外)登陸操做系統,若是這時普通用戶想登陸操做系統,就會出現如下界面:
第3步:使用root登陸linux操做系統,發覺root登陸正常
第4步:若是維護完成,但願解凍全部的普通用戶,那麼咱們只須要刪除/etc/nologin文件,這時問題來了:如何刪除一個文件呢?使用rm命令刪除,y表明yes
第5步:刪除成功後,全部的普通用戶就解凍成功了,均可以從新登陸操做系統
命令格式:rm [-選項][目錄或者文件的詳細位置]
命令做用:刪除文件或者目錄
在默認的狀況下使用rm命令刪除一個文件會提示是否確認刪除?若是回答y就是肯定刪除,若是回答n就不須要 刪除。若是但願刪除的時候不提示任何的錯誤,那麼咱們須要加相關的選項:
-f (force)選項,這個選項表明強制刪除,不會提示的錯誤,而且必定會刪除成功
例子1:刪除1.php,不加上-f選項
回答y刪除了1.php
例子2:刪除2.php和3.php,不加上-f選項,刪除2.php回答n,刪除3.php回答y
發覺2.php沒有被刪除
例子2:刪除整個test目錄包括其子目錄和子文件
方法1:切換到test目錄當中使用rm -rf *
-r 選項:表示遞歸刪除目錄中全部的子文件和子目錄
* : 表明刪除當前目錄下全部的文件和目錄
這時你會發覺test目錄自己沒有被刪除,也就說該命令只會刪除當前目錄中的子目錄和子文件但不會刪除當前目錄
方法2:刪除整個test目錄,使用 rm -rf ~/桌面/test
這時會發覺test目錄和其子目錄和子文件都被刪除乾淨了
例子3:刪除test目錄的全部子文件,但不刪除其子目錄
只須要刪除當前目錄中的子文件,能夠切換test中刪除比你且去掉-r選項,執行命令以下:
rm -f *
注意:若是當前在根目錄當中,使用rm -rf *那麼就會刪除根目錄中全部文件和目錄,這時linux就直接崩潰了,一樣若是你使用rm -rf / 那麼一樣產生相同的災難,在linux當中rm命令刪除是沒法恢復。由於Linux的刪除是叫作粉碎性刪除,刪除的時候會刪除文件的節點。linux當rm -rf * 或者 rm -rf /要謹慎使用
若是但願查看文件節點,可使用ls -i來看出,執行命令以下:
命令格式:cp [-選項][源文件或目錄][目標位置]
命令做用:複製文件或者目錄
例子1:複製test目錄中1.php到test_sub1目錄中
執行命令: cp ./1.php ./test_sub1,結果以下:
例子2:複製test_sub2目錄複製到test_sub1當中,使用選項-r
-r選項:遞歸複製目錄和子文件
執行命令: cp -r ./test_sub2 ./test_sub1
例子3:複製1.php目錄複製到test_sub1當中,但不進行更名操做
執行命令以下: cp ./1.php ./test_sub1
例子4:複製1.php目錄複製到test_sub1當中,但進行更名操做
執行命令: cp ./1.php ./test_sub1/111.php
命令格式:mv [-選項][源文件或目錄][目標位置]
命令做用:移動文件或者目錄
例子1:剪切1.do到test_sub1當中
執行命令: mv ./1.do ./test_sub1
例子2:剪切test_sub3目錄到test_sub1當中,剪切時包括test_sub3當中全部子文件和子目錄
執行命令: mv ./test_sub3 ./test_sub1
例子3:修改1.jsp爲jsp.php
執行命令: mv ./1.jsp ./jsp.php