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

                             知識點梳理

                   

                            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、680×0、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。主要區別如下

比較 WINDOWS LINUX
界面 界面統一,外殼程序固定所有 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開機防火牆不啟動。