Linux命令整理,使用者管理,使用者組管理,系統管理,目錄管理常用命令

趕星而至發表於2021-01-11

                             知識點梳理

                   

                            Linux課堂筆記

學習目標

  • 能夠知道什麼是Linux系統以及它的應用場景

  • 能夠獨立完成安裝VMware虛擬機器和網路配置

  • 能夠獨立完成安裝CentOS以及遠端終端SecureCRT

  • 能夠熟練編寫賬戶管理、使用者組的增刪改查和新增命令

  • 能夠熟練編寫系統管理的常用命令

  • 能夠熟練編寫目錄常用命令

  • 能夠熟練編寫許可權常用命令

  • 能夠知道使用者組實際應用場景

1 初識Linux

在前面的課程中,我們無論是開發、測試。部署、儲存都在Windwos作業系統的環境中,從今天開始我們一起學習下Linux,Linux系統和Windows系統最大的區別就是圖形化介面操作和用途上有所差異,除了這兩點,兩者有異曲同工之妙,在國內, Linux 系統更多的是應用於伺服器上,而桌面作業系統更多使用的是 Windows,也就是說Linux與Windows一樣,同樣也是作業系統只是在使用以及應用上有所差異,其他都是一樣的;
因為Linux也是作業系統
所以在正式進入Linux學習之前,我們先簡單的學習作業系統的知識,然後在講解Linux

1.1 作業系統

作業系統(Operation System, OS),是管理計算機硬體軟體資源的計算機程式,同時也是計算機系統的核心與基石。作業系統需要處理如管理與配置記憶體、決定系統資源供需的優先次序、控制輸入裝置輸出裝置、操作網路與管理檔案系統等基本事務。作業系統也提供一個讓使用者與系統互動的操作介面。

作業系統作為介面的示意圖:

 

 

 

 

如上圖所示,在作業系統的最上層是使用者,中間層是作業系統(裡面可能裝了很多的應用程式),最下層是硬體的支撐,包含CPU/記憶體/硬碟等

這就是一個完成的作業系統結構圖

主流作業系統按照應用領域的劃分

1、桌面作業系統

  • Window 系列

    • 使用者群體大

  • macOS

    • 細節處理的更好, 沒有windows軟體豐富, 價格高

  • Linux

    • 應用軟體少

2、伺服器作業系統

  • Linux

    • 安全、穩定、免費

    • 佔有率高

  • Windows Server

    • 付費

    • 佔有率低

     

3、嵌入式作業系統

Linux

4、移動裝置作業系統

 

 

 

  • IOS

  • Android (基於Linux)

  • 華為鴻蒙(基於linux)

1.2 Linux發展歷程

引子
在上面,我們學習了作業系統的知識,也知道了主流作業系統按照應用領域劃分了四個型別的作業系統,其中Linux作業系統在四個領域都有提名,因為它是至今開源序列最好的作業系統,下面,我們就一起看下Linux的發展歷程,看看它是怎麼誕生的...

1984年,Andrew S.Tanenbaum 開發了用於教學的Unix系統,命名為Minix,但是僅僅用於教學 1989年,Andrew S.Tanenbaum將Minix系統執行於x86的pc平臺 1990年,芬蘭赫爾辛基大學學生Linus Torvalds首次接觸Minix系統 1991年,Linus Torvalds開始在Minix上編寫各種驅動程式等作業系統核心元件 1991年年底,Linus Torvalds公開了Linux核心原始碼0.02版,僅僅是核心 1994年,Linux 1.0版本發行,Linux轉向GPL版權協議 至此,Linux開始盛行開來...

Linux 核心最初是由李納斯•託瓦茲(Linus Torvalds)在赫爾辛基大學讀書時出於個人愛好而編寫的,當時他覺得教學用的迷你版 Unix作業系統 Minix 太難用了,於是決定自己開發一個作業系統。

第 1 版本於 1991 釋出,當時僅有 10 000 行程式碼。

李納斯•託瓦茲沒有保留 Linux 原始碼的版權,公開了程式碼,並邀請他人一起完善 Linux。與 Windows 及其他有專利權的作業系統不同,Linux 開放原始碼,任何人都可以免費使用它。

據估計,現在只有 2% 的 Linux 核心程式碼是由李納斯•託瓦茲自己編寫的,雖然他仍然擁有 Linux 核心(作業系統的核心部分),並且保留了選擇新程式碼和需要合併的新方法的最終裁定權。現在大家所使用的 Linux,我更傾向於說是由李納斯•託瓦茲和後來陸續加入的眾多 Linux 好者共同開發完成的。

Unix

Unix 作業系統由肯•湯普森(Ken Thompson)和丹尼斯•裡奇(Dennis Ritchie)發明。它的部分技術來源可追溯到從 1965 年開始的 Multics 工程計劃,該計劃由貝爾實驗室、美國麻省理工學院和通用電氣公司聯合發起,目標是開發一種互動式的、具有多道程式處理能力的分時作業系統,以取代當時廣泛使用的批處理作業系統。

Unix是一個強大的多使用者、多工作業系統。於1969年在AT&T的貝爾實驗室開發。Unix 的商標權由國際開放標準組織(The Open Group)所擁有。Unix作業系統是商業版,需要收費,價格比Microsoft Windows正版要貴一些。

1.3 Linux簡介

引子
Linux和我們常見的Windows一樣,都是作業系統,
例如:新浪、百度、淘寶等網際網路公司,他們使用的伺服器全都是Linux系統;全球500強企業95%的伺服器使用的都是Linux系統。

1.3.1 什麼是 Linux

Linux是一套免費使用和自由傳播的類Unix作業系統,是一個基於POSIX和Unix的多使用者、多工、支援多執行緒和多CPU的作業系統。它能執行主要的Unix工具軟體、應用程式和網路協議。它支援32位64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個效能穩定的多使用者網路作業系統。

Linux 的標誌和吉祥物是一隻名字叫做Tux(它克斯)的企鵝,Linux是基於Unix的。

Linux是一種自由和開放原始碼的作業系統,存在著許多不同的Linux版本,但它們都使用了Linux核心。Linux可安裝在各種計算機硬體裝置中,比如手機、平板電腦、路由器、臺式計算機

Linux不僅系統效能穩定,而且是開源軟體。其核心防火牆元件效能高效、配置簡單,保證了系統的安全。在很多企業網路中,為了追求速度和安全,Linux作業系統不僅僅是被網路運維人員當作伺服器使用,Linux既可以當作伺服器,又可以當作網路防火牆是Linux的 一大亮點。

Linux與其他作業系統相比 ,具有開放原始碼、沒有版權、技術社群使用者多等特點 ,開放原始碼使得使用者可以自由裁剪,靈活性高,功能強大,成本低。尤其系統中內嵌網路協議棧 ,經過適當的配置就可實現路由器的功能。這些特點使得Linux成為開發路由交換裝置的理想開發平臺。

1.3.2 Linux的特點

基本思想

Linux的基本思想有兩點:

第一:一切都是檔案

第二:每個軟體都有確定的用途

其中第一條詳細來講就是系統中的所有都歸結為一個檔案,包括命令硬體軟體裝置、作業系統程式等等對於作業系統核心而言,都被視為擁有各自特性或型別的檔案。至於說Linux是基於Unix的,很大程度上也是因為這兩者的基本思想十分相近

完全免費

Linux是一款免費的作業系統,使用者可以通過網路或其他途徑免費獲得,並可以任意修改其原始碼。這是其他的作業系統所做不到的。正是由於這一點,來自全世界的無數程式設計師參與了Linux的修改、編寫工作,程式設計師可以根據自己的興趣和靈感對其進行改變,這讓Linux吸收了無數程式設計師的精華,不斷壯大。

完全相容POSIX1.0標準

這使得可以在Linux下通過相應的模擬器執行常見的DOSWindows的程式。這為使用者從Windows轉到Linux奠定了基礎。許多使用者在考慮使用Linux時,就想到以前在Windows下常見的程式是否能正常執行,這一點就消除了他們的疑慮。

多使用者、多工

Linux支援多使用者,各個使用者對於自己的檔案裝置有自己特殊的權利,保證了各使用者之間互不影響。多工則是現在電腦最主要的一個特點,Linux可以使多個程式同時並獨立地執行。

良好的介面

Linux同時具有字元介面和圖形介面。在字元介面使用者可以通過鍵盤輸入相應的指令來進行操作。它同時也提供了類似Windows圖形介面的X-Window系統,使用者可以使用滑鼠對其進行操作。在X-Window環境中就和在Windows中相似,可以說是一個Linux版的Windows。

支援多種平臺

Linux可以執行在多種硬體平臺上,如具有x86、680x0、SPARC、Alpha等處理器的平臺。此外Linux還是一種嵌入式作業系統,可以執行在掌上電腦、機頂盒或遊戲機上。2001年1月份釋出的Linux 2.4版核心已經能夠完全支援Intel64位晶片架構。同時Linux也支援多處理器技術。多個處理器同時工作,使系統效能大大提高。

優點

1)Linux由眾多微核心組成,其原始碼完全開源;

2)Linux繼承了Unix的特性,具有非常強大的網路功能,其支援所有的因特網協議,包括TCP/IPv4TCP/IPv6和鏈路層拓撲程式等,且可以利用Unix的網路特性開發出新的協議棧;

3)Linux系統工具鏈完整,簡單操作就可以配置出合適的開發環境,可以簡化開發過程,減少開發中模擬工具的障礙,使系統具有較強的移植性;

1.4 Linux和Unix區別

1、開源情況

Unix 是商業化的,而 Linux 是開源的,是免費、公開原始碼的。

2、硬體適用

Unix 系統大多是與硬體配套的,也就是說,大多數Unix系統如AIX、HP-UX等是無法安裝在 x86 伺服器和個人計算機上的,而 Linux則可以執行在多種硬體平臺上。

可以先學習Linux後再學習Unix,因為Linux可以方便的在虛擬機器上執行,防止新手的誤操作。

3、本質不同

Linux是開放原始碼的自由軟體,使用者對前者有很高的自主權,在實際的的開發是處在一個完全開放的環境之中;

而Unix是對原始碼實行智慧財產權保護的傳統商業軟體,使用者的開發完全是處在一個黑箱之中,只有相關的開發人員才能夠接觸的產品的原型;

Unix 誕生於 20 世紀 60 年代末,Windows 誕生於 20 世紀 80 年代中期,Linux 誕生於 20 世紀 90 年代初,可以說 Unix是作業系統中的"老大哥",後來的 Windows 和 Linux 都參考了 Unix

1.5 Linux和Windows區別

目前國內 Linux 更多的是應用於伺服器上,而桌面作業系統更多使用的是 Windows。主要區別如下

比較WINDOWSLINUX
介面 介面統一,外殼程式固定所有 Windows 程式選單幾乎一致,快捷鍵也幾乎相同 圖形介面風格依釋出版不同而不同,可能互不相容。GNU/Linux 的終端機是從 Unix傳承下來,基本命令和操作方法也幾乎一致。
驅動程式 驅動程式豐富,版本更新頻繁。預設安裝程式裡面一般包含有該版本釋出時流行的硬體驅動程式,之後所出的新硬體驅動依賴於硬體廠商提供。對於一些老硬體,如果沒有了原配的驅動有時很難支援。另外,有時硬體廠商未提供所需版本的 Windows 下的驅動,也會比較頭痛。 由志願者開發,由 Linux 核心開發小組釋出,很多硬體廠商基於版權考慮並未提供驅動程式,儘管多數無需手動安裝,但是涉及安裝則相對複雜,使得新使用者面對驅動程式問題(是否存在和安裝方法)會一籌莫展。但是在開源開發模式下,許多老硬體儘管在Windows下很難支援的也容易找到驅動。HP、Intel、AMD 等硬體廠商逐步不同程度支援開源驅動,問題正在得到緩解。
使用 使用比較簡單,容易入門。圖形化介面對沒有計算機背景知識的使用者使用十分有利。 圖形介面使用簡單,容易入門。文字介面,需要學習才能掌握。
學習 系統構造複雜、變化頻繁,且知識、技能淘汰快,深入學習困難。 系統構造簡單、穩定,且知識、技能傳承性好,深入學習相對容易。
軟體 每一種特定功能可能都需要商業軟體的支援,需要購買相應的授權。 大部分軟體都可以自由獲取,同樣功能的軟體選擇較少。

Windows與Linux在其他方面的不同

開放性

所謂的開放性就是Linux 作業系統是開放原始碼系統,可以對其程式進行編輯修改。而微軟的Windows 系統是受微軟版權保護,就是隻能微軟內部進行開發及修改。

檔案格式不同

Windows 作業系統核心是NT,而Linux 是 shell;

另外,windows 硬碟檔案格式是fat32或NTFS,而Linux 需要的檔案格式是ext2或ext3,該作業系統還多一個SWAP格式的交換分割槽

免費與收費

在中國,對個人使用者Windows 和Linux 都是免費的,對公使用者Windows 需要收費,Linux 是免費的。

技術支援

Windows 較普及。Linux 需要深度的Linux 版塊支援。

安全性

Linux 相對Windows 來說安全性更高。

開源

開源就是指對外部開放軟體原始碼。Linux 開源,而Windows並不開源。

使用習慣

Windows 放棄了dos的字元模式,主攻圖形介面,讓桌面系統更易用。Linux 字元模式執行的更好,圖形介面還只是附帶品,可有可無。

軟體與支援

Windows 下可以執行絕大部分軟體、玩99.999%的遊戲、硬體廠商近乎100%的支援。Linux 下可直接執行的軟體數量和win下比起來就是1和99的區別,而且目前選擇Linux 的人基本不會考慮玩遊戲,同時Linux 正期待更多硬體廠商的支援

1.6 Linux發行商和常見發行版

Linux發行版是由個人,自由組織,以及商業機構和志願者組織編寫。它們通常包括了其他的系統軟體和應用軟體,以及一個用來簡化系統初始安裝的安裝工具,和讓軟體安裝升級的整合管理器。大多數系統還包括了像提供GUI介面的XFree86之類的曾經執行於BSD的程式。 一個典型的Linux發行版包括:Linux核心,一些GNU程式庫和工具,命令列shell,圖形介面的桌面環境,如KDE或GNOME,幷包含數千種從辦公套件,編譯器,文字編輯器到科學工具的應用軟體

Linux發行版的某些版本是不需要安裝,只需通過CD或者可啟動的USB儲存裝置就能使用的版本,他們稱為LiveCD。

 

 

 

 

Linux的版本號分為兩部分:核心版本和發行版本

1.Linux的核心版本 核心版本指的是在Linus Torvalds領導下的開發小組開發出的系統核心的版本號,通常,核心版本號的第二位是偶數表示是穩定的版本,如2.6.25;是奇數表示有一些新的東西加入,是不穩定的測試版本,如2.5.6。Linux作業系統的核心就是它的核心,Linus Torvalds和他的小組在不斷地開發和推出新核心。

任務:程式排程、記憶體管理、配置管理虛擬檔案系統、提供網路介面以及支援程式間通訊。像所有軟體一樣,Linux的核心也在不斷升級。

2.Linux的發行版本 一個完整的作業系統不僅僅只有核心,還包括一系列為使用者提供各種服務的外圍程式。外圍程式包括GNU程式庫和工具,命令列shell,圖形介面的X Window系統和相應的桌面環境,如KDE或GNOME,幷包含數千種從辦公套件,編譯器,文字編輯器到科學工具的應用軟體。所以,許多個人、組織和企業,開發了基於GNU/Linux的Linux發行版,他們將Linux系統的核心與外圍應用軟體和文件包裝起來,並提供一些系統安裝介面和系統設定與管理工具, 這樣就構成了一個發行版本。 實際上,Linux的發行版本就是Linux核心再加上外圍的實用程式組成的一個大軟體包而已。相對於作業系統核心版本,發行版本的版本號是隨釋出者的不同而不同,與Linux系統核心的版本號是相對獨立的,例如:RedHat EnterpriseLinux 5.2的作業系統核心是Linux-2.6.18。 Linux的發行版本大體可以分為兩類:

一類是商業公司維護的發行版本

一類是社群組織維護的發行版本,前者以著名的RedHatLinux為代表,後者以Debian為代表

以下為Linux的主流版本:

目前市面上較知名的發行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等

 

以下是主要的發行版本

需要注意的:
下面的內容主要是介紹了下Linux發行家族以及發行版本的一些詳細資訊,雖然我們當前的課程講解的是CentOS,但是其他的一些發行商、主流的發行版本比如Ubuntu、Redhat也需要讓學生多多瞭解下,畢竟這是Linux體系內產品線
注意
下面的文字雖然很多,但是隻要讓學生知道有這麼回事即可
在下面會簡單的總結..

1、Debian 介紹

Debian名字的由來----DebianGNU/Linux是由一個叫做伊恩·默多克(IanMurdock)在1993年發起的,他的名字以Ian開頭,他太太的名字Debra開頭三個字母是Deb。

Debian是社群類Linux的典範,是迄今為止最遵循GNU規範的Linux系統。Debian最早由 Ian Murdock於1993年建立,分為三個版本分支: stable(伺服器版), testing(穩定版) 和unstable(測試版)。

2、Ubuntu介紹

Ubuntu嚴格來說不能算一個獨立的發行版本,Ubuntu是基於Debian的unstable版本加強而來,可以這麼說,Ubuntu就是一個擁有Debian所有的優點,以及自己所加強的優點的近乎完美的 Linux桌面系統。

共分三個版本:

  • 基於Gnome的Ubuntu,

  • 基於KDE的Kubuntu以。

  • 基於Xfc的 Xubuntu。

特點是介面非常友好,容易上手,對硬體的支援非常全面,是最適合做桌面系統的Linux發行版本。穩定性,其實都差不多,難易度嘛,

Ubuntu 預設桌面環境採用 GNOME,一個 Unix和 Linux 主流桌面套件和開發平臺。

Ubuntu的版本和釋出號 Ubuntu的版本號是由該次釋出的年份和月份組成,並未反映其實際版本。我們的首次釋出是在2004年10月,因此該版本為4.10。當前版本(DapperDrake)於2006年6月釋出,因此版本號為6.06 LTS。

3、Redhat

可能這是最著名的Linux版本了,Red Hat Linux已經創造了自己的品牌,越來越多的人聽說過它。Red Hat在1994年創業,當時聘用了全世界500多名員工,他們都致力於開放的原始碼體系。 Red Hat Linux是公共環境中表現上佳的伺服器。它擁有自己的公司,能向使用者提供一套完整的服務,這使得它特別適合在公共網路中使用。這個版本的Linux也使用最新的核心,還擁有大多數人都需要使用的主體軟體包。 Red Hat Linux的安裝過程也十分簡單明瞭。它的圖形安裝過程提供簡易設定伺服器的全部資訊。磁碟分割槽過程可以自動完成,還可以選擇GUI工具完成,即使對於 Linux新手來說這些都非常簡單。選擇軟體包的過程也與其他版本類似;使用者可以選擇軟體包種類或特殊的軟體包。系統執行起來後,使用者可以從Web站點和 Red Hat那裡得到充分的技術支援。我發現Red Hat是一個符合大眾需求的最優版本。在伺服器和桌面系統中它都工作得很好。Red Hat的唯一缺陷是帶有一些不標準的核心補丁,這使得它難於按使用者的需求進行定製。 Red Hat通過論壇和郵件列表提供廣泛的技術支援,它還有自己公司的電話技術支援,後者對要求更高技術支援水平的集團客戶更有吸引力

4、Fedora

Fedora和Redhat這兩個Linux的發行版放聯絡很密切。Redhat 自9.0以後,不再發布桌面版的,而是把這個專案與開源社群合作,於是就有了Fedora 這個 Linux 發行版。Fedora專案是由 Red Hat 贊助,由開源社群與 Red Hat 工程師合作開發的專案統稱。Fedora 的目標,是推動自由和開源軟體更快地進步。

特點: 1、 Fedora 是一個開放的、創新的、前瞻性的作業系統和平臺,基於 Linux。它允許任何人自由地使用、修改和重發布,無論現在還是將來。可執行的體系結構包括x86(即i386),x86_64 和PowerPC! 2、Fedora 可以說是Redhat 桌面版本的延續,只不過是與開源社群合作。

3、Fedora 是一個獨立的inux發行版本的作業系統。

5centos

CentOS(Community ENTerprise Operating System)是來自於Red Hat Enterprise Linux依照開放原始碼規定釋出的原始碼所編譯而成。由於出自同樣的原始碼,因此有些要求高度穩定性的伺服器以CentOS替代商業版的Red Hat Enterprise Linux使用(我會告訴你,以為企業想省錢,運維要靠這個東西來賺錢嘛,國內運維主流是CentOS剩下版本很少)。兩者的不同,在於CentOS並不包含封閉原始碼軟體,CentOS 是一個基於Red Hat Linux 提供的可自由使用原始碼的企業級Linux發行版本。每個版本的CentOS都會獲得十年的支援(通過安全更新方式)。新版本的 CentOS 大約每兩年發行一次,而每個版本的 CentOS 會定期(大概每六個月)更新一次,以便支援新的硬體。這樣,建立一個安全、低維護、穩定、高預測性、高重複性的 Linux 環境

6、Slackware介紹

Slackware 由PatrickVolkerding(帕特里克.沃克登)建立於1992年。算起來應當是歷史最悠久的Linux發行版。儘管如此,Slackware仍然深入人心(大部分都是比較有經驗的 Linux老手)。Slackware穩定、安全,所以仍然有大批的忠實使用者。由於Slackware儘量採用原版的軟體包而不進行任何修改,所以製造新 bug的機率便低了很多。Slackware的版本更新週期較長(大約1年),但是新版本的軟體仍然不間斷的提供給使用者下載。

7、openSUSE介紹

SUSE是德國最著名的Linux發行版,在全世界範圍中也享有較高的聲譽。SUSE自主開發的軟體包管理系統也大受好評。SUSE於2003年年末被Novell收購。SUSE在收購之後的釋出顯得比較混亂,比如9.0版本是收費的,而10.0版本(也許由於各種壓力)又免費釋出。這使得一部分使用者感到困惑,也轉而使用其它發行版本。最近還跟微軟扯到了一起。但是瑕不掩瑜,SUSE仍然是一個非常專業、優秀的發行版。

openSUSE 專案是由Novell公司資助的全球性社群計劃,旨在推進 Linux 的廣泛使用。這個計劃提供免費的openSUSE 作業系統。這裡是一個由普通使用者和開發者共同構成的社群,我們擁有一個共同的目標—創造世界上最好用的 Linux 發行版。openSUSE 是 Novell 公司發行的企業級 Linux 產品的系統基礎。

openSUSE 專案是由Novell 發起的開源社群計劃。 旨在推進 Linux 的廣泛使用。提供了自由簡單的方法來獲得世界上最好用的 Linux 發行版,SUSE Linux。openSUSE 專案為 Linux 開發者和愛好者提供了開始使用 Linux 所需要的一切。

8、中國大陸的Linux發行版

紅旗Linux(RedflagLinux) ,衝浪Linux(Xteam Linux) ,藍點Linux , GNU/Linux,OpenDesktop等等 。

9、 臺灣地區的Linux發行版

鴻奇Linux

目前最著名的發行版本:Debian,ubuntu、OpenSuse(原Suse)、CentOS、fedora等。國內比較著名的紅旗Linux版本

 

對於上面的知識我們做下重點總結

  • redhat:目前,全球最大的linux發行廠商,功能全面、穩定。

    • RedhatIBM 收購!

  • ubuntu:目前,是linux桌面作業系統做的最好的。

  • centos:免費版的redhat,centos 基於 redhat 發行版基礎之上,再重新編譯釋出的版本。

    • 目前 centos 已經被 Redhat 公司收購,但是依然免費

 

1.7 Linux 應用領域

今天各種場合都有使用各種 Linux 發行版,從嵌入式裝置到超級計算機,並且在伺服器領域確定了地位。在企業級開發中,我們通常使用Linux作為我們的伺服器。

比如:伺服器系統Web應用伺服器、資料庫伺服器、介面伺服器、DNS、FTP等等;

嵌入式系統路由器、防火牆、手機、PDA、IP 分享器、交換器、家電用品的微電腦控制器等等,高效能運算、計算密集型應用Linux有強大的運算能力。

目前 Linux 不僅在家庭與企業中使用,並且在政府中也很受歡迎

  • 巴西聯邦政府由於支援 Linux 而世界聞名。

  • 有新聞報導俄羅斯軍隊自己製造的 Linux 釋出版的,做為 G.H.ost 專案已經取得成果。

  • 印度的 Kerala 聯邦計劃在向全聯邦的高中推廣使用 Linux。

  • 中華人民共和國為取得技術獨立,在龍芯處理器中排他性地使用 Linux。

  • 在西班牙的一些地區開發了自己的 Linux 釋出版,並且在政府與教育領域廣泛使用,如 Extremadura 地區的 gnuLinEx 和 Andalusia 地區的 Guadalinex。

  • 葡萄牙同樣使用自己的 Linux 釋出版 Caixa Mágica,用於 Magalh?es 膝上型電腦和 e-escola 政府軟體。

  • 法國和德國同樣開始逐步採用 Linux。

1.8 Linux之CentOS

前面章節介紹了一些Linux的基本知識,前已經對Linux有了一個初步的認識,也知道了在Linux發行版中有各個家族的發行版本;比如比較知名的ubuntu、CentOS,在今天的Linux課程中我們將採用發行版CentOS作為我們Linux課程的講解內容。

CentOS,是基於 Red Hat Linux 提供的可自由使用原始碼的企業級 Linux 發行版本;是一個穩定,可預測,可管理和可複製的免費企業級計算平臺

主要特點:

1.主流: 目前的Linux作業系統主要應用於生產環境,主流企業級Linux系統仍舊是RedHat或者CentOS 2.免費: RedHat 和CentOS差別不大,CentOS是一個基於Red Hat Linux 提供的可自由使用原始碼的企業級Linux發行版本 3.更新方便:CentOS獨有的yum命令支援線上升級,可以即時更新系統,不像RED HAT那樣需要花錢購買支援服務!

我們在當前課程中的環境:

Windows7 , VMware Workstation15.02, CentOS Linux release 7.6.1810

1.9 總結

當前章節主要介紹了Linux發行的主要版本(我們使用的是CentOS Linux release 7.6.1810 )、以及與Unix、Windows系統的區別;主要讓學生了解Linux是基於Unix的以及與Windows一樣,Linux也是作業系統即可。

2 系統與設定命令

在前面的兩個章節中,我們主要介紹了Linux基本知識和虛擬機器的安裝,從當前章節開始,我們一起學習下Linux的基本命令,在當前章節,我們先簡單的學習下一些系統的基本命令,慢慢的由淺入深,在後面的章節中我們將學習其他的命令比如檔案操作、備份壓縮等

2.1 學習命令的原因

命令我們可以理解成在Windows中我們常常為了檢視ip輸入的ipconfig,在Linux中也有很多的命令,比如操作目錄、檔案、網路、磁碟等等命令
  • Linux剛面世時並沒有圖形介面, 所有的操作全靠命令完成, 如 磁碟操作、檔案存取、目錄操作、程式管理、檔案許可權 設定等

  • 在職場中,大量的 伺服器維護工作 都是在 遠端 通過SSH客戶端 來完成的, 並沒有圖形介面, 所有的維護工作都需要通過命令來完成

1576225778294

在職場中, 作為後端程式設計師或者運維, 必須要或多或少的掌握一些Linux常用的終端命令

  • Linux發行版本的命令大概有200多個, 但是常用的命令只有幾十個而已

總結
學習終端命令的技巧:
- 不需要死記硬背, 對於常用命令, 記住語法是關鍵,在用的時候去查下引數選項,有的很常用的命令,用的多自然就記住了
- 不要嘗試一次學會所有的命令, 有些命令是非常不常用的,臨時遇到,就去根據語法找引數選項

2.2 Linux 使用者和使用者組管理

2.2.1 Linux賬號管理

從當前章節開始,我們正式進入CentOS的學習,我們先從簡單的命令開始,比如操作賬號、使用者組、系統管理等。
在實際使用場景中,使用者賬號的管理主要涉及到使用者賬號的新增、修改和刪除操作。
現在,我們就通過命令的方式新增使用者賬號(賬號名字可以自定義,但是是要符合書寫規範)
在操作前,確保我們的SecureCRT成功連線到了虛擬機器.
下面的章節不在贅述SecureCRT,預設已經成功連線。

1) 新增使用者

我們在Windows建立賬號主要是是控制皮膚--使用者賬戶--建立一個新賬戶,這是在Windows建立賬戶的流程,而在Linux中,我們可以通過命令的方式進行建立賬戶

使用者許可權:管理員使用者

useradd 選項 使用者名稱

引數說明:

  • 選項:

    • -c comment 指定一段註釋性描述。

    • -d 目錄 指定使用者主目錄,如果此目錄不存在,則同時使用-m選項,可以建立主目錄。

    • -g 使用者組 指定使用者所屬的使用者組。

    • -G 使用者組,使用者組 指定使用者所屬的附加組。

    • -s Shell檔案 指定使用者的登入Shell。

    • -u 使用者號 指定使用者的使用者號,如果同時有-o選項,則可以重複使用其他使用者的標識號。

  • 使用者名稱:

    指定新賬號的使用者名稱(後續我們可以使用這個使用者名稱進行系統登入)。

新增使用者czbk(傳智播客的首拼)執行

useradd  czbk

我們使用useradd命令建立了一個使用者czbk

useradd 可用來建立使用者帳號。帳號建好之後,再用 passwd 設定帳號的密碼。

執行如下

 

 

 

由上圖我們發現,我們在使用useradd新增使用者的時候,出現了許可權不足,也就是說我們使用使用者itcast沒有建立使用者的許可權。

我們通過管理員賬號root進行建立,首先我們從控制檯中切換到root

su root

 

 

 

在 密碼的地方輸入我們的root密碼【root】即可進入到root使用者下。

我們在root下繼續建立czbk使用者

 

 

 

以下是useradd常用選項

 

 

 

 

2) 使用者口令

引子:
相當於我們在Windows系統中給個使用者更改密碼,只是我們在CentOS中是更改密碼是通過命令完成的。

使用者管理的一項重要內容是使用者口令的管理。使用者賬號剛建立時沒有口令,但是被系統鎖定,無法使用,必須為其指定口令後才可以使用

使用者許可權:管理員使用者

指定和修改使用者口令的Shell命令是passwd。超級使用者可以為自己和其他使用者指定口令,普通使用者只能用它修改自己的口令。命令的格式為:

passwd 選項 使用者名稱

可使用的選項:

  • -l 鎖定口令,即禁用賬號。

  • -u 口令解鎖。

  • -d 使賬號無口令。

  • -f 強迫使用者下次登入時修改口令。

設定當前使用者的口令

passwd czbk

此處我們設定密碼和itcast賬號密碼一致,為【Itheima888】

 

 

 

3) 修改使用者

相當於我們在Windows系統中修改一個使用者,只是我們在CentOS中是修改使用者是通過命令完成的。

usermod 命令通過修改系統帳戶檔案來修改使用者賬戶資訊

修改使用者賬號就是根據實際情況更改使用者的有關屬性,如使用者號、主目錄、使用者組、登入Shell等。

使用者許可權:管理員使用者

修改已有使用者的資訊使用usermod命令,其格式如下:

usermod 選項 使用者名稱

下面命令將使用者czbk使用者名稱修改成czbk2019

usermod -l czbk2019  czbk

 

 

 

以下是usermod常用選項

 

 

 

4) 刪除使用者

相當於我們在Windows系統中刪除一個使用者,只是我們在CentOS中是刪除使用者是通過命令完成的。

假如我們其中一個使用者的賬號不再使用,可以從系統中刪除。刪除使用者賬號就是要將/etc/passwd等系統檔案中的該使用者記錄刪除,必要時還刪除使用者的主目錄。

使用者許可權:管理員使用者

刪除一個已有的使用者賬號使用userdel命令,其格式如下:

userdel 選項 使用者名稱

-f:強制刪除使用者,即使使用者當前已登入;

-r:刪除使用者的同時,刪除與使用者相關的所有檔案

此命令刪除使用者czbk2019

userdel czbk2019

 

 

 

成功刪除使用者czbk2019

以下是userdel常用選項

 

 

 

2.2.2 Linux使用者組

引子:

為了方便使用者管理, 提出了 組 的概念, 如下圖所示

 

 

 

新增一個賬戶,它預設屬於自己(賬戶)的組

比如新建賬戶【張三】,那麼它預設對應的組就是張三

一個使用者可以有一個或者多個組

假如說(如上圖),我們在企業級開發過程中,我們有多個組,其中一個開發組對應三個賬戶,張三、李四、王五、如果就像上面提到的,一個使用者預設對應一個組,那麼三個賬戶張三、李四、王五就有了三個不同的組,如果大家都操做一個檔案,在進行許可權分配的時候,就要對不同的三個組進行授權,顯然這樣是不合理的,因為太過繁瑣。

所以,才有了組(新建組)的概念,我們把張三、李四、王五統一放到【開發組】,在對檔案授權的時候,我們只對【開發組】進行授權由此,這樣的話【張三、李四、王五】都有相等的權利操作了。

1) 增加使用者組

新增一個使用者組(組名可見名知意,符合規範即可),然後將使用者新增到組中

使用者許可權:管理員使用者

groupadd 選項 使用者組

使用的選項有:

  • -g GID 指定新使用者組的組標識號(GID)。

  • -o 一般與-g選項同時使用,表示新使用者組的GID可以與系統已有使用者組的GID相同

新增使用者組czbk-it

groupadd czbk-it

上面的命令向系統中增加了一個新組czbk-it,新組的組標識號是在當前已有的最大組標識號的基礎上加1

以下是groupadd常用選項

 

 

 

2) 修改使用者組

使用者許可權:管理員使用者

groupmod 選項 使用者組

常用的選項有:

  • -g GID 為使用者組指定新的組標識號。

  • -o 與-g選項同時使用,使用者組的新GID可以與系統已有使用者組的GID相同。

  • -n新使用者組 將使用者組的名字改為新名字

groupmod  -n czbk-it-2019  czbk-it

上面的命令將組czbk-it的組名修改為czbk-it-2019。

 

 

 

以下是groupmod常用選項

 

 

 

3) 查詢使用者所屬組

在查詢使用者所屬的使用者組前,我們先增加一個使用者ituser-groups

useradd ituser-groups

 

 

 

要查詢一個使用者屬於哪個使用者組,使用groups命令,其格式如下

groups 使用者名稱

查詢使用者ituser-groups屬於某個使用者組,執行groups命令

groups ituser-groups

 

 

 

由此可見,ituser-groups使用者屬於使用者組ituser-groups(使用者組預設與使用者名稱一樣)

4) 刪除使用者組

使用者許可權:管理員使用者

要刪除一個已有的使用者組,使用groupdel命令,其格式如下

groupdel 使用者組

刪除czbk-it-2019使用者組

groupdel czbk-it-2019

 

 

 

刪除成功

以下是groupdel常用選項

 

 

 

2.2.3 將使用者新增到組

引子:
在上面我們學習如何新增使用者,也學習瞭如何新增使用者組,在當前的小節中,我們新建一個使用者、新建一個使用者組、然後把新建的使用者新增到新的組中
在實際開發過程中,我們通常把多個使用者按照業務需求歸併到統一的一個組中,進行有序管理

1、建立一個新的組,並新增組ID(需要切換到root使用者)

groupadd -g 8888 itbj2020group

執行效果如下

 

 

 

2、建立3個使用者(需要切換到root使用者)

 useradd  itbeijinguser1
 useradd  itbeijinguser2
 useradd  itbeijinguser3

3、將上面三個使用者新增到組itbj2020group

我們通過passwd命令將三個使用者新增到組

什麼是gpasswd:

gpasswd 是 Linux 下工作組檔案 /etc/group 和 /etc/gshadow 管理工具,用於將一個使用者新增到組或者從組中刪除。

語法

gpasswd [可選項] 組名

將上面的三個使用者使用gpasswd新增到組(需要切換到root使用者)

gpasswd -a itbeijinguser1 itbj2020group
gpasswd -a itbeijinguser2 itbj2020group
gpasswd -a itbeijinguser3 itbj2020group

執行如下

 

 

 

檢視使用者組下所有使用者(所有使用者)

注意

此處的grep命令我們將在檔案管理章節詳細講解,這裡先使用它檢視下效果

grep 'itbj2020group' /etc/group

執行效果如下(或者直接開啟/etc/group檔案都可以)

 

 

 

由上圖可知:三個使用者全部都加入到了itbj2020group組。

2.3 系統管理

系統管理,說的就是我們的CentOS系統,它不同於Windwos,CentOS是字元介面,我們需要通過命令進行操作,在當前章節,我們先從基本命令學起,比如建立使用者、設定密碼、修改使用者以及使用者組的相關操作。也為我們後面的章節打下基礎

2.3.1 日期管理

當前日期如果通過date進行設定,在系統重啟後不會儲存date的設定,常用的只是通過date命令檢視日期

date 可以用來顯示或設定系統的日期與時間

使用者許可權:所有使用者

語法如下:

date [引數選項]

引數

-d<字串>:顯示字串所指的日期與時間。字串前後必須加上雙引號; -s<字串>:根據字串來設定日期與時間。字串前後必須加上雙引號; -u:顯示GMT; --help:線上幫助; --version:顯示版本資訊

1、設定時間

用 -s選項可以設定系統時間,如下:

date -s "2019-12-11 16:15:00"

 

 

 

2、顯示時間

date

 

 

 

(1)UTC

協調世界時,又稱世界統一時間、世界標準時間、國際協調時間。由於英文(CUT)和法文(TUC)的縮寫不同,作為妥協,簡稱UTC。。

(2)GMT

格林尼治 平太陽時間,是指格林尼治所在地的標準時間,也是表示地球自轉速率的一種形式

外文名:Universal Time

其他外文名G.M.T.(Greenwich Mean Time)

(3)CST

北京時間 (中國國家標準時間) 北京時間是中國採用國際時區東八時區的區時作為標準時間 北京時間並不是北京(東經116.4°)的地方時間,而是東經120°的地方時間,故東經120度地方時比北京的地方時早約14分半鐘。因為北京處於國際時區劃分中的東八區,同格林尼治時間(世界時)整整相差8小時(即北京時間=世界時+8小時),故命名為“北京時間”。東八區包括的範圍從東經112.5°到東經127.5°,以東經120°為中心線,東西各延伸7.5°,總寬度為15°的區域。 而中國幅員遼闊,東西相跨5個時區(即東五區、東六區、東七區、東八區、東九區5個時區)授時臺必須建在地理中心地帶,從而也就產生了長短波授。“北京時間”與“北京當地時間”是兩個概念, “北京時間”的發播不在北京,而在陝西蒲城(處於東七區)

(4)東八區

東八區(UTC/GMT+08:00)是比世界協調時間(UTC)/格林尼治時間(GMT)快8小時的時區,理論上的位置是位於東經112.5度至127.5度之間,是東盟標準的其中一個候選時區。當格林尼治標準時間為0:00時,東八區的標準時間為08:00

總結:
上面提到了很多知識:即UTC/GMT/CST/東八區
總結一下就是,北京時間(中國國家標準時間CST)採用東八區區時,即:
協調世界時(UTC)+8  /   格林尼治時間(GMT)+8
也就是說+8後的時間才是北京時間

2.3.2 顯示使用者

logname命令用於顯示使用者名稱稱。

執行logname指令,它會顯示目前使用者的名稱

語法為如下:

logname [--help][--version]

引數

  • --help  線上幫助。

  • --vesion  顯示版本資訊。

顯示登入賬號的資訊

logname

 

 

 

2.3.3 su切換賬戶

引子:
比如我們在新增使用者、修改使用者或者操作使用者組的時候常常需要切換到管理員賬戶,這個時候,我們就可以使用su進行快速切換

su命令用於變更為其他使用者的身份,除 root 外,需要鍵入該使用者的密碼。

使用許可權:所有使用者。

語法如下:

su 

變更帳號為 root 並在執行 ls 指令後退出返回原使用者

 su -c ls root

 

 

 

切換到root

su root

 

 

 

這樣的話,我們就進入到了root使用者下。

2.3.4 id命令

我們如果需要檢視當前賬號詳細資訊的時候,比如檢視它的使用者id、群組id以及所屬組的時候,我們就可以使用id命令進行檢視

id命令用於顯示使用者的ID,以及所屬群組的ID。

id會顯示使用者以及所屬群組的實際與有效ID。若兩個ID相同,則僅顯示實際ID。若僅指定使用者名稱稱,則顯示目前使用者的ID。

使用者許可權:所有使用者

語法

id [-gGnru][--help][--version][使用者名稱稱]

引數說明:

  • -g或--group  顯示使用者所屬群組的ID。

  • -G或--groups  顯示使用者所屬附加群組的ID。

  • -n或--name  顯示使用者,所屬群組或附加群組的名稱。

  • -r或--real  顯示實際ID。

  • -u或--user  顯示使用者ID。

  • -help  顯示幫助。

  • -version  顯示版本資訊。

顯示當前使用者資訊

id

執行效果如下

 

 

 

總結

id命令引數雖然很多

但是常用的也就是id命令,不帶引數的

主要看他的uid和組資訊

2.3.5 sudo執行

比如我們使用普通使用者操作使用者或者操作使用者組、以及修改網路卡配置檔案的時候,需要切換到root使用者才操作,此時我們可以使用sudo命令提高普通使用者的操作許可權,以達到操作目的

sudo:控制使用者對系統命令的使用許可權,root允許的操作。

通過sudo可以提高普通使用者的操作許可權

使用者許可權:普通使用者

語法如下:

sudo -V sudo -h sudo -l sudo -v sudo -k sudo -s sudo -H sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s sudo command

引數說明

  • -V 顯示版本編號

  • -h 會顯示版本編號及指令的使用方式說明

  • -l 顯示出自己(執行 sudo 的使用者)的許可權

  • -v 因為 sudo 在第一次執行時或是在 N 分鐘內沒有執行(N 預設為五)會問密碼,這個引數是重新做一次確認,如果超過 N 分鐘,也會問密碼

  • -k 將會強迫使用者在下一次執行 sudo 時問密碼(不論有沒有超過 N 分鐘)

  • -b 將要執行的指令放在背景執行

  • -p prompt 可以更改問密碼的提示語,其中 %u 會代換為使用者的帳號名稱, %h 會顯示主機名稱

  • -u username/#uid 不加此引數,代表要以 root 的身份執行指令,而加了此引數,可以以 username 的身份執行指令(#uid 為該 username 的使用者號碼)

  • -s 執行環境變數中的 SHELL 所指定的 shell ,或是 /etc/passwd 裡所指定的 shell

  • -H 將環境變數中的 HOME 指定為要變更身份的使用者HOME目錄(如不加 -u 引數就是系統管理者 root )

  • command 要以系統管理者身份(或以 -u 更改為其他人)執行的指令

sudo命令使用

sudo ls

 

 

 

指定root使用者執行指令

sudo -u root ls -l

 

 

 

修改網路卡配置檔案

比如,在下面的例子中,我們使用普通使用者修改網路卡的配置檔案,在進行儲存的時候,提示我們【無法開啟並寫入檔案】,那麼此時,我們可以通過sudo命令來提升自己的寫入許可權

執行:

 vi /etc/sysconfig/network-scripts/ifcfg-ens33 

執行效果如下(儲存)

 

 

 

然後點選回車

 

 

 

那麼我們在修改上面的 命令,使用sudo進行修改

sudo   vi /etc/sysconfig/network-scripts/ifcfg-ens33 

執行效果如下(鍵入itcast密碼)

 

 

 

執行儲存

 

 

 

我們發現此時就不在報錯了

2.3.6 top命令

在企業級開發中,開發人員(運維人員也會經常使用)常常為了檢視伺服器上執行的程式佔用的CPU情況以及佔用記憶體情況,目的就是檢測我們的程式是否在正常範圍內執行

top命令用於實時顯示 process 的動態。

使用許可權:所有使用者。

顯示程式資訊

top

執行效果如下

 

 

 

各程式(任務)的狀態監控屬性解釋說明: PID — 程式id USER — 程式所有者 PR — 程式優先順序 NI — nice值。負值表示高優先順序,正值表示低優先順序 VIRT — 程式使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES RES — 程式使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA SHR — 共享記憶體大小,單位kb S — 程式狀態。D=不可中斷的睡眠狀態 R=執行 S=睡眠 T=跟蹤/停止 Z=殭屍程式 %CPU — 上次更新到現在的CPU時間佔用百分比 %MEM — 程式使用的實體記憶體百分比 TIME+ — 程式使用的CPU時間總計,單位1/100秒 COMMAND — 程式名稱(命令名/命令列)

顯示完整命令,與top命令不同的就是command屬性像是進行了命令補全

top -c

執行效果如下

 

 

 

顯示指定的程式資訊,以下顯示程式號為6972的程式資訊,CPU、記憶體佔用率等

 top -p 6972

執行效果如下

 

 

 

 

top命令的用法很多

但是常用的就是top(不帶引數),有的時候,在程式比較多的時候,我們常常記住程式的pid,然後通過top -p pid進行檢視

也就是說,top+ top -p是經常被用到的

2.3.7 ps命令

ps命令類似於我們在Windows中通過工作管理員檢視程式資訊

Linux ps命令用於顯示當前程式 (process) 的狀態資訊

使用者許可權:所有使用者

語法如下:

ps 

顯示程式資訊

ps -A 

顯示指定使用者資訊

 ps -u itcast

顯示所有程式資訊

ps -ef 

2.3.8 kill命令

引子:
前面,我們剛剛學習完了Windows上開發,比如,我們經常遇到的要給問題就是,我們需要經常的啟動或者重啟tomcat,有的時候會報埠衝突,這個時候,我們可能就去Windows的工作管理員中去結束這個程式
那麼在Linux中我們可以通過kill命令來實現Windwos上手工結束程式的操作

Linux kill命令用於刪除執行中的程式或工作(可強制中斷)

使用者許可權:所有使用者

語法如下:

kill [-s <資訊名稱或編號>][程式] 或 kill [-l <資訊編號>]

引數說明

  • -l <資訊編號>  若不加<資訊編號>選項,則-l引數會列出全部的資訊名稱。

  • -s <資訊名稱或編號>  指定要送出的資訊。

  • [程式]  [程式]可以是程式的PID或是PGID,也可以是工作編號。

殺死一個程式

 kill 15642

強制殺死程式

kill -KILL 15642

徹底殺死程式

kill -9 15642

殺死指定使用者所有程式

1.方法一 過濾出itcast使用者程式

kill -9 $(ps -ef | grep itcast) 

2.方法二,直接殺死

kill -u itcast

注意

上面列舉了很多kill程式的命令

但是我們我們常用的就是kill -9命令,我們常常找到程式的pid

然後通過kill -9進行殺死程式

2.3.9 關機命令

shutdown命令可以用來進行關閉系統,並且在關機以前傳送訊息給所有使用者正在執行的程式,shutdown 也可以用來重開機

使用者許可權:管理員使用者

語法如下:

shutdown [-t seconds] [-rkhncfF] time [message]

引數說明

  • -t seconds : 設定在幾秒鐘之後進行關機程式。

  • -k : 並不會真的關機,只是將警告訊息傳送給所有使用者。

  • -r : 關機後重新開機。

  • -h : 關機後停機。

  • -n : 不採用正常程式來關機,用強迫的方式殺掉所有執行中的程式後自行關機。

  • -c : 取消目前已經進行中的關機動作。

  • -f : 關機時,不做 fcsk 動作(檢查 Linux 檔系統)。

  • -F : 關機時,強迫進行 fsck 動作。

  • time : 設定關機的時間。

  • message : 傳送給所有使用者的警告訊息。

立即關機

shutdown -h now
或者
shudown

指定1分鐘後關機,1分鐘關機並顯示警告資訊

shutdown +1 “System will shutdown after 1 minutes” 

 

 

 

指定1分鐘後重啟,併發出警告資訊

shutdown –r +1 “1分鐘後關機重啟”

 

 

 

2.3.10 重啟命令

reboot命令用於用來重新啟動計算機

使用者許可權:管理員、普通(需要驗證)使用者

語法如下:

reboot [-n] [-w] [-d] [-f] [-i]

引數

  • -n : 在重開機前不做將記憶體資料寫回硬碟的動作

  • -w : 並不會真的重開機,只是把記錄寫到 /var/log/wtmp 檔案裡

  • -d : 不把記錄寫到 /var/log/wtmp 檔案裡(-n 這個引數包含了 -d)

  • -f : 強迫重開機,不呼叫 shutdown 這個指令

  • -i : 在重開機之前先把所有網路相關的裝置先停止

開始重新啟動

reboot

重啟效果如下

 

 

 

此時我們的虛擬機器正在重啟(別忘記使用root使用者執行)

2.3.11 who命令

在企業級開發過程中,我們使用who命令的時候常常需要快速重啟伺服器,在重啟之前需要檢測下有沒有終端在連線(處理程式),如果有,可能就不會重啟(會私下詢問何時弄完,弄完後在重啟),如果沒有其他人連線,將執行快速重啟

who命令用於顯示系統中有哪些使用者正在上面,顯示的資料包含了使用者 ID、使用的終端機、從哪邊連上來的、上線時間、呆滯時間、CPU 使用量、動作等等

使用者許可權:所有使用者都可使用。

語法如下:

who - [husfV] [user]

引數說明

  • -H 或 --heading:顯示各欄位的標題資訊列;

  • -i 或 -u 或 --idle:顯示閒置時間,若該使用者在前一分鐘之內有進行任何動作,將標示成"."號,如果該使用者已超過24小時沒有任何動作,則標示出"old"字串;

  • -m:此引數的效果和指定"am i"字串相同;

  • -q 或--count:只顯示登入系統的帳號名稱和總人數;

  • -s:此引數將忽略不予處理,僅負責解決who指令其他版本的相容性問題;

  • -w 或-T或--mesg或--message或--writable:顯示使用者的資訊狀態列;

  • --help:線上幫助;

  • --version:顯示版本資訊

顯示當前登入系統的使用者

who

 

 

 

顯示明細(標題)資訊

who -H

 

 

 

由上圖可知,截止到現在只有itcast線上。

2.3.12 timedatectl命令

引子:
timedatectl是用於控制系統時間和日期。可以用來查詢和更改系統時鐘於設定,同時可以設定和修改時區資訊。

在實際開發過程中,系統時間的顯示會和實際出現不同步;我們一般為了校正伺服器時間、時區的時候會使用timedatectl命令

使用者許可權:所有使用者都可使用,設定時間需要管理員,下面會標註。

幾個常見的概念,進行總結如下:

 

 

 

顯示系統的當前時間和日期,使用命令列中的timedatectl命令

timedatectl status

執行效果如下

 

 

 

在上面的示例中,分別顯示時區、CST時間和UTC時間,其中,RTC time就是硬體時鐘的時間,硬體時間預設為UTC。

檢視當前時區

timedatectl | grep Time
或者
timedatectl 

執行效果如下

 

 

 

上圖顯示中國時區

檢視所有可用的時區

timedatectl list-timezones

執行效果如下(下面資料沒有截全)

 

 

 

設定本地時區

timedatectl set-timezone "Asia/Shanghai"

執行效果如下

 

 

 

禁用時間同步(使用管理員賬戶)

timedatectl set-ntp false
在執行
timedatectl set-time "2019-03-11 20:45:00"

執行效果如下

 

 

 

注意: 如果ntp時間同步為true時無法修改時間設定,下面馬上介紹

開啟ntp

timedatectl set-ntp true
在執行
timedatectl set-time "2019-03-11 20:45:00"

執行效果如下(ntp時間同步為true時無法修改時間設定)

報錯資訊 如下

 

 

 

啟用時間同步

NTP即Network Time Protocol(網路時間協議),是一個網際網路協議,用於同步計算機之間的系統時鐘。timedatectl實用程式可以自動同步你的Linux系統時鐘到使用NTP的遠端伺服器。

要開始自動時間同步到遠端NTP伺服器,在終端鍵入以下命令。

timedatectl set-ntp true

比如,在上面我們使用timedatectl set-time "2019-03-11 20:45:00",如下圖

 

 

 

此時我們執行timedatectl set-ntp true,發現時間正常同步過來了如下圖

 

 

 

要禁用NTP時間同步,在終端鍵入以下命令

timedatectl set-ntp false

執行上面的 命令即可關閉ntp

總結

在實際使用過程中

我們經常使用timedatectl進行時區、CST、UTC的設定

 

2.3.13 clear命令

clear命令用於清除螢幕

使用者許可權:所有使用者都可使用。

語法

clear

執行clear前

 

 

 

執行clear後

 

 

 

通過執行clear命令,就可以把緩衝區的命令全部清理乾淨了

2.3.14 exit命令

exit命令用於退出目前的shell。

執行exit可使shell以指定的狀態值退出。若不設定狀態值引數,則shell以預設值退出。狀態值0代表執行成功,其他值代表執行失敗。exit也可用在script,離開正在執行的script,回到shell。

退出碼(exit status,或exit code)的約定:

0表示成功(Zero - Success)

非0表示失敗(Non-Zero  - Failure)

2表示用法不當(Incorrect Usage)

127表示命令沒有找到(Command Not Found)

126表示不是可執行的(Not an executable)

>=128 訊號產生

語法如下

exit [狀態值]

退出終端

# exit

exit會被經常在shell中使用

我們在明天的課程【綜合案例】中會使用到exit

2.4 總結

使用者賬號管理和使用者組是我們在實際使用過程中常用的命令,學習完建立賬號、建立組後,需要通過gpasswd命令將使用者新增到組,這也是我們學習的最終目的

系統管理的常用命令都是在開發過程中經常使用到的

3 Linux目錄管理

注意:
在下面的講解中,每個命令都有很多的引數說明(選項),我們只講其中的幾個,關鍵是讓學生掌握命令的語法;學生學習完語法後,就可以自己按照引數書寫各種命令,這也是我們最終的目的。常用命令,我們在企業級開發過程中,經常書寫的命令。會非常被容易記住,不常用的命令,只要我們學習完了語法之後,在去查詢引數手冊,會非常容易的解決我們的問題,所以,每個命令不是建立在死記硬背的基礎上的,要理解語法+查詢引數=解決問題

3.1 Linux 檔案與目錄管理

在Linux系統中,所有的的目錄結構為樹狀結構,最頂級的目錄為根目錄 /。
在實際開發過程中,檔案的操作是非常頻繁也是非常重要的
下面的章節我們將學習下Linux系統所有的系統目錄和檔案通過命令是如何進行管理的 

3.1.1 目錄常用命令

  • ls: 列出目錄

  • cd: 切換目錄

  • pwd: 顯示目前的目錄

  • mkdir:建立一個新的目錄

  • rmdir:刪除一個空的目錄

  • cp: 複製檔案或目錄

  • rm: 移除檔案或目錄

  • mv: 移動檔案與目錄或修改檔案與目錄的名稱

自動補全

  • 在敲出 檔案/ 目錄 / 命令 的前幾個字母之後, 按下 tab

  • 如果還存在其他 檔案 / 目錄 / 命令, 再按一下tab鍵, 系統會提示可能存在的命令

1) ls (列出目錄)

ls命令相當於我們在Windows系統中開啟磁碟、或者開啟資料夾看到的目錄以及檔案的明細,如下圖

【檢視磁碟下的目錄與檔案】

 

 

 

【檢視資料夾下的目錄與檔案】

 

 

 

 

注意:在Linux系統當中, ls 命令算是比較常用的命令

使用者許可權:所有使用者都可使用。

語法如下:

ls [選項]  目錄名稱

選項與引數:

  • -a :全部的檔案,連同隱藏檔( 開頭為 . 的檔案) 一起列出來(常用)

  • -d :僅列出目錄本身,而不是列出目錄內的檔案資料(常用)

  • -l :長資料串列出,包含檔案的屬性與許可權等等資料;(常用)

將根目錄下的所有檔案列出來(含屬性與隱藏檔)

 ls -al ~

執行效果如下

 

 

 

 ls -l

 

 

 

ls -l 可以檢視資料夾下檔案的詳細資訊, 從左到右 依次是:

  • 許可權(A區域), 第一個字元如果是 d 表示目錄

  • 硬連結數(B區域), 通俗的講就是有多少種方式, 可以訪問當前目錄和檔案

  • 屬主(C區域), 檔案是所有者、或是叫做屬主

  • 屬組(D區域), 檔案屬於哪個組

  • 大小(E區域):檔案大小

  • 時間(F區域):最後一次訪問時間

  • 名稱(G區域):檔案的名稱

ls

 

 

 

總結
以上三種是經常被使用到的命令
它們之間的區別是
ls  顯示不隱藏的檔案與資料夾
ls -l 顯示不隱藏的檔案與資料夾的詳細資訊
ls -al   顯示所有檔案與資料夾的詳細資訊

2) pwd顯示當前目錄

執行pwd命令相當於我們在Windows系統路徑導航欄中檢視到的當前瀏覽位置資訊

如下圖

 

 

 

 

pwd 是 Print Working Directory 的縮寫,也就是顯示目前所在當前目錄的命令。

使用者許可權:所有使用者都可使用。

檢視當前所在目錄

pwd -P

執行效果如下

 

 

 

3) cd (切換目錄)

Linux的cd切換目錄,相當於我們在Windows中通過滑鼠或者快捷鍵點開不同的目錄

注意:在Linux系統當中, cd 命令算是比較常用的命令

cd是Change Directory的縮寫,這是用來變換工作目錄的命令

使用者許可權:所有使用者都可使用。

語法如下:

 cd [相對路徑或絕對路徑]

在正式學習cd命令前面,我們通過下面一個座點陣圖的形式講解下相對路徑和絕對路徑是怎麼表現的。

 

 

 

 

 

  • 絕對路徑: 路徑的寫法,由根目錄 / 寫起,例如: /usr/share/doc 這個目錄。

  • 相對路徑: 路徑的寫法,不是由 / 寫起,例如由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成: cd ../man 這就是相對路徑的寫法啦!

1、使用相對路徑定位目標

  • 特徵: 相對路徑 輸入路徑時, 最前面不是以 "/" 開始的, 表示相對 當前目錄 所在的位置

  • 缺點: 參照工作目錄 發生變化 相對路徑也要發生變化

需求1: 當前工作目錄是 /usr, 使用相對路徑 切換到 /usr/tmp 目錄下 

需求2: 當前工作目錄是 /root, 使用相對路徑 切換到 /usr/tmp 目錄下 

 

 

 

執行效果如下

注意:
cd ~ 表示回到根目錄

 

 

 

2、使用絕對路徑定位目標

  • 特徵: 絕對路徑 在輸入路徑時, 最前面是以 / 開始的, 表示 從 根目錄 開始的具體目錄位置

  • 優點: 定位準確, 不會因為 工作目錄變化 而變化

需求1: 當前工作目錄是 /usr, 使用絕對路徑 切換到 /usr/tmp 目錄下 

需求2: 當前工作目錄是 /root, 使用絕對路徑 切換到 /usr/tmp 目錄下 

 

 

 

執行效果如下

 

 

 

總結

  • 相對路徑 在輸入路徑時, 最前面不是以 / 開始的 , 表示相對 當前目錄 所在的目錄位置

  • 絕對路徑 在輸入路徑時, 最前面是以 / 開始的, 表示 從 根目錄 開始的具體目錄位置

 

4) mkdir(建立目錄)

引子:
Linux的mkdir命令相當於我們在Windows中通過滑鼠或者快捷鍵新建資料夾

mkdir命令用於建立名稱為 dirName 之子目錄

使用許可權:於目前目錄有適當許可權的所有使用者

語法

mkdir [-p] dirName

引數說明:

  • -p 確保目錄名稱存在,不存在的就建一個

建立一個名為jinyanlong 的子目錄

mkdir jinyanlong

執行效果如下

 

 

 

檢視新建的 檔案

 

 

 

在工作目錄下的 aaa目錄中,建立一個名為 bbb的子目錄。 若 aaa目錄原本不存在,則建立一個。(注:本例若不加 -p,且原本 aaa目錄不存在,則產生錯誤。)

mkdir -p aaa/bbb

執行效果如下

這裡為了顯示更直觀,我們使用了tree命令

後面在講解到yum的時候,會詳細講解

此處先使用

 

 

 

由上圖我們發現,aaa目錄被強制建立,裡面包含了bbb檔案。

5) rmdir(刪空目錄)

Linux的rmdir命令相當於我們在Windows中通過滑鼠或者快捷鍵刪除資料夾。
稍微有點不同的就是在Linux中刪除子目錄的時候,如果主目錄下沒有了目錄以及檔案,會連同主目錄同時刪除了(需要寫Linux帶有P的引數)

rmdir命令刪除空的目錄

使用許可權:於目前目錄有適當許可權的所有使用者。

語法

rmdir [-p] dirName

引數

  • -p 是當子目錄被刪除後使它也成為空目錄的話,則順便一併刪除。

將工作目錄下,名為 jinyanlong 的子目錄刪除 :

rmdir jinyanlong

在工作目錄下的 aaa目錄中,刪除名為 bbb的子目錄。若 bbb刪除後,aaa目錄成為空目錄,則 aaa同時也會被刪除

rmdir  -p aaa/bbb

總結:

rmdir -p aaa/bbb也就是說

在刪除bbb目錄完成後,發現aaa目錄也是空目錄了,在刪除完bbb後aaa也同時被刪除了。

6) cp(檔案複製)

Linux的cp命令相當於我們在Windows中通過滑鼠或者快捷鍵複製檔案或者目錄

cp命令主要用於複製檔案或目錄。

使用許可權:於目前目錄有適當許可權的所有使用者

語法

cp [options] source dest

cp [options] source... directory

引數說明:

  • -a:此選項通常在複製目錄時使用,它保留連結、檔案屬性,並複製目錄下的所有內容。其作用等於dpR引數組合。

  • -d:複製時保留連結。這裡所說的連結相當於Windows系統中的快捷方式。

  • -f:覆蓋已經存在的目標檔案而不給出提示。

  • -i:與-f選項相反,在覆蓋目標檔案之前給出提示,要求使用者確認是否覆蓋,回答"y"時目標檔案將被覆蓋。

  • -p:除複製檔案的內容外,還把修改時間和訪問許可權也複製到新檔案中。

  • -r/R:若給出的原始檔是一個目錄檔案,此時將複製該目錄下所有的子目錄和檔案。

  • -l:不復制檔案,只是生成連結檔案。

我們將當前目錄"aaa/"下的所有目錄以及檔案複製到新目錄"ccc"下,輸入如下命令:

1、資料準備

建立aaa目錄並且aaa下包含bbb目錄

mkdir -p aaa/bbb
mkdir -p ccc

執行效果如下

 

 

 

aaa目錄下有bbb

ccc下面沒有目錄和檔案

2、執行復制

cp –r aaa/*  ccc  

執行效果如下

我們將aaa下面的所有檔案、目錄複製到了目錄c下面

 

 

 

總結:

使用者使用該指令複製目錄時,必須使用引數"-r"或者"-R"。

如果不加引數"-r"或者"-R",只複製檔案,而略過目錄

7) rm(刪除目錄)

Linux的rm命令相當於我們在Windows中通過滑鼠或者快捷鍵刪除檔案或者目錄

rm命令用於刪除一個檔案或者目錄。

使用許可權:於目前目錄有適當許可權的所有使用者

語法

rm [options] name...

引數:

  • -i 刪除前逐一詢問確認。

  • -f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。

  • -r 將目錄及以下之檔案亦逐一刪除。

如果我們要刪除檔案可以直接使用rm命令,若刪除目錄則必須配合選項"-r",例如:

 

 

 

rm -r  ccc

執行刪除,如下圖

 

 

 

注意

檔案一旦通過rm命令刪除,則無法恢復,所以必須格外小心地使用該命令

如果刪除檔案(比如.sh 、.txt)

直接使用rm name.txt

8) mv(移動檔案)

Linux的mv命令相當於我們在Windows中通過滑鼠或者快捷鍵剪下(+重新命名)+貼上檔案或者目錄

mv 命令用來為檔案或目錄改名、或將檔案或目錄移入其它位置

語法

mv [options] source dest
mv [options] source... directory

引數說明:

  • -i: 若指定目錄已有同名檔案,則先詢問是否覆蓋舊檔案;

  • -f: 在 mv 操作要覆蓋某已有的目標檔案時不給任何指示;

 

 

 

將檔案 aaa 更名為 bbb :

 

 

 

1、建立aaa目錄、
mkdir  aaa
2、開始重新命名
mv aaa bbb

執行後

 

 

 

將ccc目錄放入ddd目錄中。

注意,如果ddd目錄不存在,則該命令將ccc改名為ddd。

建立ccc
mkdir ccc

 

 

 

開始移動
mv ccc/ ddd 

 

 

 

由上圖我們發現,由於ddd目錄不存在,所以在mv的時候將ccc目錄改名為了ddd。

3.2 Linux 檔案基本屬性

在Wndows系統中,我們可以選中一個檔案,右鍵屬性,可以檢視到這個檔案的檔案型別(基本資訊),以及檔案的許可權資訊,在Linux中,它是通過不同字元的排序順序來表示檔案的型別以及許可權所屬資訊的。

Linux系統是一種典型的多使用者系統,不同的使用者處於不同的地位,擁有不同的許可權。為了保護系統的安全性,Linux系統對不同的使用者訪問同一檔案(包括目錄檔案)的許可權做了不同的規定。

下面我們就一起學習下Linux系統不同許可權的檔案和目錄在怎麼表示的

在Linux中我們可以使用ll或者ls –l命令來顯示一個檔案的屬性以及檔案所屬的使用者和組,如:

ls -l

 

 

 

例項中,bin檔案的第一個屬性用"d"表示。"d"在Linux中代表該檔案是一個目錄檔案。

在Linux中第一個字元代表這個檔案是目錄、檔案或連結檔案等等。

  • 當為[ d ]則是目錄

  • 當為[ - ]則是檔案;

  • 若是[ l ]則表示為連結文件(link file);

  • 若是[ b ]則表示為裝置檔案裡面的可供儲存的介面裝置(可隨機存取裝置);

  • 若是[ c ]則表示為裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)。

接下來的字元中,以三個為一組,且均為『rwx』 的三個引數的組合。其中,[ r ]代表可讀(read)、[ w ]代表可寫(write)、[ x ]代表可執行(execute)。 要注意的是,這三個許可權的位置不會改變,如果沒有許可權,就會出現減號[ - ]而已。

每個檔案的屬性由左邊第一部分的10個字元來確定(如下圖)。

 

 

 

從左至右用0-9這些數字來表示。

第0位確定檔案型別,第1-3位確定屬主(該檔案的所有者)擁有該檔案的許可權。

第4-6位確定屬組(所有者的同組使用者)擁有該檔案的許可權,第7-9位確定其他使用者擁有該檔案的許可權。

 

其中,第1、4、7位表示讀許可權,如果用"r"字元表示,則有讀許可權,如果用"-"字元表示,則沒有讀許可權;

第2、5、8位表示寫許可權,如果用"w"字元表示,則有寫許可權,如果用"-"字元表示沒有寫許可權;第3、6、9位表示可執行許可權,如果用"x"字元表示,則有執行許可權,如果用"-"字元表示,則沒有執行許可權。

3.3 Linux檔案屬主和屬組

引子:
對於一個檔案來說,它都有一個特定的所有者,也就是對該檔案具有所有權的使用者。
也就是所謂的屬主,它屬於哪個使用者的意思。
除了屬主,還有屬組,也就是說,這個檔案是屬於哪個組的(使用者所屬的組)。
檔案的【屬主】有一套【讀寫執行許可權rwx】
檔案的【屬組】有一套【讀寫執行許可權rwx】
還有它許可權,下面我們在介紹

 

 

 

在以上例項中,aaa檔案是一個目錄檔案,屬主和屬組都為 itcast,屬主有可讀、可寫、可執行的許可權(rwx);與屬主同組的其他使用者有可讀可寫和可執行的許可權(rwx);其他使用者也有可讀和可執行的許可權(r-x)。

3.3.1 chgrp更改屬組

實際開發中我們經常會建立新建目錄和檔案,一般情況下,通過命令進行新建,
在建立完成後,使用不同的使用者訪問,可能就會出現報錯,無法訪問等等問題。
然後經過一番這查詢,發現該有的檔案都在,大小寫也沒問題,路徑也沒問題
其實並不是這些問題。而是許可權問題導致我們無法訪問!是因為一個檔案預設隸屬於一個屬組,而使用其他使用者訪問這個檔案肯定無法訪問(因為訪問使用者所屬的組和檔案所在的不是同一個組)
那麼怎麼可以正常訪問呢?其實就是通過更改使用者組(使用者組、檔案組)來解決這些問題

chgrp命令用於變更檔案或目錄的所屬群組。

檔案或目錄許可權的的擁有者由所屬群組來管理。您可以使用chgrp指令去變更檔案與目錄的所屬群組,設定方式採用群組名稱或群組識別碼皆可

為了方便初學者記憶,可以將 chgrp 理解為是 "change group" 的縮寫

語法如下

chgrp [-cfhRv][--help][--version][所屬群組][檔案或目錄...] 或 chgrp [-cfhRv][--help][--reference=<參考檔案或目錄>][--version][檔案或目錄...]

改變檔案的群組屬性

我們通過root使用者進入(如下圖),上接上面的例子

我們的aaa檔案的屬主和屬組都屬於itcast(如下圖)

 

 

 

我們現在通過chgrp命令將檔案aaa的屬組更改成root(其他也可以)

chgrp -v root aaa

執行效果如下

 

 

 

我們通過下面的命令查詢檔案aaa的屬組是否發生了變化,執行

ls -l

 

由上圖我們發現,檔案aaa的屬組由itcast變成了root

這樣的話,檔案的屬組就發生了變化。

 

 

 

 

3.3.2 chown更改屬主和屬組**

我們為了讓一些使用者有許可權檢視某一文件,比如是一個時間表,而編寫時間表的人要具有讀寫執行的許可權(屬主)
我們想讓一些使用者知道這個時間表的內容,而不讓他們修改,所以我們可以把這些使用者都劃到一個組(屬組),然後來修改這個檔案的許可權,讓使用者組可讀,這樣使用者組下面的每個使用者都是可讀的

Linux是多工作業系統,所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來說,這個指令只有是由系統管理者(root)所使用,一般使用者沒有許可權可以改變別人的檔案擁有者,也沒有許可權可以自己的檔案擁有者改設為別人。只有系統管理者(root)才有這樣的許可權

使用許可權 : 管理員賬戶

語法如下

chown [–R] 屬主名 檔名
chown [-R] 屬主名:屬組名 檔名

我們通過root使用者進入(如下圖),上接上面的例子

我們的aaa檔案的屬主屬於itcast、屬組屬於root

我們現在通過chgrp命令將檔案aaa的屬主更改成root,執行

 chown  root aaa

效果如下

 

 

 

我們通過下面的命令查詢檔案aaa的屬主是否發生了變化,執行

ls -l

 

 

 

由上圖我們發現,檔案aaa的屬主和屬組都變成了root。

我們將aaa檔案的擁有者與群組改回為itcast:

注意:chown命令可以更改屬主和屬組

chown itcast:itcast aaa

我們通過下面的命令查詢檔案aaa的屬主是否發生了變化,執行

ls -l

 

 

 

由上圖可知,aaa檔案的屬主和屬組都被更改回來了。

3.3.3 chmod許可權命令

Linux檔案屬性有兩種設定方法,一種是數字,一種是符號

Linux的檔案呼叫許可權分為三級 : 檔案屬主、屬組、其他。利用 chmod 可以控制檔案如何被他人所呼叫。

使用許可權 : 所有使用者

語法

chmod [-cfvR] [--help] [--version] mode file...

引數說明

mode : 許可權設定字串,格式如下

[ugoa...][[+-=][rwxX]...][,...]

解釋:

u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。

+表示增加許可權、- 表示取消許可權、= 表示唯一設定許可權。 r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。

1) 數字許可權

Linux檔案的基本許可權就有九個,分別是owner/group/others三種身份各有自己的read/write/execute許可權。

先複習一下剛剛上面提到的資料:檔案的許可權字元為:『-rwxrwxrwx』, 這九個許可權是三個三個一組(owner/group/others就是所說的三個一組 )的,我們也可以使用數字來代表各個許可權,各許可權的分數對照表如下

各許可權的數字對照表:[r]:4;[w]:2;[x]:1;[-]:0

 

 

 

每種身份(owner/group/others)各自的三個許可權(r/w/x)分數是需要累加的,例如當許可權為: [-rwxrwx---] 分數則是:

  • owner = rwx = 4+2+1 = 7

  • group = rwx = 4+2+1 = 7

  • others= --- = 0+0+0 = 0

所以等一下我們設定許可權的變更時,該檔案的許可權數字就是770啦,變更許可權的指令chmod的語法是這樣的

chmod [-R] xyz 檔案或目錄

選項與引數:

  • xyz : 就是剛剛提到的數字型別的許可權屬性,為 rwx 屬性數值的相加。

  • -R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更

上面的 可以表示如下

chmod  -R 770     檔案或目錄

上面說了這麼多,我們舉例說明一下:

我們進入itcast使用者建立檔案czbk.txt

touch as.txt

然後切換到root

比如,我們如果要將as.txt這個檔案所有的許可權都設定啟用

 

 

 

那麼命令如下:

chmod -R 777 as.txt

 

 

 

由此可見,as.txt的屬主許可權、屬組許可權、其他許可權都發生了改變

由之前的【-rw-rw-r--】變成【-rwxrwxrwx】

根據前面的換算我們已經知道如何將一個檔案的屬主、屬組、其他許可權換算成數字了,換算成數字後,我們只需要通過chmod命令即可更改檔案的許可權

2) 符號許可權

還有一個改變許可權的方法,就是 符號許可權,我們先回顧下之前提到的9個許可權

  • (1)user 屬主許可權

  • (2)group 屬組許可權

  • (3)others 其他許可權

那麼我們就可以使用 u, g, o 來代表三種身份的許可權!

此外, a 則代表 all,即全部的身份。讀寫的許可權可以寫成 r, w, x,也就是可以使用下表的方式來看

1576464280724

如果我們需要將檔案許可權設定為 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 檔名 來設定:

上接上面的例子,如下圖

我們將as.txt的許可權設定為-rwxr-xr--

 

 

 

執行

chmod u=rwx,g=rx,o=r  as.txt

 

 

 

由上圖我們發現,as.txt的許可權變成了-rwxr-xr--

假如我們要將許可權去掉而不改變其他已存在的許可權呢?舉個例子,比如我要拿掉全部人的可讀許可權,則

 chmod  a-r as.txt

執行如下

 

 

 

由此可見,as.txt的其他許可權都沒有了,變成了【---】

3.4 綜合案例

在前面的章節中我們講解了使用者、使用者組、檔案屬主、屬組以及許可權,知識點比較零散,下面,我們就通過一個簡單小案例把這些知識點串聯起來

需求:

比如一個公司的開發團隊有三個使用者:java、erlang、golang有一個檔案目錄tmp/work供他們開發,如何實現讓這三個使用者都對其具有寫許可權

1、首先,我們建立三個賬戶(切換到root)

adduser java
adduser erlang
adduser golang

執行效果如下

 

 

 

2、增加使用者組

groupadd -g 8888 dev-group

執行效果如下

 

 

 

3、建立公共檔案並設定許可權

給檔案/tmp/project2019/設定屬組為dev-group

 mkdir /tmp/project2019
 
 chown -R :dev-group /tmp/project2019/
 或者
 chgrp -R dev-group  /tmp/project2019/

執行效果如下

 

 

 

4、將使用者新增到組

gpasswd -a java    dev-group
gpasswd -a erlang  dev-group
gpasswd -a golang  dev-group

執行效果如下

 

 

 

查詢dev-group組下所有使用者

 grep 'dev-group' /etc/group

執行效果如下

 

 

 

5、切換到java使用者

切換到java使用者看看是否有寫入許可權

su java

 

 

 

新建檔案

在我們上面建立的目錄tmp/project2019/下面建立檔案

mkdir java-files-new

 

 

 

由此發現,我們在tmp/project2019/下面建立檔案發生了許可權不足,我們去檢視下tmp/project2019/的檔案屬性,如下圖

我們在/tmp目錄下執行

ls -l

執行效果如下

 

 

 

我們發現目錄project2019的檔案屬性為【drwxr-xr-x】

根據前面學的知識,我們拆分如下

【d】:檔案型別

【rwx】:屬主

【r-x】:屬組

【r-x】:其他

現在答案就出來了,也就是說我們的屬組許可權是【r-x】,只有讀和執行許可權,沒有寫入許可權,那麼下面我們就給project2019目錄增加寫入許可權。

6、增加寫入許可權

給project2019目錄增加寫入許可權,執行下面的命令(前面已經學習過了)

記得切換到root下執行

chmod  -R 770  project2019

執行效果如下

 

 

 

此時我們發現project2019目錄的屬組許可權變成了【rwx】即可讀、可寫、可執行

7、切換使用者,繼續寫入

su  java
mkdir java-files-new
ls -l

執行效果如下

 

 

 

由此發現,這個時候我們有了寫入許可權,java-files-new檔案被成功寫入

那麼,其他兩個使用者golang、erlang也是和java一個組的,他們能不能正常寫入呢,我們試試(從root切換過去)

su
su erlang
mkdir erlang-files-new
==============================
su
su golang
mkdir golang-files-new

ls -l

執行效果(erlang新建檔案)

 

 

 

執行效果(golanglang新建檔案)

 

 

 

檢視所有檔案

 

 

 

由此可見,我們組的三個使用者都成功建立了檔案(擁有了寫入許可權)

8、驗證結論

為了驗證上面的結論,我們新增一個使用者itbeijing

看看能否正常新建檔案

useradd   itbeijing
su itbeijing
mkdir  itbeijing-files-new

執行效果如下

 

 

 

由上圖我們發現,我們剛剛新建立的使用者在建立檔案的時候發現了許可權不足。

由此說明使用者itbeijing使用者的屬組和檔案的屬組不一樣,所以沒有許可權。

3.5 總結

在企業級開發過程中,實際操作目錄是最經常出現的,對於目錄常用命令我們要熟練掌握並能熟練編寫 因為Linux是多使用者系統,所以許可權也是非常核心和重要的,我們要熟練編寫許可權(屬主、屬組、其他許可權)的常用命令。

防火牆:

systemctl status firewalld檢視當前防火牆狀態

systemctl stop firewalld關閉當前防火牆。

systemctl disable firewalld開機防火牆不啟動。

相關文章