Linux作業系統學習之第二篇
目錄
Linux作業系統啟動過程、目錄結構
Linux作業系統的執行級別
Linux檔案及使用者
-
Linux操作系啟動過程
使用過VMware的小夥伴會在虛擬機器關機和開機的時候看到他會有許多資訊,但是它真實的啟動過程沒有那麼複雜,可以分為五個階段:
(1)核心的引導
(2)執行init
(3)系統初始化
(4)建立終端
(5)使用者登入系統
(1)核心引導:
開啟電源後,BIOS開機自檢,作業系統(Linux)接管硬體以後,首先讀入 /boot 目錄下的核心檔案。
(2)執行init:
Linux作業系統讀入/boot目錄下的核心檔案以後會執行init。
init程序是系統所有程序的起點
init 程式首先是需要讀取配置檔案
不同的CentOS版本讀取的配置檔案絕對路徑及目錄名不一樣。
-
Systemd: systemd, CentOS 7,配置檔案: /usr/lib/systemd/system、 /etc/systemd/system。
-
Upstart: init,CentOS 6, 配置檔案: /etc/inittab, /etc/init/*.conf。
由於init的一大任務就是去執行開機啟動的程式。這些開機啟動程式在Windows當中稱為“service(服務”,但是在Linux當中被稱為“daemon(守護程序)”
不同場合需要啟動的程式不同。Linux允許為不同的場合分配不同的開機啟動程式
執行級別(runlevel):
Linux系統一共有七個執行級別:
init 0:系統停機,系統預設執行級別不能為0,否則不能正常啟動。
init 1:單使用者工作狀態,root許可權,用於系統維護,禁止遠端登入
init 2:多使用者狀態(沒有NFS)
init 3:完全的多使用者狀態(有NFS)登入後進入控制檯(黑屏模式)執行命令模式
init 4:系統未使用、保留。
init 5:X11控制檯,登陸後進入圖形GUI介面‘
init 6:系統正常關閉並重啟。(執行模式不能設定為6,否則不能正常啟動)
(3)系統初始化
在init配置檔案當中有一行:
si::sysinit:/etc/rc.d/rc.sysinit 它呼叫執行了/etc/rc.d/rc.sysinit,而rc.sysinit是一個bash shell的指令碼,它主要是完成一些系統初始化的工作,rc.sysinit是每一個執行級別都要首先執行的重要指令碼。
rc.sysinit指令碼主要完成的工作:
1、啟用交換分割槽
2、檢查磁碟,載入硬體模組以及其他一些需要優先執行的任務
真正的rc啟動指令碼實際上都是放在/etc/rc.d/init.d/目錄下
這些rc啟動指令碼有著類似的用法,它們一般能接受start、stop、restart、status等引數。
/etc/rc.d/rc5.d/中的rc啟動指令碼通常是K或S開頭的連線檔案,對於以 S 開頭的啟動指令碼,將以start引數來執行。
如果發現指令碼已經執行(以/var/lock/subsys/下的檔案作為標誌),會先以stop引數停止這些守護程序,然後再重新執行
其目的是保證當init改變執行級別時,所有相關守護程序都將重啟
每個級別的守護程序可以自行設計(在chkconfig或者setup中的“System Services”設定)
(4)建立終端
rc指令碼執行完畢後,返回init。init會開啟6個終端,以便使用者登入系統。init2、3、4、5的執行級別中都以respawn方式執行mingetty程式,這個程式能開啟終端、設定模式同時顯示一個文字登入接面,就是我們看到的登入介面
使用者登入系統:
有三種方式:
(1)命令列登入---全黑的螢幕
(2)ssh登入
(3)圖形介面登入---init 5
只有/etc/securetty中登記了的終端才允許 root 使用者登入,如果不存在這個檔案,則 root 使用者可以在任何終端上登入。/etc/usertty檔案用於對使用者作出附加訪問限制,如果不存在這個檔案,則沒有其他限制。
圖形模式與文字模式的切換方式
Ctrl + Alt + F1 ~ F6來進入其中一個命令視窗介面。
進入命令視窗介面後再返回圖形介面只要按下Ctrl + Alt + F7 就回來了。
vmware 虛擬機器,命令視窗切換的快捷鍵為 Alt + Space + F1~F6. 如果你在圖形介面下請按Alt + Shift + Ctrl + F1~F6 切換至命令視窗。
由上面的描述可以概括出系統啟動流程:
作業系統---讀取/boot目錄下文字---開啟init程序---劃分執行級別---執行/etc/init.d目錄下文字---展示使用者登入介面---Login shell
Linux關機
(通常情況下伺服器不會關機)
正確的關機流程:
首先將記憶體內容寫到磁碟當中,關機:
sync---shutdown now
sync---half
sync---poweroff
關機指令:
shutdown -h 10:十分鐘後關機,顯示在登入使用者當前螢幕上
shutdown -h now:立馬關機
shutdown -h 20:25:20:25關機
shutdown -h +10:十分鐘後關機
shutdown -r now:系統立馬啟動
shutdown -r +10:系統十分鐘後重啟
reboot:重啟
half:關閉系統
poweroff:斷電源
init 6:關閉系統
-
Linux作業系統目錄結構簡介
Windows作業系統當中:以多根的方式組織檔案--碟符(C:\D:\E:\)。
Linux:以單根的方式組織檔案/。
Linux目錄結構
從上往下依次介紹每個資料夾。
系統管理員:中文“根”:root
系統目錄(資料夾):中文“根”:/
在/目錄下看到的目錄是一級目錄
一級目錄裡面的目錄是二級目錄
二級目錄下的目錄叫三級目錄
一級目錄有:
bin(binary adj.二進位制的):執行命令儲存位置
boot:啟動目錄。與計算機啟動有關的目錄儲存位置包括一些連線檔案以及映象檔案。。
dev(device n.裝置、終端):硬體(鍵盤滑鼠、光碟機、顯示器...實體)存放的是 Linux 的外部裝置
etc(Etcetera(等等) 的縮寫):配置檔案(可以理解為裝置的控制按鈕,這些按鈕是etc裡面的檔案)(工作中進入最多的資料夾)
home:裝使用者自己檔案的地方(家目錄)(使用者登入計算機時候計算機就會在home下建立屬於該使用者自己的資料夾,這些資料夾和其他使用者建立的資料夾是隔離開的,保護使用者隱私)每個使用者都有一個自己的目錄,一般該目錄名是以使用者的賬號命名的
root:只有root賬號能進入的目錄,訪問伺服器的使用者進不去root目錄
run:執行檔案,這裡的檔案是臨時的,一會就清掉了
sbin(superbin):和bin一樣都是命令,區別於sbin下的命令是管理員才能用的
tmp(temporary adj.臨時的):臨時目錄,裡面東西可以隨意刪除。不用的檔案臨時的檔案都是在裡面的。
usr(unix shared resources(共享資源) 的縮寫):應用程式。在linux下安裝的應用程式都在usr裡面。非常重要的目錄,使用者的很多應用程式和檔案都放在這個目錄下,類似於 windows 下的 program files 目錄。
var:存放可變的目錄(如日誌、郵件...)
-
Linux檔案基本屬性:
在瞭解Linux檔案管理命令之前需要先了解Linux檔案的基本屬性
Linux檔案有以下特點:
1、Linux 系統是一種典型的多使用者系統,不同的使用者處於不同的地位,擁有不同的許可權。
2、Linux 系統對不同的使用者訪問同一檔案(包括目錄檔案)的許可權做了不同的規定。
Linux檔案基本資訊說明:
這裡面有幾個需要記住的關鍵資訊:
file type:檔案型別。在Linux當中檔案型別有一下幾種類別:
1、d:為dirctory,目錄檔案
2、~:代表這是一個檔案
3、l(link file):連結文件
4、b:表示裝置檔案裡面的可供儲存的結構裝置(可隨機存取裝置)
5、c:裝置檔案裡面的串列埠裝置,如鍵盤、滑鼠...(一次性讀取裝置)
在Linux檔案基本屬性當中對檔案劃分了三個組,可以對不同組的人賦予不同的許可權來達到相當於分組的效果。
d --- --- ---
三個“-”代表一個組。
d代表檔案屬性
把後面九個“-”按數字編號
前三個“-”代表User組
中間三個“-”代表Group組
最後三個“-”代表other組
“-”代表無許可權
每個組所擁有的對該目錄或者文字的許可權不同來達到管理的效果
對於檔案來說,它都有一個特定的所有者,也就是對該檔案具有所有權的使用者。同時,在Linux系統中,使用者是按組分類的,一個使用者屬於一個或多個組。
檔案所有者以外的使用者又可以分為檔案所有者的同組使用者和其他使用者。因此,Linux系統按檔案所有者、檔案所有者同組使用者和其他使用者來規定了不同的檔案訪問許可權。
對於 root 使用者來說,一般情況下,檔案的許可權對其不起作用。
rwx代表權限:
r:“讀”許可權=數字“4”
w:“寫”許可權=數字“2”
x:“執行”許可權=數字“1”
無對應的許可權出現“-”號
Linux檔案基本屬性管理命令:
修改使用者的許可權:chmod(change mode)(更改檔案9個屬性)
Linux檔案屬性有兩種設定方法:
數字
符號
語法:
chmod [-R] xyz 檔案或目錄
"[]"是指可選新增可選不新增
"-R(recursive)"是指進行遞迴的持續變更,就是連同次目錄下的所有檔案都會變更
符號型別改變檔案型別:
user=u
group=g
others=o
”+“=加入
“-”=除去
“=”=設定
chmod u/g/o/a +/-/= r/w/x 檔案或目錄
例如:
chmod u=rwx,g=rwx,o=rwx test.txt
等價於
chmod 777 test,txt
chmod u-r,g-r,o-r test.txt
等價於
chmod 333 test.txt
改變檔案屬主,也可以同時更改檔案屬組:chown(change ownerp)
語法:
chown [-R] 屬主名 檔名
chown [-R] 屬主名:屬組名 檔名
例如:
chowm root:root 檔名
改變檔案屬組:chgrp
語法:
chgrp [-R] 屬組名 檔名
”-R“:遞迴更改檔案屬組,就是在更改某個目錄檔案的屬組時,如果加上-R的引數,那麼該目錄下的所有檔案的屬組都會更改。
-
Linux使用者管理
Linux系統是一個多使用者多工的分時作業系統,任何一個要使用系統資源的使用者,都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。(註冊賬號)
這樣做的目的是:
1、幫助管理員對使用系統的使用者進行跟蹤,並控制他們對系統資源的訪問。
2、管理員對使用系統的使用者進行跟蹤,並控制他們對系統資源的訪問。
使用者賬號的特點:
每個使用者賬號都擁有一個唯一的使用者名稱和各自的口令。(類似於賬號密碼)
使用者在登入時鍵入正確的使用者名稱和口令後,就能夠進入系統和自己的主目錄。(類似於個人主頁)
實現賬號管理要完成的工作有以下幾個方面:
使用者的賬號新增、刪除、修改
使用者口令的管理
使用者組的管理
1、新增新的使用者賬號(useradd):
語法:
useradd [option] 使用者名稱
可選的option:
"-c"(comment):指定一段註釋性描述
"-d":目錄,指定使用者主目錄,如果此目錄不存在,就同時使用-m選項,可以建立主目錄
"-g":使用者組,指定使用者所屬的使用者組
"-G":使用者組,指定使用者所屬的附加組(一個使用者可以存存在多個組當中擁有多個組的許可權)
"-s":Shell檔案,指定使用者登入的Shell
"-u":使用者號,指定使用者的使用者號,如果有-o選項,則可以重複使用其他使用者的標識號
使用者名稱:自己設定的登入名
例項:
建立一個使用者:Jun,在/home/Jun裡面建立它的主目錄 sam:(牢記語法:命令+引數+選項+引數+選項...)
useradd(命令) -d(引數) /home/Jun(選項) -m(引數) Sam(使用者名稱)
建立一個使用者JUN,該使用者登入Shell是/bin/sh,主組為hansonjun(使用者組),附屬組為root:
useradd(命令) -s(引數) /bin/sh(選項) -g(引數) hansonjun(使用者組) -G(引數) root(選項) JUN(使用者名稱)
(增加使用者賬號就是在/etc/passwd檔案中為新使用者增加一條記錄,同時更新其他系統檔案如/etc/shadow, /etc/group等。)
2、刪除帳號
刪除帳號就是將/etc/passwd等系統檔案中的該使用者記錄刪除,必要時還刪除使用者的主目錄。(建立使用者時提到的系統目錄)
語法:
userdel option 使用者名稱
引數:
"-r":作用是把使用者的主目錄一起刪除
3、修改帳號
修改使用者賬號就是根據實際情況更改使用者的有關屬性,如使用者號、主目錄、使用者組、登入Shell等。
語法:
usermod option 使用者名稱
引數:(與useradd的引數一樣,可以為使用者指定新的資源值)
新引數:“-l”:指定一個新帳號,將原來使用者名稱改為新的使用者名稱
例如:
usermod(命令) -s(引數:shell) /bin/ksh(選項) -d(引數) /home/z(引數) -g(引數) developer(選項) King(使用者名稱)
4、使用者口令管理(相當於密碼)
使用者賬號剛建立時沒有口令,但是被系統鎖定,無法使用,必須為其指定口令後才可以使用,即使是指定空口令。
指定和修改使用者口令的Shell命令是passwd
。超級使用者可以為自己和其他使用者指定口令,普通使用者只能用它修改自己的口令。
語法:
passwd option 使用者名稱
引數:
"-l":鎖定口令,(禁用帳號)---使某使用者不能登入
"-u":口令解鎖
"-d":使帳號無口令---不是登入時候不用輸入口令,而是此命令將使用者 sam 的口令刪除,這樣使用者下一次登入時,系統就不再允許該使用者登入了。
"-f":強迫使用者下次登入時修改口令
(如果預設使用者名稱,則修改當前使用者的口令。)
超級使用者修改其他使用者使用者名稱:
passwd 使用者名稱