第 12 堂課:軟體管理與安裝及登錄檔初探

12.1.1:RPM 管理員簡介

目前主流 Linux distribution 大概使用那兩類的軟體安裝機制?

RPM 跟 DPKG

Red Hat 系統使用的線上升級機制為何?

YUM 線上升級

何謂軟體的相依性問題?

就是有一個軟體要用到另外一個軟體,所以當另外一個軟體出錯時,會影響本來使用的軟體。

12.1.2:RPM 軟體管理程式: rpm

找出你的 Linux 是否有安裝 logrotate 這個軟體?

yum install logrotate
rpm -q logrotate

----------------------------------
logrotate-3.8.6-15.el7.x86_64

列出上題當中,屬於該軟體所提供的所有目錄與檔案

rpm -ql logrotate

-----------------------------------------------------
/etc/cron.daily/logrotate
/etc/logrotate.conf
/etc/logrotate.d
/etc/rwtab.d/logrotate
/usr/sbin/logrotate
/usr/share/doc/logrotate-3.8.6
/usr/share/doc/logrotate-3.8.6/CHANGES
/usr/share/doc/logrotate-3.8.6/COPYING
/usr/share/man/man5/logrotate.conf.5.gz
/usr/share/man/man8/logrotate.8.gz
/var/lib/logrotate
/var/lib/logrotate/logrotate.status

列出 logrotate 這個軟體的相關說明資料

rpm -qi logrotate

找出 /bin/sh 是那個軟體提供的?

rpm -qf /bin/sh

如果我誤砍了某個重要檔案,例如 /etc/crontab,偏偏不曉得他屬於哪一個軟體,該怎麼辦?

1. rpm -qf /etc/crontab
2. google

列出你的 Linux 內的 logrotate 這個軟體是否被更動過

rpm -v logrotate

查詢一下,你的 /etc/crontab 是否有被更動過

rpm -vf /etc/crontab

定期在星期天 2:00 進行一次全系統的軟體驗證,並將驗證結果更新到 /root/rpmv.txt 檔案中

vi /etc/crontab

-----------------------------加上這行----------------------------------
0 2 * * 0 /usr/bin/rpm -Va > /root/rpm.txt

12.2.1:利用 yum 進行查詢、安裝、升級與移除功能

那一個軟體提供了 ifconfig 這個指令,顯示並查閱該軟體的描述 (Description) 嘗試了解該軟體的任務

yum search ifconfig

--------------------------------------------------------------------------------------
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.yzu.edu.tw
 * extras: ftp.yzu.edu.tw
 * updates: ftp.yzu.edu.tw
============================== Matched: ifconfig ===============================
net-tools.x86_64 : Basic networking tools
[root@5f181c4bc7b1 ~]# yum provides ifconfig
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.yzu.edu.tw
 * extras: ftp.yzu.edu.tw
 * updates: ftp.yzu.edu.tw
base/7/x86_64/filelists_db                               | 6.9 MB     00:00     
extras/7/x86_64/filelists_db                             | 519 kB     00:00     
updates/7/x86_64/filelists_db                            | 1.3 MB     00:00     
net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools
Repo        : base
Matched from:
Filename    : /sbin/ifconfig


yum info ifconfig

--------------------------------------------------------------------------------------
yum info ifconfig
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.yzu.edu.tw
 * extras: ftp.yzu.edu.tw
 * updates: ftp.yzu.edu.tw
Error: No matching Packages to list

列出所有以 qemu 為開頭的軟體名稱

yum search qemu 

----------------------------------------------------------------------------------------
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.yzu.edu.tw
 * extras: ftp.yzu.edu.tw
 * updates: ftp.yzu.edu.tw
============================== N/S matched: qemu ===============================
centos-release-qemu-ev.noarch : QEMU Enterprise Virtualization packages from the
                              : CentOS Virtualization SIG repository
ipxe-roms-qemu.noarch : Network boot loader roms supported by QEMU, .rom format
libvirt-daemon-driver-qemu.x86_64 : QEMU driver plugin for the libvirtd daemon
qemu-guest-agent.x86_64 : QEMU guest agent
qemu-img.x86_64 : QEMU command line tool for manipulating disk images
qemu-kvm.x86_64 : QEMU is a machine emulator and virtualizer
qemu-kvm-common.x86_64 : QEMU common files needed by all QEMU targets
libvirt-lock-sanlock.x86_64 : Sanlock lock manager plugin for QEMU driver
qemu-kvm-tools.x86_64 : KVM debugging and diagnostics tools

  Name and summary matches only, use "search all" for everything.

有個名為 qemu-kvm 的軟體功能為何?

yum info qemu-kvm

------------------------------------------------------------------------------------
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.yzu.edu.tw
 * extras: ftp.yzu.edu.tw
 * updates: ftp.yzu.edu.tw
Available Packages
Name        : qemu-kvm
Arch        : x86_64
Epoch       : 10
Version     : 1.5.3
Release     : 156.el7_5.2
Size        : 1.9 M
Repo        : updates/7/x86_64
Summary     : QEMU is a machine emulator and virtualizer
URL         : http://www.qemu.org/
License     : GPLv2+ and LGPLv2+ and BSD
Description : qemu-kvm is an open source virtualizer that provides hardware
            : emulation for the KVM hypervisor. qemu-kvm acts as a virtual
            : machine monitor together with the KVM kernel modules, and emulates
            : the hardware for a full system such as a PC and its associated
            : peripherals.

例題:基本的查詢與安裝任務

  1. 用 rpm 本機查詢有沒有安裝 pam-devel 這個軟體?
  2. 用 yum 查詢是否有這個 pam-devel 的軟體名稱?
  3. 用 yum 線上安裝這個 pam-devel 的軟體。
  4. 安裝完畢後,透過 rpm 查詢 pam-devel 的所屬檔名有哪些
#1
rpm -q pam-devl

----------------------------------
package pam-devl is not installed

#2
yum search pam-devel

----------------------------------------------------------------------------------------
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.yzu.edu.tw
 * extras: ftp.yzu.edu.tw
 * updates: ftp.yzu.edu.tw
============================ N/S matched: pam-devel ============================
pam-devel.i686 : Files needed for developing PAM-aware applications and modules
               : for PAM
pam-devel.x86_64 : Files needed for developing PAM-aware applications and
                 : modules for PAM

  Name and summary matches only, use "search all" for everything.

#3
yum install pam-devel

#4
rpm -ql pam-devel

例題:基本的升級任務

  1. 先使用 yum check-update 嘗試分析目前伺服器上有比本機 Linux 還要新的軟體群
  2. 隨意選擇一個軟體 (例如 sudo) 來進行單一軟體的升級
  3. 進行一次全系統升級
  4. 如果需要每天凌晨 3 點自動背景進行全系統升級,該如何處理?同時須注意到 yum 是否需要加上特別的參數?
#1
yum check-update 

#2
yum update acl

#3
yum update

#4
cromtab -e

------------------加上這一行------------------------
0 3 * * * root /usr/bin/yum update

例題:基本的移除任務

  1. 將剛剛安裝的 pam-devel 移除掉 (請自行 man yum 找出移除的選項)
  2. 剛剛已經全系統安裝完畢,請問是否需要重新開機?為什麼?
#1
yum remove pam-devel

#2
不用,就只是把bin檔移除爾以

12.2.2:yum 的設定檔

例題:

  1. 由於 mirrorlist 需要一段時間去測試最快的伺服器,並且偶而會測試錯誤。因此請自行手動找到最近的伺服器, 將 mirrorlist 修改成 baseurl 的方式來設定好 [base], [updates], [extras] 三個軟體庫的內容。
  2. 修改完成後,由於修改過 yum 設定檔,為了擔心清單快取會有重複或者是其他問題,請 yum clean all 清除所有系統快取的資訊。
  3. 再次的 yum update 測試一下是否正確的下載了清單資訊。
這題第一步驟主要實作就是註解mirrorlist,然後把baseUrl反註解,然後政是否有設定成功

例題:Red Hat 提供了 EPEL 的計畫,由許多志工提供了很多針對 RHEL/CentOS 打包好的軟體,提供給用戶使用。但這些軟體並非官網提供, 因此其軟體庫並沒有在預設的設定檔內,請依據底下的方式來處理 EPEL 的軟體支援:

  1. 先上網查詢 EPEL,分析到如下網頁: https://dl.fedoraproject.org/pub/epel/7/x86_64/
  2. 在 /etc/yum.repos.d/ 新增一名為 epel.repo 的檔案,內容填寫 [epel], name, baseurl, gpgcheck = 0, enabled=0 五個項目即可
  3. 使用 yum repolist all 列出系統上所有的軟體庫,並查看 epel 是否在其中?
  4. 手動使用這個軟體庫時,指令列加上 yum --enablerepo epel 之後,填寫需要的動作。例如列出 (list) netcdf 這個軟體
  5. 承上,若需要安裝 netcdf 這個軟體時,該如何下達指令?
#1 可以直接灌epel-release

yum install epel-release

#2
vi /etc/yum.repos.d/epel.repo

----------------------------------------------------
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

#3
yum repolist all

..太多了


#4
yum --enablerepo epel search netcdf

#5
yum --enablerepo epel install netcdf

12.3.1:CentOS 7 登錄檔簡易說明

例題:

  1. 檢查一下上述的三個資料中,哪幾個是服務?哪幾個是執行檔?
  2. 並檢查服務項目有沒有啟動?而執行檔又是如何執行的?
#1
服務:systemd-journald.service、rsyslog.service
執行檔:logrotate

#2
檢查服務項目: systemctl status ${服務名稱}
執行檔如何執行: 直接 logrotate ${命令參數}

12.3.2:rsyslog 的設定與運作

例題:

  1. 設計一個名為 /var/log/admin.log 的登錄檔,將系統的所有登錄資訊通通塞入這個檔案內。
Docker Centos沒有rsyslog.conf,不過猜測這提要我們更改rsyslog.conf,多加一個auth.* /var/log/admin.log

12.3.3:systemd-journald.service 簡介

例題:

  1. 不加任何參數與選項,列出所有的日誌資料
  2. (1)先用 date 找出日期格式 YYYY-MM-DD 的日期,並以該日期的資訊顯示 log,以及(2)僅今天及(3)僅昨天的日誌資料內容
  3. 只找出 crond.service 的資料,同時只列出最新的 10 筆即可
  4. 找出 su, login 執行的登錄檔,同時只列出最新的 10 筆即可
#1

journalctl

#2

today=$(date "+%Y-%m-%d")
yesterday=$(date -d yesterday "+%Y-%m-%d")
journalctl --since $yesterday --until $today

#3
journalctl _SYSTEMD_UNIT=crond.service -n 10

#4
journalctl -u 'systemd-logind' -n 10

12.3.4:透過 logwatch 分析

例題:

  1. 使用 rpm 檢查是否已經安裝了 logwatch
  2. 使用 yum 立刻安裝 logwatch 這套軟體
  3. 使用 rpm -ql 的方式,查詢 logwatch 的所有檔案,並找出與 cron 有關的設定檔名
  4. 承上,找到上述檔案後觀察內容,並將執行的方法『立刻』執行一遍
  5. 使用 root 的身份輸入 mail 查詢輸出的資訊
#1
rpm -q logwatch

------------------------------------------------
package logwatch is not installed

#2
yum install logwatch

#3
ll $(rpm -ql logwatch | grep cron)

----------------------------------------------------------------------------------------------
-rwxr-xr-x 1 root root   434 Apr 11 12:21 /etc/cron.daily/0logwatch
-rw-r--r-- 1 root root   881 Apr 11 12:21 /usr/share/logwatch/default.conf/logfiles/cron.conf
-rw-r--r-- 1 root root   914 Apr 11 12:21 /usr/share/logwatch/default.conf/services/cron.conf
-rw-r--r-- 1 root root  2561 Apr 11 12:21 /usr/share/logwatch/scripts/logfiles/cron/applydate
-rw-r--r-- 1 root root 15764 Apr 11 12:21 /usr/share/logwatch/scripts/services/cron

#4
logwatch

#5
mail

------------------------
No mail for root

12.4:課後練習操作

請回答下列問題,並將答案寫在 /root/ans12.txt 檔案內:

  1. 請查出 /etc/sudoers 這個檔案屬於哪一個軟體 (1)寫下查詢的指令與 (2)寫下查詢的結果
  2. 承上,上面查到的這個軟體中,該軟體內有那些檔案被修改過?(1)寫下查詢的指令與 (2)寫下查詢的結果
  3. (從本題以後,請完成網路設定後再繼續實作與回答下列問題) 承上,上面查到的軟體中,如果因為有問題,所以需要重新安裝,可以使用怎麼樣的指令直接線上重新安裝? 請寫下安裝的指令
  4. 有個檔名為 misc_conv.3.gz ,這個檔案屬於哪個軟體?(1)寫下查詢的指令與 (2)寫下查詢的結果
  5. root 曾經在某個時段利用 sudo 做過【 cat /etc/shadow 】這個指令,請依據登錄檔的查詢結果, (1)將查詢到的登錄資訊轉存到這個檔案的這個段落來 (2)root執行的時間點是甚麼時候 (日/月/時/分)
#1
rpm -qf /etc/sudoers

--------------------------------
sudo-1.8.19p2-13.el7.x86_64

#2
rpm -V sudo

--------------------------------
S.5....T.  c /etc/sudoers

#3
yum reinstall sudo

#4
rpm -Vf misc_conv.3.gz

#5
cat /var/log/secure

使用網路安裝相關軟體

  1. 請以貴校的 FTP 或 http 為主,設定好你的 CentOS server 的 YUM 設定檔。以崑山來說,可使用 http://ftp.ksu.edu.tw/ 來查詢所需要的三個軟體倉庫。
  2. 請使用 yum 這個指令的相關功能,找到有關【 epel 】的關鍵字軟體,並且安裝該軟體
  3. 請設定每天凌晨 3 點自動背景進行全系統升級。
  4. 這部主機需要有個科技用的軟體 netcdf-fortran,請安裝這套軟體
  5. 這部主機需要作為未來開發軟體之用,因此需要安裝一個開發用的軟體群組,
#1

vi /etc/yum.repos.d/epel.repo

#----------------------------------------------------

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
metalink=http://ftp.ksu.edu.tw/
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#----------------------------------------------------

yum repolist all

#2

yum --enablerepo epel search epel

#-------------------------------------------------------------------------------
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.yzu.edu.tw
 * epel: mirror01.idc.hinet.net
 * extras: ftp.yzu.edu.tw
 * updates: ftp.yzu.edu.tw
============================== N/S matched: epel ===============================
epel-release.noarch : Extra Packages for Enterprise Linux repository
                    : configuration
epel-rpm-macros.noarch : Extra Packages for Enterprise Linux RPM macros

  Name and summary matches only, use "search all" for everything.

#-------------------------------------------------------------------------------


yum --enablerepo epel install epel-rpm-macros.noarch

#3

vi /etc/crontab
-----------------------------加上這行----------------------------------
0 3 * * 0 /usr/bin/yum update

#4
yum --enablerepo epel install netcdf-fortran


#5
yum --enablerepo epel grouplist
yum --enablerepo epel groupinstall "Development Tools"

登錄檔處理

  1. 請透過相關動作,讓你的全部登錄資訊 (info 以上等級) 寫入 /var/log/full.log 檔案內
  2. 請讓所有的登錄資訊在進行 log rotate 時,必須要有壓縮
  3. 請安裝 logwatch ,以便未來登錄檔的查詢之用。
#1
vi /etc/rsyslog.conf

-------------------------------------------------------
auth.info                     /var/log/full.log

#2
vi /etc/logrotate.conf

-------------加上-----------------
compress

#3
yum install logwatch

results matching ""

    No results matching ""