1. 程式人生 > 其它 >第四章:Linux系統的管理與維護

第四章:Linux系統的管理與維護

第一節 Linux系統的許可權控制

1、許可權

許可權=權力+限制。對任何計算機系統來說,我們都不能允許使用者在系統中為所欲為。我們必須知道“誰在什麼時候對什麼資源做了什麼操作”,這就是系統日誌要記錄的內容。不僅如此,系統還必須有能力禁止使用者操作沒有訪問許可權的資源。

上述內容轉換成許可權控制系統中的專業術語:

  • 使用者:系統使用者登入系統時使用的賬號、密碼。系統通過“使用者”來識別使用者的身份。使用者以“使用者”的名義作業系統資源。
  • 登入:使用者想要讓系統認可自己的身份就必須提供賬號、密碼等資訊。更專業的說法是:“認證(authentication)”。
  • 資源:許可權控制系統要保護的物件。許可權控制系統中必須要儲存每一個資源所要求的訪問許可權。哪怕是“不需要任何許可權,任何人都可以使用”也是許可權資訊的一種描述——沒有要求也是一種要求。
  • 授權:authorization,系統給使用者分配許可權。這些許可權代表了使用者可以做什麼。
  • 校驗:一個使用者訪問一個資源的時候,許可權控制系統必須要檢查這個使用者持有的許可權是否滿足目標資源所要求的許可權。
  • 使用者組:同一類的使用者歸到同一個組,也可以叫做角色。

其實不管多麼複雜的許可權控制系統都可以歸結為下面這個圖:

2、基礎命令

命令 作用
groupadd 組名 建立使用者組
id 使用者名稱 返回使用者資訊,檢查使用者是否存在
useradd -g 組名 使用者名稱 建立使用者,同時指定所屬使用者組
passwd 使用者名稱 給使用者賬號設定密碼

組資訊儲存在 /etc/group 檔案中

使用 tail /etc/group 命令檢視組資訊

組資訊儲存在 /etc/group 檔案中,使用 tail /etc/group 檢視組資訊

使用與普通使用者同名的使用者組有很大的弊端,如果使用者比較多,且使用者的許可權型別一致,後期維護起來很不方便,因此我們需要額外建立使用者組,對使用者進行分類。

① 建立使用者組

② 檢視使用者是否存在

③ 建立使用者,同時指定所屬使用者組

④ 給使用者賬號設定密碼

3、檔案許可權資訊說明

許可權資訊共分三組,每組三位:

下面介紹rwx-分別是什麼意思:

  • r:讀

    • 讀檔案:檢視檔案內容

      例如:cat、less、tail等命令

    • 讀目錄:檢視目錄內容

      例如:使用ll命令檢視目錄內容

  • w:寫

    • 寫檔案:向檔案中寫入新內容

    • 寫目錄:在目錄裡面增刪內容

      例如:在目錄內新建檔案、刪除檔案、新建目錄、刪除目錄給目錄重新命名。

      A目錄裡面刪除B目錄,需要看A目錄有沒有寫操作。

  • x:執行

    • 執行檔案:把檔案當作可執行檔案來執行
    • 執行目錄:使用cd命令進入目錄
  • -:無許可權

由於每一位要麼有許可權要麼沒有許可權,所以天然可以使用二進位制來表示許可權資訊:

  • 1:有
  • 0:無
許可權的符號表示 許可權的二進位制表示 許可權的十進位制表示
rwx r-x r-x 111 101 101 7 5 5
rw- r-- r-- 110 100 100 6 4 4

4、chxxx命令

命令名 作用
chmod 修改許可權資訊
chown 修改檔案或目錄的所屬主(root許可權下執行)
chgrp 修改檔案或目錄的所屬組(root許可權下執行)

下面來演示一下chmod命令:

①修改許可權資訊前

②修改許可權資訊

增加執行許可權

③修改許可權資訊後

④再次修改許可權資訊

移除執行許可權

⑤修改許可權資訊後

上面演示的操作方式是同時操作所屬主、所屬組、其他人三個部分,做相同的設定。如果希望精確控制每一位的許可權值可以使用數值的形式設定。

755 含義:
7 -> :檔案所屬使用者的訪問許可權。二進位制對應的十進位制
5 -> :檔案所屬使用者組的訪問許可權。二進位制對應的十進位制
5 -> : 其它使用者的訪問許可權。二進位制對應的十進位制

⑥ 修改所屬組

5、普通使用者提升許可權

在公司參與開發的過程中,通常我們不會拿到伺服器系統的root許可權,而是普通使用者許可權。但是普通使用者很多操作無法執行。比如在/opt目錄下新建目錄:

# /opt目錄下沒有aaa目錄
[luozhixiang@hadoop001 opt]$ ll
總用量 4
drwxr-xr-x. 2 root root 4096 9月   7 2017 rh

# 用普通使用者在/opt下建立aaa目錄許可權不夠
[luozhixiang@hadoop001 opt]$ mkdir aaa
mkdir: 無法建立目錄"aaa": 許可權不夠

# 使用sudo命令臨時提權被提示不在sudoers檔案中
[luozhixiang@hadoop001 opt]$ sudo mkdir aaa

我們信任您已經從系統管理員那裡瞭解了日常注意事項。
總結起來無外乎這三點:

    #1) 尊重別人的隱私。
    #2) 輸入前要先考慮(後果和風險)。
    #3) 權力越大,責任越大。

[sudo] luozhixiang 的密碼:
luozhixiang 不在 sudoers 檔案中。此事將被報告。

# 目錄沒有建立成功
[luozhixiang@hadoop001 opt]$ ll
總用量 4
drwxr-xr-x. 2 root root 4096 9月   7 2017 rh

將需要提權的普通使用者加入到/etc/sudoers檔案中

91 ## Allow root to run any commands anywhere 
92 root    ALL=(ALL)       ALL
93 luozhixiang ALL=(ALL)   ALL

不需要重啟系統,我們再次測試提權:

# 操作可以成功,需要密碼
[luozhixiang@hadoop001 opt]$ sudo mkdir aaa
[sudo] luozhixiang 的密碼:
[luozhixiang@hadoop001 opt]$ ll
總用量 8
drwxr-xr-x. 2 root root 4096 7月  11 04:08 aaa
drwxr-xr-x. 2 root root 4096 9月   7 2017 rh

如果提權後不想輸入密碼,可以執行以下操作:

再修改/etc/sudoers檔案

 93 luozhixiang ALL=(ALL)   NOPASSWD:ALL

這樣再使用sudo命令就不需要輸入密碼了

Connecting to 192.168.41.100:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Sat Jul 11 04:10:14 2020 from 192.168.41.1
[luozhixiang@hadoop001 ~]$ cd /opt
[luozhixiang@hadoop001 opt]$ sudo mkdir aaa
[luozhixiang@hadoop001 opt]$ ll
總用量 8
drwxr-xr-x. 2 root root 4096 7月  11 04:12 aaa
drwxr-xr-x. 2 root root 4096 9月   7 2017 rh

這裡有兩點需要注意:

  • 在同一次登入中,即使不加NOPASSWD也只需要輸入一次密碼,所以NOPASSWD是否生效需要退出登入後再重新登入來測試。
  • 使用sudo提權後建立的目錄仍然是root root許可權,如果有需要那就還要使用chown或chgrp來修改。

第二節 Linux系統的服務管理

1、服務的概念

作業系統中在後臺持續執行的程式,本身並沒有操作介面,需要通過埠號訪問和操作。CentOS 6和CentOS 7的服務管理有很大區別,我們分別來看。

2、CentOS6服務

①service命令

啟動服務:service 服務名 start

停止服務:service 服務名 stop

重啟服務:service 服務名 restart

重新載入服務:service 服務名 reload

檢視服務狀態:service 服務名 status

②chkconfig命令

檢視服務列表:chkconfig [--list]

設定具體服務開機自動啟動狀態:chkconfig 服務名 on/off

思考:你能否區分清楚這兩種狀態呢?

服務現在是否執行

服務是否開機自動執行

③執行級別

vim /etc/inittab檢視系統配置。CentOS6系統使用0~6這7個數字來控制Linux系統的啟動方式。

執行級別0:系統停機狀態,系統預設執行級別不能設為0,否則不能正常啟動

執行級別1:單使用者工作狀態,root許可權,用於系統維護,禁止遠端登陸

執行級別2:多使用者狀態(沒有NFS),沒有網路服務

執行級別3:完全的多使用者狀態(有NFS),登入後進入控制檯命令列模式

執行級別4:系統未使用,保留

執行級別5:X11表示控制檯,進入圖形介面

執行級別6:系統正常關閉並重啟,預設執行級別不能設為6,否則不能正常啟動

常用的是3或5

chkconfig命令使用--level引數和一個數值可以控制一個服務在某個執行級別的是否自動啟動。

④防火牆

防火牆預設會阻止絕大部分埠號的訪問,在實際生產環境下,運維工程師需要為伺服器設定詳細的訪問規則。在練習過程中,我們為了方便建議把防火牆直接關閉。由於防火牆服務預設開機自動啟動,所以除了停止服務,還要設定為開機不自動啟動

服務名:iptables

停止防火牆:service iptables stop

設定開機不自動啟動:chkconfig iptables off

3、CentOS7服務

①systemctl命令

啟動服務:systemctl start 服務名(xxxx.service)

重啟服務:systemctl restart 服務名(xxxx.service)

停止服務:systemctl stop 服務名(xxxx.service)

重新載入服務:systemctl reload 服務名(xxxx.service)

檢視服務狀態:systemctl status 服務名(xxxx.service)

②systemctl命令代替chkconfig命令

檢視服務狀態:systemctl list-unit-files

設定或取消服務開機自動啟動:

設定開機自動啟動:systemctl enable 服務名

取消開機自動啟動:systemctl disable 服務名

③CentOS7簡化了執行級別

cat /etc/inittab

# inittab is no longer used when using systemd.

#

# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

#

# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target

#

# systemd uses 'targets' instead of runlevels. By default, there are two main targets:

#

# multi-user.target: analogous to runlevel 3

# graphical.target: analogous to runlevel 5

#

# To view current default target, run:

# systemctl get-default

#

# To set a default target, run:

# systemctl set-default TARGET.target

④ 檢視防火牆

systemctl status firewalld.service

⑤關閉防火牆

systemctl stop firewalld.service

systemctl disable firewalld.service

請大家記住:斬草要除根