Try   HackMD

Linux 上課筆記(RockyLinux Download ISO)

https://rockylinux.org/download
curl -o RockyLinux_9.0_VMM.7z https://dldatac.linuxvmimages.com/VMware/R/rockylinux/9/RockyLinux_9.0_VMM.7z

WSL 安裝

Linux 上課筆記 Vmware Network 設定

瞭解Linux

  • Linux簡史:1991年,林納斯·托瓦茲在赫爾辛基大學上學時,對作業系統很好奇。他對MINIX只允許在教育上使用很不滿(在當時MINIX不允許被用作任何商業使用),於是他便開始寫他自己的作業系統,這就是後來的Linux核心。林納斯·托瓦茲在1991年10月5日首次發布。

    • 1991年:芬蘭大學生Linus Torvalds的一則簡訊
      Torvalds 在 1991 年於 BBS 上面公告他透過 GNU 的 bash, gcc 等,透過學習 Minix 系統,在 x86 (386) 上面成功的開發一個小型的作業系統, 並且放在 Internet 上面提供提供大家自由下載。同時,還鼓勵大家告知 Torvalds 自己,這個系統還有哪些部份可以值得繼續修改等的訊息。 這就是 Linux 的起源!
  • Linux的發行版(distribution):Linux被打包成供個人電腦和伺服器使用的Linux套件,一些流行的主流Linux發布版,包括Debian(及其衍生版本Ubuntu、Linux Mint)、Fedora(及其相關版本Red Hat Enterprise Linux、CentOS)和OpenSUSE等。較為知名的有Debian、Ubuntu、Fedora、CentOS、Arch Linux和OpenSUSE等

  • Linux也是自由軟體和開放原始碼軟體發展中最著名的例子。只要遵循GNU 通用公共許可證(GPL),任何個人和機構都可以自由地使用Linux的所有底層原始碼,也可以自由地修改和再發布。

  • GNU :GNU(GNU’s Not UNIX)是由Richard Stallman所推廣,後來成立自由軟體基金會(Free Software Foundation, FSF),全力為GNU的推展。GNU主要是要發展一套UNIX-Like的作業系統,而且是Free Software。目前使用Linux為核心的作業系統,嚴格說來應該稱為GNU/Linux systems。 GNU的發音是『guh-NEW』。

    • 1984年之一:x86架構的Minix作業系統開始撰寫並於兩年後誕生
      因為 SystemV 之後,大學老師不可以教授 Unix 核心原始碼,因此 Andrew Tanenbaum 自己動手寫了 Minix 這個 Unix Like 的核心程式! 同時搭配 BBS 新聞群組與相關書籍來販售 Unix Like 的程式碼。因為強調的是學習程式碼,因此改版的速度相當緩慢。
    • 1984年之二:GNU計畫與FSF基金會的成立
      Richard Mathew Stallman(史托曼)在1984年發起的 GNU 計畫,目的是想要恢復以前『知識分享的駭客文化』,因此強調程式碼需要公開以利學習的自由軟體概念, 並開發出 bash, gcc, glibc, emacs 等膾炙人口的軟體。Stallman 將所有的軟體都上網,但是沒有網路的朋友也能夠透過郵件請 Stallman 寄送軟體磁帶,Stallman 經由這樣販售 emacs 的『服務費用』(Stallman 認為協助人們燒錄軟體,花費他很多的時間成本) 賺了點錢,然後成立了自由軟體基金會 (FSF, Free Software Foundation),同時與律師共同簽署了 GNU 的通用公共許可證(General Public License, GPL), 該授權讓使用者可以自由的使用軟體,且軟體的授權可以永續的存在。
  • GPL:許多的Linux工具都在GPL(GNU General Public License)保護之下發展。 在GPL保護之下,程式設計者仍然擁有合法的版權,但是允許其它人以任何方式取得、更改和販賣改好的程式,唯一的限制是,不能剝奪他人同樣的權利。而且,由於程式碼開放,某些工具可能經過許多人共同開發、修改,因此它的所有權是由許多人擁有的。

  • GNU 的 GPL 授權有底下的權力與義務:

    • 取得軟體與原始碼:你可以根據自己的需求來執行這個自由軟體;
    • 複製:你可以自由的複製該軟體;
    • 修改:你可以將取得的原始碼進行程式修改工作,使之適合你的工作;
    • 再發行:你可以將你修改過的程式,再度的自由發行,而不會與原先的撰寫者衝突;
    • 回饋:你應該將你修改過的程式碼回饋於社群!
    • 不可修改授權:你不能將一個GPL授權的自由軟體,在你修改後而將他取消GPL授權~
    • 不可單純販賣:你不能單純的販賣自由軟體。
  • 資料來源: https://linux.vbird.org/linux_basic_train/centos8/unit01.php

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

https://www.tibame.com/offline/k8s?classUid=821

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

https://www.tibame.com/offline/PenetrationTest?classUid=909

  • 64位元電腦(window、mac、linux都可)
  • 建議記憶體8G以上、最少 20GB 磁碟空間
  • 建請先安裝VM虛擬化軟體 (windows系統: VMware Workstation Player),並下載 Linux VMware images。
  • 使用mac系統者,請安裝UTM、VMware Fusion或parallels desktop,並安裝 Linux。

Day25 CentOS Stream 圖形模式基本安裝

【 VM 】如何在 Oracle VirtualBox 中安裝 Ubuntu

rocky linux vmware image
Username: rockylinux
Password : rockylinux
(to become root, use sudo su -)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

HD Tune 硬碟檢測軟體

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

VMware

事前準備

  • DOMAIN及IP
    安裝系統之前,請先確認IP Address設定需要的訊息,包括主機的網域名稱以及電腦可以使用的IP位址。
  • 如果並未申請網域名稱的話,你自己也可以訂個網域名稱 ,那我就自行決定設定我自己的網域名稱為『ntcbim??.ntub.tw』。
  • 如果本身並沒有固定IP位址可以使用,那麼你可以使用192.168.1.1這個IP位址。
  • VmWare:ens160 inet 192.168.18.129

登入系統

  • 請輸入『root』以系統管理員身份登入,輸入後按『Enter』鍵繼續。
  • 輸入密碼『centos』或者是你之前輸入的密碼,再按『Enter』鍵登入。
  • Rocky Linux: student

虛擬的終端機

  • 在一台Linux系統中,可同時在本機端使用七個終端機,我們可以透過『Ctrl + Alt + F1』~『Ctrl + Alt + F7』的組合鍵來切換七個不同的終端機。(『Alt + F1』~『Alt + F7』)
  • 其中第1,2(7)個虛擬終端機比較特別,是專門給X-Window的視窗環境使用,也就是說,我們一啟動Linux系統,進入X-Window之後,就一直使用第1,2(7)個終端機。

登入登出

登入

我們要使用系統,就一定要做『登入(login)』的動作,由系統驗證我們的帳號、密碼是否為系統所允許的使用者。

  • 我們可以在遠端透過網路連線到Linux系統,使我們不必親自到Linux的電腦前面,就可以直接透過網路在遠端針對Linux系統做管理、設定、維護的動作。遠端登入的方式有二種:
    –ssh 140.131.114.?? (ssh –p 3939 centos@140.131.114.??)
    –telnet 140.131.114.??
$ ssh student@192.168.x.52 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ED25519 key sent by the remote host is SHA256:WGHEdbUeRGrvM1PgFPc/bhjO/kuY831yiTBZEky7OtI. Please contact your system administrator. Add correct host key in /c/Users/user/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /c/Users/user/.ssh/known_hosts:3 Host key for 192.168.x.52 has changed and you have requested strict checking. Host key verification failed.
  • 系統會顯示目前的登入名稱
whoami
  • 系統會顯示誰在線上
who

登出

『登出(logout)』是告知系統結束我們的服務,使用『logout』、『exit』都可以離開目前操作的使用者身份。

  • 登出是使用者不再繼續使用系統,但是系統仍然還在運作(開機)、提供服務給其它的使用者。

AppStream

Failed to download metadata for repo ‘AppStream’ [CentOS]

[centos@autocontroller ~]$ su -
[root@autocontroller ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# cp CentOS-*.* /home/centos

強救 AppStream,新機器不用做

cd /etc/yum.repos.d/
rm -f CentOS-*.*
cd /home/centos
cp CentOS-*.* /etc/yum.repos.d/
cd /etc/yum.repos.d/

20220517 強救 AppStream,新機器不用做

cd /etc/yum.repos.d/
rm -f CentOS-*.*
cd /home/centos
wget http://ms.ntub.edu.tw/~shyong/Linux/repos.tar.gz
tar zxvf repos.tar.gz
cd repos
cp CentOS-*.* /etc/yum.repos.d/
cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls -l
total 52
-rw-r--r--. 1 root root  734 Mar 16 01:01 CentOS-AppStream.repo
-rw-r--r--. 1 root root  715 Mar 16 01:01 CentOS-Base.repo
-rw-r--r--. 1 root root  801 Mar 16 01:01 CentOS-centosplus.repo
-rw-r--r--. 1 root root 1045 Mar 16 01:01 CentOS-CR.repo
-rw-r--r--. 1 root root  668 Mar 16 01:01 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  746 Mar 16 01:01 CentOS-Devel.repo
-rw-r--r--. 1 root root  759 Mar 16 01:01 CentOS-Extras.repo
-rw-r--r--. 1 root root  340 Mar 16 01:01 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  741 Mar 16 01:01 CentOS-HA.repo
-rw-r--r--. 1 root root  928 Mar 16 01:01 CentOS-Media.repo
-rw-r--r--. 1 root root  739 Mar 16 01:01 CentOS-PowerTools.repo
-rw-r--r--. 1 root root 1383 Mar 16 01:01 CentOS-Sources.repo
-rw-r--r--. 1 root root   74 Mar 16 01:01 CentOS-Vault.repo

只能做一次,不能重複做,很重要

[root@autocontroller ~]# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
CentOS-AppStream.repo
[AppStream]
name=CentOS-$releasever - AppStream
#mirrorlist=http://#mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

只能做一次,不能重複做,很重要

[root@autocontroller ~]# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
[AppStream]
name=CentOS-$releasever - AppStream
#mirrorlist=http://#mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
baseurl=http://vault.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

檢查AppStream

sudo dnf install telnet

千萬先不要做這

[root@autocontroller ~]# yum update -y
[root@localhost ~]# dnf install telnet [root@localhost ~]# telnet ms.ntub.edu.tw 110 [root@localhost ~]# telnet ms.ntub.edu.tw 22 [root@localhost ~]# telnet ms.ntub.edu.tw 80 [root@localhost ~]# telnet www.ntub.edu.tw 110 #curl ifconfig.me [root@localhost ~]# telnet www.ntub.edu.tw 53 Trying 140.131.110.3... ^C [root@localhost ~]# telnet www.ntub.edu.tw 80 Trying 140.131.110.3... Connected to www.ntub.edu.tw. Escape character is '^]'. ^]

20220301上課錄影
https://youtu.be/refmHNtBOl8

Linux 關機

  • 在文字模式下關機,指令動作:
關機 重新啟動系統
shutdown –h now shutdown –r now
  • 當系統管理員下達shutdown指令後,其它使用telnet、ssh登入到本機的使用者都會收到訊息告知系統馬上要關機。

測試網路的接通

  • 安裝完Linux之後,我們可以立即來測試網路的連結是否正常,最常用的指令有:
ip a #(ifconfig) # 這個指令是用來檢查網路卡的狀態。 netstat -ntp #(ss -ntp) ping fb.me # ping會透過網路將ICMP回應請求,送到目的主機。這也是檢查網路最常用的方式。

網路管理

$ ip addr
$ ip route
# nmtui

使用輔助說明

  • 學習Linux最好的方式就是善用它的輔助說明:
    • man 指令名稱

幫助輸入『上、下』『tab』

  • 在Linux系統中常常會需要輸入指令,以下二個動作可以幫助我們:

    • 『上、下』的方向鍵可以隨時找到之前所輸入的指令,可減少重新key-in指令的動作。
    • 善加使用『tab』鍵可以更省力,『tab』鍵可以找出檔案中最符合的檔案或目錄。
      例如我們輸入『X』再按二次『tab』鍵就可以列出檔案中是『X』開頭的檔案,要按二次的因素是在目前目錄中找不到相符合的檔案或目錄、或者是有二個以上符合的檔案或目錄。如果只按一次『tab』就出現的話,表示這是唯一符合條件的檔案或目錄。
  • 在 Linux系統下的英文大小寫是不一樣, 因此我們在輸入指令和參數時,要注意英文大小的問題, 注意看英文的大小寫輸入是否正確!

檔案與目錄系統

檔案系統相關指令

  • pwd:顯示目前的目錄路徑(Print Working Directory)。

  • df:顯示檔案系統(硬碟空間)使用的狀況。
    選項 說明

    • -k kilobytes
      以KB的容量顯示

    • -m megabytes
      以MB的容量顯示

    • df -h

  • du:顯示某個目錄中的檔案所使用的容量。

    • du -h
    • du -sh /var/*
    • du -sh /home/*
[centos@localhost ~]$ du -sh /home/* 0 /home/201410H.txt 0 /home/201410S.txt 117M /home/centos du: cannot read directory '/home/ntcb1501': Permission denied 0 /home/ntcb1501 0 /home/ntcb1504 du: cannot read directory '/home/ntcb1505': Permission denied 0 /home/ntcb1505 du: cannot read directory '/home/ntubimd': Permission denied 0 /home/ntubimd du: cannot read directory '/home/ntubimd001': Permission denied 0 /home/ntubimd001

mount

  • 在Linux系統中所使用到的檔案系統都必須經由『掛載』的動作,將該項裝置掛載成為檔案系統中的某一個目錄。
  • 我們在安裝Linux系統時,有做過硬碟分割的動作,其中除了指令分割的容量大小之外,還特別有指定『mount point』的動作,這個就是將硬碟分割區掛載到檔案系統的某一個目錄。
mount [-fnrsvw] [-t vfstype] [-o options] device dir
mount /dev/hdd /media/cdrom   
#將光碟機mount到/media/cdrom

目錄結構

  • 在Linux檔案系統中,和Windows不一樣的地方就是Linux沒有『C:、D:』,而是將所有的『目錄』『設備裝置』都為檔案系統中的其中一個目錄。
  • 底下簡單列出一些較常使用的目錄結構:
/	‘系統的根目錄
├─bin
├─boot	‘開機時執行的啟動程式所存放的目錄
├─etc	‘一般常用到的伺服器、設定檔案所存放的目錄
├─home	‘一般使用者的目錄都放在這底下
│ └─centos	‘一般使用者centos的個人目錄
├─root	‘系統管理員root的個人目錄
├─sbin
├─var
│ ├─named	‘名稱伺服器設定檔放存的目錄
│ ├─www
│ │ └─html	‘存放網頁的目錄
│ ├─ftp
│ ├─lib─mysql  ‘mysql資料匣
│ └─spool
│   ├─mail	‘收到的郵件都放在這個目錄
│   └─mqueue	‘待寄郵件都會放在這個目錄
└─tmp	‘暫存檔案會放在這個目錄

  • 所有的目錄都可以使用『絕對路徑』的方式表示,參考如下:
目錄 完整路徑
etc /etc
home /home
centos /home/centos
mail /var/spool/mail
html /var/www/html
  • 在Linux系統中最上層的目錄稱為root、根目錄,以『/』表示,它是所有目錄的最上層,另外有一個目錄是『/root』,是系統管理員root的個人目錄,不要和系統的根目錄『/』混淆。
  • 每一個使用者都有自己的個人目錄,有時候會說成『家目錄』(或者是『home目錄』),指的就是自己個人專屬的目錄。和『/home』 目錄是不一樣的。
  • 每個目錄中一定會有二個檔案,『.』為目前所在的目錄,『..』是上一層目錄。

檔案目錄相關指令

  • ls:顯示目前工作目錄的內容。
選項 說明
-a 列出所有檔案
-n 列出檔案,以UID和 GID顯示
-l (小寫的L) 以較長的格式顯示,包含存取權限、連結數目、擁有者、大小、最後更動時間等
-i 顯示各檔案的inode
  • cd:切換目前工作的目錄,可以使用相對路徑或絕對路徑。
選項 說明
cd /etc 移到/etc的目錄
cd /var/www/html 移到/var/www/html的目錄
cd 或 cd ~ 回到使用者家目錄/home/
cd - 回到目前所在目錄的前一個目錄 (二個資料匣的切換)
cd .. 切換目錄到上一層目錄
目錄名稱 目錄意義
/ 根目錄,Linux系統中最上層的目錄稱
~ 使用者的家目錄,不同用戶的家目錄均不相同
. 一個小數點,代表的是『本目錄』『目前所在的目錄』,亦即目前的工作目錄之意
.. 兩個小數點,代表的是『上一層目錄』
- 一個減號,代表『上一次的工作目錄』之意

How To Install the Apache Web Server on CentOS 8

cd /etc/yum.repos.d/
[student@localhost yum.repos.d]$ sudo vi Rocky-AppStream.repo
#baseurl=http://free.nchc.org.tw/rocky/8/AppStream/x86_64/os/
baseurl=http://dl.rockylinux.org/pub/rocky/8/AppStream/x86_64/os/
[student@localhost yum.repos.d]$ sudo vi Rocky-BaseOS.repo
#baseurl=http://free.nchc.org.tw/rocky/8/BaseOS/x86_64/os/
baseurl=http://dl.rockylinux.org/pub/rocky/8/BaseOS/x86_64/os/
# Step 1 — Installing Apache sudo dnf install httpd sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload #Step 2 — Checking your Web Server sudo systemctl start httpd sudo systemctl status httpd sudo systemctl enable httpd #Step 3 in Firefox(windows chrome) #http://localhost #檢查點:確認 http服務 和 firewall設定 http://192.168.x.52 #Step 4 PHP7.3 對於 EPEL8 以及 CentOS 8 預設的 repository 來說是更新的套件,所以需要再安裝包含新版 PHP7.3 的 repository ,下列步驟是以 Remi-php7.3 作示範。 #sudo dnf install http://rpms.remirepo.net/enterprise/remi-release-8.rpm #下列指令中的 php73-php 就是 PHP 7.3 主程式,後面則是順手安裝一些常用套件。 #sudo dnf install php73-php php73-php-gd php73-php-mbstring php73-php-mysqlnd sudo dnf install php php-gd php-mbstring php-mysqlnd #比較特別的是 PHP-FPM 這個程式可以控制諸多與 PHP 相關的參數設定,這會影響到伺服器的記憶體使用量與效能等重要因素,PHP-FPM 是個很重要的東西。如果改了 php.ini 的設定,強烈建議重啟 php-fpm 服務比較保險。 #sudo systemctl restart php73-php-fpm sudo systemctl restart php-fpm sudo systemctl restart httpd

防火牆 開放 http 服務 永久性生效
firewall-cmd add-service=http permanent
防火牆不中斷服務 重新載入
firewall-cmd reload

[centos@localhost ~]# sudo dnf install vim
[centos@localhost ~]$ cd /var/www/html/ [centos@localhost html]$ sudo vim test.php
<?php
phpinfo();
?>
[centos@localhost html]$ cat test.php

進入 vim 進入編輯模式

i

在 vim 存檔

esc --> :wq!
i vim 進入編輯模式
esc 進入命令模式
:w 存檔
:q 離開
! 強制離開
##
esc --> :wq!
esc --> :q!
##
[centos@localhost html]$ chcon -t httpd_sys_content_t test.php

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • 檢查點:驗証 PHP 套件是否正常,目前進度只到可以看到系統網頁的內容(個人使用者的網頁內容尚未完成)
#Step in Centos Firefox http://192.168.x.52/test.php

Listen 80>8080,因為之後安裝的wordpress要用到 80 port。

sudo vim /etc/httpd/conf/httpd.conf
     45 Listen 8080
sudo systemctl restart httpd

★★★ 加入自行指定的連接埠 ★★★

sudo firewall-cmd --add-port=8080/tcp --permanent
#success
sudo firewall-cmd --reload
#success
sudo firewall-cmd --list-all
  • 檢查點:測試8080是否正常運作
#Step in Windows chrome
http://192.168.x.52:8080/test.php

設定個人使用者的網頁內容放置資料匣為"/home/*/www"
在vim中顯示行號 :set nu

cd /etc/httpd/conf.d sudo vim userdir.conf 17 #UserDir disabled (加#) 24 UserDir www (去# public_html > www ) 31 <Directory "/home/*/www"> (public_html > www ) ## esc --> :wq esc --> :q! ## sudo systemctl restart httpd #sudo setenforce 0

在vim中顯示行號 :set nu

切換 SELinux 模式,關閉安全性

# 0: permissive 宽容模式
sudo setenforce 0
# 1: enforcing  强制模式
sudo setenforce 1
[centos@localhost www]$ sudo getenforce Enforcing [centos@localhost www]$

設定個人使用者的網頁資料匣"/home/*/www"目錄權限開放和http selinux設定

cd /home sudo vim userwww.sh sudo chmod 700 userwww.sh sudo sh userwww.sh

userwww.sh內容

#!/bin/bash for i in `ls /home` do test -d /home/$i || continue chmod 755 /home/$i mkdir -p /home/$i/www mygroup=$(groups $i | awk '{print $3}') chown -R $i:$mygroup /home/$i chcon -R -t httpd_sys_content_t /home/$i/www chcon -t user_home_dir_t /home/$i done
  • chcon: The command used to change the security context.
  • -t httpd_sys_content_t: Set the type component of the security context to httpd_sys_content_t, which is a type commonly used for web content accessible by the Apache web server.
  • -t user_home_dir_t: Set the type component of the security context to user_home_dir_t, which is a type commonly used for user home directories.
  • semanage
    $ mkdir -p {middle_dir}/{bottom_dir} # 中間資料夾不存在時自動建立
[centos@localhost home]$ cd /home/student/www/ [centos@localhost www]$ pwd /home/student/www [centos@localhost www]$ vim test.php [centos@localhost www]$ cat test.php <?php phpinfo(); ?>

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

[centos@localhost home]$ cd /home/student/www/ [centos@localhost www]$ pwd /home/student/www [centos@localhost www]$ vim 11146000.html [centos@localhost www]$ cat 11146000.html 11146000

#https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-centos-8
#https://www.brilliantcode.net/1955/centos-8-apache24-php73-installation-settings/

  • mkdir:建立目錄
選項 說明
mkdir abc 在此目錄下建立abc的子目錄
mkdir -p aaa/bbb 在aaa底下建立一個bbb的目錄,若aaa原本不存在,則建立一個aaa目錄

上機操作

sudo su - mkdir -p /var/www/html/0303 ls -la /home ls -la /home > /var/www/html/0303/index.html cd /var/www/html/0303 ls -la vim index.html # 要注意Windows Linux MacOS的換行都不一樣, 網頁也不一樣, 在index.html <br> # http://localhost/0303/index.html mkdir -p /var/www/html/0303p/10846000 # http://localhost/0303/iondex.html

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

mkdir -p and cp https://youtu.be/4Tm_7vTPOWA

  • cp:將一個或數個檔案複製到另一個目錄。
選項 說明
-R 或 -r 將目錄中的檔案及子目錄複製到目的地
-f 若目的地有相同名稱的檔案存在,會直接覆蓋而不會再出現訊息警告我們
範例 說明
cp -rf /var/www/html public_html 將/var/www/html目錄底下的所有檔案全部複製到目前目錄下的public_html目錄中,若有同檔名存在則直接刪除後複製

0425上機操作

cp -rf /var/www/html/0303 /home/centos/www/ 練習

sudo su - useradd centos passwd centos cd /home sudo vim userwww.sh sudo chmod 700 userwww.sh sudo sh userwww.sh cp -rf /var/www/html/0303 /home/centos/www/ #sudo sh userwww.sh cd /home/centos/www/0303 vim index.html # 1,$s/$/<br>/g # http://192.168.X.52/~centos/0303/
  • rm:刪除檔案或目錄。(rmdir只能刪除空的目錄)
選項 說明
-i 刪除前逐一詢問確認
-f 直接刪除,不需確認
-r 將目錄及子目錄中的檔案一併刪除
  • mv:將檔案移至另一目錄中,或是移至另一檔案(也就是重新命名)。
選項 說明
-i 若有同名檔案,先詢問是否覆蓋
-f 若目的地有相同名稱的檔案存在,會直接覆蓋而不會再出現訊息警告我們
範例 說明
mv index.htm index.html 將index.htm更名為index.html

顯示檔案內容相關指令

  • cat:把由FILE(s)或標準輸入讀取的資料連結起來,輸出到標準輸出。最簡單的用法就是在『cat』後加上檔案名稱直接顯示檔案內容。
  • more:顯示文字檔案內容,以一頁一頁的方式逐頁顯示。
  • less:和more的作用類似,但less的功能更強,除了可以往回捲動,還可以對內容搜尋關鍵字。對於大型檔案的開啟,速度很快。
  • head
  • tail -n 或 -f
  • touch:產生空檔和時間標記
[root@localhost /]# cat /etc/passwd [root@localhost /]# cat /etc/passwd | more [root@localhost /]# cat /etc/passwd | less [root@localhost /]# head -n 5 /etc/passwd [root@localhost /]# tail -n 5 /etc/passwd cd /home ls -l sudo touch userwww.sh ls -l sudo touch userwww.sh2 ls -l sudo cp userwww.sh userwww.sh.tmp ls -l sudo cp userwww.sh2 userwww.sh.tmp

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

記錄系統資訊的目錄

  • 實際上『/proc』並不是一個真正的目錄,而是當系統啟動之後,存放在記憶體的資料,透過目錄及檔案的型式呈現出來,因此,這個目錄中的資料都會在重新啟動系統後,又更新為新的資料。
  • /proc/cpuinfo
  • /proc/meminfo
  • /proc/version

(二)系統使用量(查詢時間:112 年 2 月 22 日)

  1. 硬碟:36GB / 46GB : df -h
  2. RAM: free -h

inode

  • 每一個檔案都會擁有一個數字,稱為inode,在inode裡存放檔案的所有資訊,包括檔案型態及所處的位址等。而所有的inode都存放在inode table中,至於inode table是在磁碟格式化時就已經配置好的,也就是說,每個分割區會有各自獨立的inode,每一個inode在每一個分割區之中都是唯一的。
  • 我們可以使用『df –i』或『df –ih』查閱這些資訊。

連結

  • 使用ln指令可以將檔案產生連結,連結分成二種:符號連結、硬式連結。
  • 不論是符號連結或硬式連結,它的主要作用都是將一個檔案分給很多人使用,而且檔案內容都是同一份的檔案內容。
  • 建立連結的方式如下: ln [-s] 來源 目的

符號連結

  • 建立符號連結的方式為『ln -s 來源 目的』
  • 符號連結可以針對檔案、目錄,也可以跨越裝置的界限。
  • 符號連結的意義就類似windows系統中的捷徑,透過符號連結所建立的檔案是指向真正的檔案位址。
  • 若直接刪除原來檔案,則符號連結的檔案會以閃礫來提示已經發生錯誤。

硬式連結

  • 建立硬式連結的方式為『ln 來源 目的』
  • 硬式連結的意義有些像『分身』。不論增加幾個硬式連結,其inode都指向同一個,所以在硬碟中都只佔一個檔案的大小,當所有的連結都刪除時,檔案才真正的被刪除。
  • 硬式連結::不能::使用在目錄,而且,由於硬式連結是指向同一個inode,所以也不能跨越不同的磁碟分割區

上機操作:

cd /home touch 201410.txt ls -li ln -s 201410.txt 201410S.txt ls -li ln 201410.txt 201410H.txt #硬式連結是指向同一個inode ls -li

尋找檔案相關指令

  • find:搜尋檔案
選項 說明
-name file 搜尋檔案名稱;可以是檔名或含有萬用字元的檔名
-iname file 同上,但會忽略英文大小寫
-cmin n 在過去 n 分鐘內被修改過的檔案
-ctime n 在過去 n 天內被修改過的檔案
-cnewer
範例 說明
find / -name index.html 自根目錄起,搜尋檔案index.html
find . -cmin -20 自目前所在目錄,找出最近20分鐘內有更新過的檔案
find . -size +5M 自目前所在目錄,找出檔案大小超過5M的檔案

– find /home/ -size +5M
– find /root -ctime -12
– find /root -cnewer /root/timebase1

檔案的存取權限

存取權限

  • 使用長格式來顯示目前的檔案內容,可以看到第三、四個欄位都是顯示『root』,第三個欄位代表的是『檔案的擁有者』,第四個欄位代表的是『檔案的群組擁有者』。
    – -rw-rr 1 root root 2898 10月 2 11:20 index.html

  • 最左邊一欄的十個字元,除了第一個字元代表的是檔案的型態之外,後面的九個字元分為三組,每一組都是三個字元,分別代表是否允許讀取、寫入、執行該檔案的權限。

- rwx rwx rwx
型態 擁有者權限 群組權限 其它使用者權限

檔案型態

  • 檔案型態有以下幾種,較常見的是前三項:
型態 說明
d 目錄
l 符號連結的檔案
b 區塊設備;Block-special file
c 週邊設備;Character-special file

檔案的存取權限

  • 易記方式
    檔案存取權限的『rwx rwx rwx』可以視為『421 421 421』三組數字的組合,我們只需將對應的數字加總,例如:
存取權限 擁有者權限 群組權限 擁有者權限 存取權限
rwxr-xr-x 4+2+1 4+0+1 4+0+1 755
  • 檔案可不可以執行,是由檔案是否開啟『執行』的權限所決定的,只要這個檔案的執行權限有設定,那這個檔案就可以執行。

  • 二進位
    其實檔案的存取權限是對照二進位的0或1來決定的,0則表示不提供該權限,1則表示具有該權限。

  • 無論是『擁有者』、『群組』、『其它使用者』的讀取、寫入、執行權限設定,其對照表格如下:

讀取 寫入 執行 表示為 二進位值
0 0 0 - - - - 0
0 0 1 - - - x 1
0 1 0 - - w - 2
0 1 1 - - w x 3
1 0 0 - r - - 4
1 0 1 - r - x 5
1 1 0 - r w - 6
1 1 1 - r w x 7

三組權限

縮寫 全名 說明
u user 所有者
g group 群組
o others 其他人

數字加總

縮寫 全名 數字 說明
r read 4 讀取權限
w write 2 寫入權限
x execute 1 執行權限
$ chmod u=rwx, g=rx, o=r test.txt

$ chmod 754 test.txt
# user:   7 = 4(讀取) + 2(寫入) + 1 (執行)
# group:  5 = 4(讀取) + 1(執行)
# others: 4 = 4(寫入)

改變檔案權限及擁有人相關指令

  • chmod:設定使用者對檔案使用的權限控制。
範例 說明
chmod 755 index.htm 設定index.htm的存取權限為755
  • chown:更改檔案的擁有者及群組。
範例 說明
chown -R centos:root /home/centos 將目錄中的所有檔案擁有者改為centos,而群組改為root群組
  • 一般來說,這個指令只有是由系統管理者(root)所使用,一般使用者沒有權限可以改變別人的檔案擁有者,也沒有權限可以將自己的檔案改設為別人。只有系統管理者(root)才有這樣的權限。

上機操作:

cd /home/centos/
ls -l
touch 0310f
ls -l
chown centos:root 0310f
#-rwxr-xr-x. 1 root root    0 Mar 10 18:48 0310f
#-rwxr-xr-x. 1 centos root    0 Mar 10 18:48 0310f

ls -l
chmod 755 0310f
#-rwxr-xr-x. 1 centos root    0 Mar 10 18:48 0310f
[root@localhost centos]# chmod 754 0310f
[root@localhost centos]# ls -l
#-rwxr-xr--.

目錄和帳號權限 上機操作:

  • 新增使用者ntub2021,
    • sudo useradd ntub2021
  • 再由 centos身分切換到ntub2021身分
    • [centos@localhost ~]$ su - ntub2021
  • ntub2021的身分看不到 centos的檔案
    • [ntub2021@localhost ~]$ du -sh /home/*
    • du: cannot read directory '/home/centos/.mozilla/firefox': Permission denied
[centos@localhost home]$ sudo useradd ntub2021 [sudo] password for centos: [centos@localhost home]$ sudo passwd ntub2021 Changing password for user ntub2021. [centos@localhost ~]$ su - ntub2021 Password: [ntub2021@localhost ~]$ du -sh /home/* 0 /home/201410H3.txt 0 /home/201410S.txt du: cannot read directory '/home/centos/.mozilla/firefox': Permission denied du: cannot read directory '/home/centos/.mozilla/systemextensionsdev': Permission denied du: cannot read directory '/home/centos/.config': Permission denied 60K /home/centos 0 /home/ntcb1501 0 /home/ntcb1502
  • ntub2021的身分看不到 centos的檔案,用chmod開放centos目錄權限
[centos@localhost home]$ sudo chmod 755 /home/* -R
[centos@localhost ntcb1501]$ cd /home/centos/ [centos@localhost ~]$ ls -l drwxr-xr-x. 5 root root 43 Mar 10 18:20 public_html [centos@localhost ~]$ sudo chown centos:centos public_html/ -R [centos@localhost ntcb1501]$ cd /home/centos/ [centos@localhost ~]$ ls -l drwxr-xr-x. 5 centos centos 43 Mar 10 18:20 public_html
  • /var/的目錄有些系統資訊,只有管理者才能讀取
[centos@localhost html]$ du -sh /home/* 0 /home/03102 0 /home/0310s 0 /home/201410H.txt 0 /home/201410S.txt 123M /home/centos 4.0K /home/ntcb1504 4.0K /home/ntcb1505 12K /home/ntubimd 52K /home/ntubimd001 [centos@localhost home]$ sudo du -sh /var/*
[centos@localhost home]$ pwd
/home
[centos@localhost home]$ sudo chmod 750 ntub2021 -R

drwx------.  4 ntub03   ntub03     92 Mar 24 16:02 ntub03
drwxr-x---.  4 ntub2021 ntub2021   92 Mar 24 14:10 ntub2021

其它相關指令

  • cmp:比對二個檔案之間的差異。

  • diff:比對二個檔案之間的差異,diff與cmp之間的差異在於cmp是逐字比對,而diff是逐列比較,因此,cmp比較適合用於二進位檔案的比較。

  • file:顯示檔案類型。

其它常用指令

其它指令

  • date:顯示目前日期時間,亦可更新日期時間。

  • 另外,clock指令也可以顯示目前的日期時間,clock指令只有root身份才能使用。

  • 修改日期的格式是『月 日 時 分 年 . 秒』,和我們平常的系統不太相同,要特別注意。

  • 若要修改系統的日期時間,使用date及clock二個指令互相配合。

[root@linux /root]# date					‘顯示目前日期時間
Sat Jul  7 13:09:35 CST 2010
[root@linux /root]# date 031013062021.22	‘修改日期時間
Wed Mar  10 13:06:22 CST 2021
[root@linux /root]# clock –w				‘將修改的日期時間寫入至BIOS中
[root@linux /root]# ntpdate time.stdtime.gov.tw
[root@localhost centos]# ntpdate time.stdtime.gov.tw
bash: ntpdate: command not found...
[root@localhost centos]# date
Wed Mar 10 19:01:33 CST 2021
[root@localhost centos]# systemctl start chronyd.service
[root@localhost centos]# systemctl enable chronyd
[root@localhost centos]# date
Wed Mar 10 11:10:09 CST 2021

CentOS8 網路校時 - chrony

-1. 安裝 chrony

$ sudo dnf install chrony

-2. 修改 /etc/chrony.conf

$ sudo vi /etc/chrony.conf
:set nu 到最後一行再按 o

set nu顯示行號

然後增加下列幾行 Stdtime NTP servers

server tock.stdtime.gov.tw server watch.stdtime.gov.tw server time.stdtime.gov.tw server clock.stdtime.gov.tw server tick.stdtime.gov.tw

-3. 啟動 chronyd - 請注意這邊是 chronyd 唷! 因為是 daemon

$ sudo systemctl start chronyd $ sudo systemctl enable chronyd

Set timezone.

sudo timedatectl | grep Taipei
#Time zone: Asia/Taipei (CST, +0800)
sudo timedatectl set-timezone Asia/Taipei

#In Linux systems, the Network Time Protocol (NTP) protocol is implemented by a daemon running in user space.
#https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/configuring_basic_system_settings/index#differences-between-ntp-and-chrony_using-chrony-to-configure-ntp

CentOS 8 特色功能

目前,最新版本為 CentOS 8.1 (1911),並且與舊版 CentOS 7.x 有很大的不同,舉例來說,套件庫主要有二個「BaseOS 和 AppStream」、預設檔案系統採用「XFS」、套件管理工具由過去的 YUM 升級為「dnf」、時間校時工具僅採用「Chrony」、網路組態僅採用「NetworkManager」、防火牆 Firewalld 底層由 iptables 改為「nftables」……等,詳細資訊請參考

Considerations in adopting RHEL 8 Red Hat Enterprise Linux 8 | Red Hat Customer Portal

使用者

  • whoami:告知目前正在操作系統的使用者身份。
[root@Linux root]# whoami
  • who:顯示目前登入到系統的使用者、登入的日期。

  • 底下的例子是我直接在Linux的電腦中登入的,所以第二個欄位處會顯示『tty1』、『tty2』…來代表是使用那一個虛擬終端機(也就是用Ctrl + Alt + F1或Ctrl + Alt + F2…切換的畫面)登入的:

[root@Linux root]# who root tty1 Apr 27 17:05 ntubim tty2 Apr 27 17:06 ntubim pts/0 Apr 27 16:58

上機操作:

[root@localhost Desktop]# ps aux | grep vim
[root@localhost Desktop]# ps aux | grep firefox
[root@localhost Desktop]# kill -9 6019
[root@localhost Desktop]# top

Other User:

vi test.txt

Root:

ps aux | grep centos sudo kill -9 PID

Linux顯示系統執行中的程序,最常用的有ps -ef 和ps aux。Unix系統中的兩種風格,System V風格和BSD 風格,而ps -ef被用在System V Style中,ps aux最初用到Unix Style(BSD)中。

原文網址:https://kknews.cc/code/qnnpkmg.html

How to configure a static IP address on RHEL 8 / CentOS 8 Linux

https://linuxconfig.org/rhel-8-configure-static-ip-address

RHEL / CentOS 8 設定網路固定 IP

https://www.opencli.com/linux/rhel-centos8-setup-static-ip

How to Configure Network Settings on CentOS 7

https://phoenixnap.com/kb/configure-centos-network-settings
https://blog.gtwang.org/linux/centos-linux-static-network-configuration-tutorial/

取得登入資訊 /var/log/wtmp

$ last

系統版本

/etc/system-release

輸出重導

  • 正常輸出
    ls -l 1> ok.txt
    通常省略1 ls -l > ok.txt
  • 錯誤輸出
    ls -l 2> err.txt
    儲存輸入跟輸出
    兩個檔案 ls -l xxx.txt 1> ok.txt 2> err.txt
    同個檔案 ls -l xxx.txt > output.txt 2>&1

建立 or 清空檔案

Server Wiki

dywang (呆王)

mirrorlist

Rocky Linux yum/dnf Repo 镜像

[研究]CentOS, Rock Linux 的 yum, dnf 連去 Internet 的哪裡

[如何使用 CCNS 鏡像站服務?](https://)