# RHCSA證照筆記 ## 考前須知 * 在外部開終端機,才可以剪貼ip等資訊 * 必備技巧: 1. 設定網路 2. 修改root密碼 3. 設定repo ### [<font color='deep red'>老師上課影片</font>](https://youtube.com/playlist?list=PLeIvob5Ra52rvfePfAkPGg6wX44ZkHuOA) <font color='blue'>重開機</font>  <font color='blue'>跳到下面這個畫面要趕快按方向鍵上or下,使其停在畫面中</font>  <font color='blue'>選擇第一個標準選單 按'e'(edit)進去修改</font>  <font color='blue'>圖中兩個console刪除,並在本行最後加入rd.break</font>  <font color='blue'>好了ctrl+x(to start),mount可以檢查磁碟掛載,會發現目前vda1 掛載在read only(ro)的模式,我們要更改他的模式,mount -o remount,rw /dev/vda1</font> ```bash $mount $mount -o remount,rw /dev/vda1 ```  <font color='blue'>第二件事要改chroot改到sysroot底下 </font> ```bash $chroot /sysroot $cd /etc $cat passwd #就可以看密碼了 $passwd #改密碼 $touch /.autorelabel #考場selinux都是啟動的 $exit $exit #兩次離開 ``` --- ## 第一題 設網路  ### server1 ```bash $hostnamectl #可以查看主機名稱 $hostnamectl set-hostname station.domain11.example #設主機名稱 $nmcli con show #查看當前網路 $nmcli con add con-name net1 type ethernet ifname enp1s0 ipv4.method manual ipv4.addresses 10.0.2.2/24 ipv4.dns 8.8.8.8 ipv4.gateway 10.0.2.1 connection.autoconnect yes#按照題目設定 $nmcli con modify "Wired connection 1" connection.autoconnect no #把舊的自動連線關閉 $nmcli con up net1 #啟動 $nmcli con show net1#查看 ``` ### server2 ```bash $hostnamectl $hostnamectl set-hostname station.domain12.example $nmcli con show $nmcli con add con-name net2 type ethernet ifname enp1s0 ipv4.method manual ipv4.addresses 10.0.2.3/24 ipv4.dns 8.8.8.8 ipv4.gateway 10.0.2.1 connection.autoconnect yes#按照題目設定 $nmcli con modify "Wired connection 1" connection.autoconnect no #把舊的自動連線關閉 $nmcli con up net2 #啟動 $nmcli con show net2#查看 ``` --- ## 第二題 - 新增套件庫  ### 正確版 ```bash= #(server1) su - cd /etc/pki/rpm-gpg #到這個目錄下 ls wget http://content.example.com/RPM-GPG-Key #將GPG Key下載下來 cd /etc/yum.repos.d #repository的目錄 ls vim AppStream.repo #副檔名一定要是repo [AppStreasm] #代表名稱,怕打錯可以用複製貼上的 name = AppStreasm # 再次宣告名稱,也可不宣告 baseurl = http://content.example.com/AppStream #題目要求的url enabled = 1 #要啟動,所以 = 1 gpgcheck = 1 #要做gpg的檢查 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-Key #gpgkey放在本機檔案中(注意本機檔案室三個/) [baseos] #代表名稱,怕打錯可以用複製貼上的 name = baseos # 再次宣告名稱,也可不宣告 baseurl = http://content.example.com/BaseOS #題目要求的url enabled = 1 #要啟動,所以 = 1 gpgcheck = 1 #要做gpg的檢查 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-Key #gpgkey放在本機檔案中(注意本機檔案室三個/) yum repolist #確定可以啟動 scp AppStream.repo root@serverc.lab.example.com:~/. #將AppStream.repo檔案複製到另一台機器 # (server2/b) su - ls -l mv AppStream.repo /etc/yum.repos.d/. #將AppStream.repo移到該到的地方 cd /etc/pki/rpm-gpg wget http://content.example.com/RPM-GPG-Key yum repolist ``` ### 練習版 #### (由於電腦非考試環境,所以沒有RPM-GPG-Key,須自己假造) ```bash= # (server1/a) su - cd /etc/pki/rpm-gpg #到這個目錄下 ls cp RPM-GPG-KEY-redhat-release RPM-GPG-Key #假裝RPM-GPG-KEY-redhat-release為RPM-GPG-Key ls -l #check cd /etc/yum.repos.d #repository的目錄 ls vim AppStream.repo #副檔名一定要是repo [AppStreasm] #代表名稱,怕打錯可以用複製貼上的 name = AppStreasm # 再次宣告名稱,也可不宣告 baseurl = http://content.example.com/AppStream #題目要求的url enabled = 1 #要啟動,所以 = 1 gpgcheck = 1 #要做gpg的檢查 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-Key #gpgkey放在本機檔案中(注意本機檔案室三個/) [baseos] #代表名稱,怕打錯可以用複製貼上的 name = baseos # 再次宣告名稱,也可不宣告 baseurl = http://content.example.com/BaseOS #題目要求的url enabled = 1 #要啟動,所以 = 1 gpgcheck = 1 #要做gpg的檢查 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-Key #gpgkey放在本機檔案中(注意本機檔案室三個/) yum repolist #確定可以啟動 scp AppStream.repo root@serverc.lab.example.com:~/. #將AppStream.repo檔案複製到另一台機器 # (server1/b) su - ls -l mv AppStream.repo /etc/yum.repos.d/. #將AppStream.repo移到該到的地方 cd /etc/pki/rpm-gpg ls cd /etc/pki/rpm-gpg #到這個目錄下 ls cp RPM-GPG-KEY-redhat-release RPM-GPG-Key yum repolist ``` --- ## 第三題-recommended setting  ```bash= # (server1) yum install tuned #下載tuned systemctl start tuned #開始tuned systemctl enable tuned #保持啟用狀態 systemctl status tuned #檢查tuned狀態 #接下來設定他所建議的recommended的模式 tuned-adm profile #可查看現在activity的profile是甚麼=>最後一行 tuned-adm recommend #顯示機器建議調整的模式 tuned-adm profile + 機器建議的模式 #調整方式 tuned-adm profile #檢查activity的profile 是否成功調整 ``` --- ## 第四題-使用者建立  ```bash= #(server1) cd /etc/skel ls -la #裡面包含所有在新增使用者帳號時複製到家目錄裡頭的東西 touch newuserfile #新增檔案 groupadd accouting #新增accouting的群組 useradd -G accounting harry #新增成員 useradd -G accounting natasha useradd -s /sbin/nologin Tom #使Tom無法登入login shell passwd harry #=>密碼:verysafepw passwd natasha #=>密碼:verysafepw -------------檢查----------------- id +user #檢查user cat /etc/passwd #查看nologin是否成功=>最後一行 cd /home/harry ls #查看newuserfile是否建立成功 cd /home/natasha ls #查看newuserfile是否建立成功 cd /home/Tom ls #查看newuserfile是否建立成功 (#開啟另一個視窗) ssh harry@server1 ssh natasha@server1 #兩者皆可成功登入 ssh Tom@server1 #Tom則無法連線 ``` --- ## 第五題 - 建立新目錄、設定特殊權限  ```bash cd /home mkdir accounting #建立accounting的資料夾 ls -la #check chmod 3770 accounting #因特殊權限(setgid、sticky bit),所以3放前面 ls -l #check chgrp accounting accounting #accounting這個資料夾群組為accounting擁有 ls -la #check useradd imspecial getfacl accounting/ setfacl -m user:imspecial:r-x accounting/ #新增一個使用者,給他讀取任何東西的權限(不是r--,而是r-x,因為要讓他進入到使用夾當中,要特別注意此部分),針對accounting這個資料夾 getfacl accounting/ #check #測試 su - harry cd /home/accounting ls -l logout su - natasha cd /home/accounting touch natasha #不管誰建檔案,都會是accounting所擁有 rm harry#由於stricky bit,所以不可以刪除檔案 logout su - imspecial cd /home/accounting ls -la cat harry #可以開始讀檔案 ``` --- ## 第六題 - 找到所有由harry擁有的檔案,複製到資料夾中  ```bash pwd #check at /root ls mkdir harrysfiles ls -l#check find / -user harry #從全硬碟(/)開始找,指定user是harry find / -user harry -exec cp -frp {} /root/harrysfiles/ \; #複製檔案,\;代表exec結束的意思,有一些錯誤狀況出現不管它,因為那是不能複製的檔案 ls cd harrysfiles ls -la #check ``` --- ## 第七題 - 找檔案中所有包含abcd這行字的東西,放入/root/testfile中  **由於目前/root/tmpfile沒有此檔案,所以先假造一個** ```bash= cd cp /etc/passwd tmpfile ls #check vim tmpfile #自己把其中幾行添加abcd grep abcd tmpfile grep abcd tmpfile > /root/testfile #將grep的東西導向testfile檔案 ls cat testfile #check ``` --- ## 第八題 - 檔案壓縮  ```bash tar cjvf /root/archive.bz2 /root/testfile#(bzip - j,gzip - z,xzip - J) ls -la #check ``` --- ## 第九題 - 改密碼  ```bash= #不要做錯台 passwd #輸入新密碼freda123 ``` --- ## 第十題 - 在每天14:23分把date指令輸出、設定log訊息   ```bash= crontab -e 23 14 * * * date >> /root/mydate #分時幾月幾號星期幾,呼叫date這個指令,把輸出放到/root/mydate,append - >>,overwrite - > crontab - l #check at now+2days at> logger hello at> ctrl+d at -c 1 #最後要看到一個logger hello ``` --- ## 第十一題 - 系統時間同步  ```bash= systemctl status chronyd vim /etc/chrony.conf #將server 172.25.254.254 iburst 註解掉 server vvv.zzz.example.com iburst systemctl restart chronyd systemctl status chronyd #check,第一行enabled,第二行active chronyc sources #考試時會看到有在進行同步 ``` --- ## 第十二題 - 建html檔  ```bash systemctl status httpd #check有沒有apache yum install httpd systemctl start httpd systemctl enable httpd systemclt status httpd mkdir /web cd /web vim index.html Hello, from Beta ls -la #check權限 ls -lZ ls -ldZ . ls -ldZ /var/www/html semanage fcontext -a -t httpd_sys_content_t '/web(/.*)?' restorecon -Rv /web #chcek ls -lZ #check semanage port -l | grep http semanage port -a -t http_port_t 82 -p tcp semanage port -l | grep http #check vim /etc/httpd/conf/httpd.conf Listen 82 #80改成82 #DocumentRoot "/var/www/html" DocumentRoot "/web" <Directory "/web"> AllowOverride None Require all granted </Directory> firewall-cmd --list-all firewall-cmd --permanent --add-port=82/tcp firewall-cmd --reload firewall-cmd --list-all #check ports systemctl restart httpd systemctl status httpd curl http://serverd.lab.example.com:82/ #會顯示出Hello, from Beta ``` --- ## 第十三題 - 建立swap partition  ```bash= lsblk fdisk /dev/vdb n p Enter Enter +2G p lt 82(Linux swap) w partprobe mkswap /dev/vdb1 vim /etc/fstab /dev/vdb1 swap swap defaults 0 0 swapon -a #掛載起來 free #check會有2G空間起來 ``` --- ## 第十四題-掛載磁碟  ```bash= lsblk #先知道自己有沒有磁碟可以用 fbdisk /dev/vdb #(老師自選的磁碟) 出現 command (m for help): n select (default p):p partition nmuber: enter first sector: enter last sector : enter 出現 command (m for help): p #(查看磁碟) #linux 格式: 用l列出 出現 command (m for help): l 會找到Linux LVM #(影片中位於8e) 出現 command (m for help): t Hex code (type L to list all codes):8e 出現 command (m for help): p #type 應更改為linux LVM 出現 command (m for help): w #(寫入) partprobe pvcreate /dev/vdb1 vgcreate -s 16m vgroup0 /dev/vdb1 #-s:physical extend sizes vgdisplay #(查看檢查 PE Size:16) lvcreate -n lvolume0 -l 50 vgroup0# -l:指定extend的數量,從vgroup0 lvdisplay #(檢查 LV Path是否是 /dev/vgroup0/lvolume0) #分割好後進行格式化的動作 mkfs -t vfat /dev/vgroup0/lvolume0 mkdir /lvolume0 vim /etc/fstab 在最後一行輸入 /dev/vgroup0/lvolume0 /lvolume0(將前面那串掛載到後面資料夾) vfat(題目給定的格式) defaults 0 0 #完成後WQ #測試檢查 mount -a #(編輯fstab再用mount -a可以確保下次開機可以載入進去) lsblk #看一下最下面vdb->vdb1->vgroup0-lvolume0=>是否掛載到 /lvolume0 ``` --- ## 第十五題-建立vdo裝置、格式化、永久掛載  ```bash= #建立裝置 yum serch vdo #搜尋和vdo有關的套件 yum install vdo kmod-kvdo systemctl start/enable/status vdo vdo craete --name myvdo1 --device /dev/vdb(sdc) --vdoLogicalSize=50G(3G) #教室沒有sdc因此以vdb代替,Size不夠因此以3G代替 vdostats 查看 #格式化 mkfs -t xfs /dev/mapper/myvdo1 #永久掛載 mkdir /myvdo1 vim /etc/fstab /dev/mapper/myvdo1 /myvdo1 xfs defaults,x-systemd.requires=vdo.service 0 0 #x-systemd.requires=vdo.service取代default做參數 mount -a lsblk ``` --- ## 第十六題-autofs、自動掛載   ```bash= id remoteuser5 #確認id是否存在 useradd remoteuser5 passwd password yum install autofs #autofs:當我用到某一個資料夾的時候可以自動掛載 systemctl start/enable/status autofs mkdir -p /rhome/ldap #-p:創建多個目錄 ls -ld /rhome/ldap vim /etc/auto.master /rhome/ldap /etc/auto.ldap #第8行,在前面的目錄加入後面的設定檔 vim /etc/auto.ldap * -rw domain11.example.com:/rhome/ldap/& # *:表示所有使用者帳號,從domain11.example.com 讀取資料並導出/rhome/ldap/ &:使用者對照到不同的資料夾,需硬背 systemctl restart aotofs ``` --- ## 第十七題-podman、在shell底下建cotainer  ```bash= yum install podman podman pull docker.io/ubuntu #pull:download,下載後會以images方式呈現 podman images podman pull docker.io/httpd podman run -dt docker.io/library/ubuntu /bin/bash #-dt:以deamon的方式持續執行,用影像檔執行,並給他一個shell(題目要求) podman ps #可查看有沒有run起來 podman run -dt -t -p 8080:80 docker.io/library/httpd:latest #因為式網頁伺服器,不確定port是否被用掉,所以自行給定一個給他 podman ps podman container inspect [ubuntu的container id status] | grep Sandbox #container id status在podman ps指令可看到 #出現SandboxKey podman container inspect [ubuntu的container id status] | grep SandboxKey > /sandbox_ubuntu.txt #將SandboxKey導入絕對路徑sandbox_ubuntu.txt vim sandbox_ubuntu.txt #把變數名稱拿掉只下key值 #接下來的http重複操作,只是導向檔案換至sandbox_httpd.txt ``` --- ## 第十八題  ```bash= podman network create --subnet 10.0.5.0/24 newsybnet podman run -dt --name linda --network newsybnet -v rhelvol:/database rhel7 podman commit linda myimage:v1 ``` --- ## 第十九題-容器、建立service  ```bash= (server1) podman pull redis podman run -dt --name redis -p 6369:6379 redis podman ps systemctl status redis systemctl disable sshd #先關閉在啟動就可以看到要設定的路徑 systemctl enable sshd cd /usr/lib/systemd/system cp sshd.service redis.service #另開一個視窗(server1) which podman #找到路徑 vim redis.service [Unit] Description=Redis Service #下面三行delete [Service] Restart=on-failure Type=notify ExecStrat=/usr/bin/podman start redis #路徑為which podman 找到的 ExecStop=/usr/bin/podman stop redis KillMode=none #(可有可無) [Install] WantedBy=multi-user.target systemctl start/enable/status redis #若前面podman run少設定-p導致status fail沒關係,主要有在sysytemd裡面啟動servive就有分數 ``` --- ## 第二十題-特殊權限  ```bash= cp /etc/fstab /var/tmp/fstab cd /var/tmp ls -l chown root:root fstab #更改所有者和群組 getfacl fstab #查看權限 useradd natasha useradd hary setfacl -m user:natasha:rw- fstab getfacl fstab setfacl -m user:hary:--- fstab getfacl fstab #檢查 su - hary cd /var/tmp ls -la cat fstab vim fstab #會顯示權限不夠 su - natasha #重複上述動作 ``` ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up