日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

红帽RHCE培训记录(二)

發布時間:2024/1/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 红帽RHCE培训记录(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

shell 編程


  • 絕對路徑 /root/scripts/file.sh #要有執行權限
  • 相對路徑 ./file.sh #要有執行權限
  • bash + 腳本名 #不需要執行權限和編譯
  • source 腳本名 #腳本中的變量會在當前 shll 生效
  • 前面三種是在子 shell 中執行,第四種是在當前 shell 執行

    $[],中括號里面可以進行運算

    位置化參數

    $0 腳本名
    $1 第1個參數
    $* 所有的參數,雙引號引起來時參數視為單個字符串
    $@ 所有的參數,雙引號引起來時,每個參數作為一個個體
    $# 參數的個數
    $$ 當前進程的 PID
    $? 上一個命令的返回值,0表示成功

    read

    從命令行中輸入字符串,賦值給一個變量

    read -p "Enter your name:" NAME [student@example Documents]$ read -p "Enter your name:" NAME Enter your name:zhangsan [student@example Documents]$

    不加變量名,默認賦值給 REPLY 變量。

    -t 超時時間(秒)

    exit 退出碼

    程序執行后會攜帶一個退出碼
    0 代表成功,1-255 代表失敗;儲存在系統變量 $? 中;exit num 可以中斷程序并設置退出碼為 num

    例如,判斷 /etc/profile 文件里是否有關鍵字 HISTSIZE

    [student@example Documents]$ grep HISTSIZE /etc/profile HISTSIZE=1000 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL [student@example Documents]$ echo $? 0

    條件執行運算符

    && 代表邏輯與,前一個命令執行成功會執行后一個
    || 代表邏輯或,前一個命令執行成功,后面的命令不會再執行

    布爾運算符

    ! 非運算
    -o 或運算
    -a 與運算

    數值運算符

    判斷變量是不是數字:

    [["$num10" =~ ^[0-9]+$ ]]

    ps: shell中各種括號的作用()、(())、[]、[[]]、{}

    字符串運算符

    = 檢測兩個字符串是否相等。 等于返回 0 [ $a = $b ]
    != 檢測兩個字符串是否相等。等于返回 1 [ $a != $b ]

    [ -n “$A” ] 判斷變量是否定義

    條件判斷

    if 條件表達式 then 指令 fi if 條件表達式;then 指令 fi if 條件表達式;then 指令1 else 指令2 fi if 條件表達式1;then 指令1 elif 件表達式2;then 指令2 else 指令3 fi

    case語句

    case 變量名 in值1)指令1;;值2)指令2;;*)指令4;; esac

    for循環

    直接列出元素

    for i in 1 3 5 do指令 done

    使用大括號

    for i in {1...5} do指令 done

    使用 seq

    for i in $(seq 1 5) do指令 done

    使用命令的結果

    for i in $(ls *.sh) do指令 done

    ps: shell 編程內容較多,建議找一本相應的書籍學習,本文僅列出了很少一部分。

    計劃任務


    一次性計劃任務

    at 管理一次性計劃任務

    at timespec 創建計劃任務,ctrl+d 結束輸入
    at timespec < script 從腳本輸入
    at -l 列出計劃任務
    at -c jobnum 查看計劃任務的詳細信息
    at -d jobnum 刪除計劃任務

    timespec 舉例
    8:.05am
    4pm+3days
    04:00 2021-08-02
    now+5min
    teatime tomorrow (下午茶時間)

    時間的具體定義在文件 /usr/share/doc/at/timespec

    /etc/at.deny 和 /etc/at.allow 文件可以設置其他用戶的計劃任務權限

    周期性計劃任務

    crontab 命令管理周期性計劃任務

    crontab -e 編輯當前用戶的計劃任務
    crontab -l 列出當前用戶的計劃任務
    crontab -r 刪除當前用戶所有計劃任務
    crontab -u 管理其他用戶的計劃任務

    例如:
    crontab -u admin -l 列出 admin 用戶的計劃任務


    * * * * * echo hello 分鐘 小時 日 月 星期 具體的任務 0-59 0-23 1-31 1-12 0-7

    簡記:分,時,日,月,周

    如果是同一位置的兩個時間點,就以逗號隔開

    舉例

    0 10 1 * * 任務

    每月的 1 號 10:00 執行一次

    0 10 1 * 6 任務

    每月的 1 號 10:00 且該天為星期六時執行一次

    10,20 * * * * 任務

    每小時的第 10 分和第 20 分執行一次

    */5 10 * * * 任務

    每天10點,每隔5分鐘執行一次

    * 10-12 * * * 任務

    每天的 10 到 12 點,每分鐘執行一次(注意,12:00 ~ 12:59在該時間段范圍內)

    30-59/2 14 * * * 任務

    // TODO
    每天的 14:30 ~ 15:00,每兩分鐘執行一次 ?????


    用戶的計劃任務

    cron 任務(使用 crontab 命令創建的任務)保存在 /var/spool/cron 中的文件中,文件的名稱與用戶名相同

    用戶設置計劃任務的權限

    /etc/cron.deny 僅拒絕
    /etc/cron.allow 僅允許

    系統的計劃任務

  • crond 服務管理
  • 使用 /etc/crontab 文件創建的計劃任務,一般只有系統管理員才能操作該文件

    還可以寫在 /etc/cron.d/ 文件夾下的文件里。 /etc/cron.hourly/ 中也有

    建議不要使用命令,而是使用該文件創建計劃任務

  • anacorn
  • 配置文件 /etc/anacrontab

    該服務管理 /etc/cron.daily/、/etc/cron.monthly/、/etc/cron.weekly/ 三個目錄

    查找和處理文件


    find 查找文件

    根據文件名查找

    -name 文件名,支持使用 glob(7) * ? [] [^]
    -iname 文件名,不區分字母大小寫
    -inum n 按 node 號查找
    -link n 鏈接數為 n 的文件

    例如 find /etc -name '*pass*'

    根據文件屬主、屬組查找

    find /home -user admin find /home -group root find /home -uid 1001 find /home -nouser # 無屬主的文件 find /home -nogroup # 無屬組的文件

    根據文件大小查找

    -size [+|-] #UNIT

    UNIT 表示常用單位:k, M, G,#表示給出的具體數值

    #UNIT 對應 (#-1, #)
    -#UNIT 對應 [0, #-1]
    +#UNIT 對應 (#, ∞\infty)

    5M 對應 (4M, 5M]
    -5M 對應 (0, 4M]
    +5M 對應 (5M, ∞\infty)

    例如 find /tmp -size 5M


    根據文件的權限查詢

    -perm

    MODE 精確匹配
    /MODE u, g, o 任何一類對象只要有一位匹配中即可
    -MODE 每一類對象都必須同時擁有指定的權限才可匹配
    0 表示不關注

    find -perm 644 嚴格匹配 644 的文件權限 find -perm /222 u, g, o 任何一類對象有寫權限即匹配 find -perm -222 嚴格匹配寫權限,即每個用戶必須要有寫權限 find -perm -002 嚴格匹配 other 用戶的寫權限 find -perm /600 u 有 r 或 w 權限即可匹配 find -perm -600 u 必須有 rw 權限才可匹配

    根據文件時間戳查找

    以“天”為單位

    -atime

    -mtime

    -ctime

    以“分鐘”為單位

    -amin

    -mmin

    -cmin

    例如 find /tmp -atime +7

    在查找到的文件上繼續操作

    例如

    find /etc/ -name *.conf -exec cp {} /root/data \; 對查找到的每個文件執行拷貝到 /root/data 下的命令

    find ! -perm -100 -exec chmod u+x {} \; 對查找到的文件,沒有執行權限的給其加上執行權限

    dd 命令

    dd: device to device

    if: input file

    of: output file

    bs: block size 塊大小,文件系統 文件最小組成單元

    count: 塊的個數

  • 創建特定大小的文件
  • dd if=/dev/zero of=/dev/file.txt bs=1M count=100
  • 對磁盤進行備份(字節級別的拷貝)
  • dd if=/dev/nvme0n1 of=/dev/nvme0n4
  • 抹除磁盤數據
  • dd if=/dev/zero of=/dev/nvme0n4
  • 測試底層存儲的速率

  • 對分區備份

  • dd if=/dev/nvme0n1p1 of=boot.bak

    恢復

    dd if=/boot.bak of=/dev/nvme0n1p1

    網絡客戶端


    curl 命令

    curl url (獲取該網址的文本信息)curl -i url (獲取該網址的文本信息以及協議頭部信息)curl -x proxy url 使用代理獲取網頁文本信息curl -o bilibili.html bilibili.com 將網頁內容保存為本地的 bilibili.htmlcurl -O http://www.linux.com/hello.sh 下載文件curl -o dodo1.jpg http://www.linux.com/dodo1.JPG 下載文件并保存為 dodo1.jpgcurl -O -u 用戶名:密碼 ftp://www.linux.com/dodo1.JPGcurl -oO ftp://用戶名:密碼@www.linux.com/dodo1.JPG

    wget 命令,上傳和下載文件

  • wget url 下載文件
  • wget -O 文件名 url 下載之后改名
  • wget -b 后臺下載
  • wget --spider http://www.linux.com/dodo1.JPG 解析能否下載但不會下載
  • wget -P 指定下載目錄
  • OpenSSH

    OpenSSH 在 RHEL 上使用 SSH 協議,能以加密和安全的方法進行通信。

    ssh [user@]hostname 遠程登錄
    ssh [user@]hostname command 遠程執行命令
    ssh -X [user@]hostname 遠程調用圖形界面

    ssh 作為服務端的配置文件 /etc/ssh/sshd_config

    公鑰和私鑰

    每次輸入密碼比較麻煩,使用秘鑰驗證較為方便和安全。

    非對稱加密:
    兩把鑰匙,公鑰和私鑰

    公鑰加密,私鑰解密 私鑰加密,公鑰解密

    客戶端生成公鑰和私鑰,把公鑰給服務端

    客戶端連接的時候,服務端會使用公鑰加密一段隨機的字符串,然后將字符串發送給客戶端;
    客戶端使用私鑰解密加密后的字符串,并將解密后的字符串發送給服務端;
    服務端對比發送過來的字符串與加密之前的字符串是否相同,相同即成功。

    在客戶端生成公鑰和秘鑰

    ssh-keygen

    會生成私鑰文件 id_rsa 和公鑰文件 id_rsa.pub。客戶端將公鑰發送給服務端(服務端會將其存儲在 ~/.ssh/authoried_keys)

    ssh-copy-id -i id_rsa.pub root@192.168.153.139

    成功后,可以嘗試登陸

    ssh root@192.168.153.139

    此時可以直接連接,不需要再輸入密碼

    為了私鑰的安全,在生成私鑰的時候,給私鑰加密。但如果這樣做,連接服務端的時候需要輸入私鑰密碼。鑒于此,需要為 ssh 開啟認證代理。

    ssh-agent bash # 開啟認證代理 ssh-add # 將私鑰密碼添加到認證代理

    scp 遠程傳輸命令

    用法:

    scp [option] 本地文件 遠程賬戶@遠程IP地址:遠程目錄

    scp [option] 遠程賬戶@遠程IP地址:遠程文件 本地文件

    -r: 復制目錄
    -p: 保留時間和權限
    -P: 指定遠程主機的端口號
    -C: 壓縮數據

    rsync 增量備份工具

    rsync [options…] src… [dest]

    Pull: 遠程->本地

    rsync root@192.168.153.39:/home/student/ /tmp/test/

    Push: 本地->遠程

    rsync /tmp/test/ root@192.168.153.39:/home/student/

    注意,源路徑如果是一個目錄的話,/home/student 和 /home/student/ 是不一樣的。帶上尾斜線表示的是目錄中的文件,不包括目錄本身;不帶尾斜線表示的是整個目錄包括目錄本身,傳送目錄需要用 -r 參數

    增量備份的原理:
    mtime 時間戳:文件內容是否修改

    option 說明:

    -r: 同步目錄
    -v: 顯示 rsync 過程中的詳細信息
    -n: 進測試傳輸,而不實際傳輸
    -t: 保持 mtime 屬性
    -o: 保持 owner 屬性
    -g: 保持 group 屬性
    -p: 保持 perms 屬性(權限,不包括特殊權限)

    –delete: 以 SRC 為主,對 DEST 進行同步。多則刪之,少則補之。

    高級用戶組和權限


    密碼期限

    用戶密碼文件 /etc/shadow

    root:$6$mpoRoTVDJTTcy9q3$wd3uxrPXXgwqpTUDkAWGAbThCiD/zutRc6ekGpcDf34zLR4Fd/WnyZLQWGOSmudO/ZwVIXsXRYbl0qYWle/yJ0:18818:0:99999:7:::

    用戶名:加密密碼:最近一次修改密碼的時間:密碼最短使用天數: 密碼最長有效天數:密碼即將到期警告天數:密碼過期后賬戶保持活動天數:賬號失效時間:保留字段

    chage 命令調整密碼期限

    chage -m 0 -M 90 -W7 -I 14 user3 分別修改用戶密碼的最短期限,最長期限,警告周期,失效期限

    chage -d 0 user3 強制要求用戶在下一次登錄時更新密碼

    chage -I user3 顯示用戶密碼的信息

    chage -E 2020-10-10 user3 用戶將于 2020-10-10 到期

    默認權限

    目錄的最大權限是 777
    文件的最大權限是 666

    創建文件或目錄時,默認會有一個權限。這個權限,由用戶的 umask 值來決定(文件或目錄的最大權限減去 umask 值)

    設置 umask 值用 umask 命令,例如 umask 033,這種是臨時修改方式;修改 ~/.bashrc 可以永久修改。

    普通用戶的 umask 值是 002,因此,創建的文件權限是 664,目錄權限是 775

    root用戶的 umask 值是022,因此,創建的文件權限是 644,目錄權限是 755

    文件的特殊權限

    例如,執行以下命令

    [root@example ~]# ll /etc/shadow ----------. 1 root root 1616 Jul 18 13:42 /etc/shadow

    會發現用戶對該文件沒有任何權限,但是用戶修改密碼的時候,確實是修改了該文件,怎么實現呢?

    passwd 這個命令在這里

    [root@example ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 34512 Aug 13 2018 /usr/bin/passwd

    該命令的權限是 4755,多了一個 “s” 的權限,即 suid。chmod u-s /usr/bin/passwd 將該權限減去。

    [root@example ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 34512 Aug 13 2018 /usr/bin/passwd [root@example ~]# chmod u-s /usr/bin/passwd [root@example ~]# ll /usr/bin/passwd -rwxr-xr-x. 1 root root 34512 Aug 13 2018 /usr/bin/passwd [root@example ~]# chmod u-x /usr/bin/passwd [root@example ~]# chmod u+s /usr/bin/passwd [root@example ~]# ll /usr/bin/passwd -rwSr-xr-x. 1 root root 34512 Aug 13 2018 /usr/bin/passwd

    注意,‘S’ 比 ‘s’ 少了 ‘x’ 權限

    • suid: 4 如果一個文件有 suid 的權限,那么任何人執行該文件,將有文件擁有人的權限
      設置在文件上,設置在目錄上無意義。
      只能作用在二進制程序上(命令就是二進制的可執行程序),不能作用在腳本上。
      設置方法:chmod u+s file 或者 chmod 4755 file。

    • sgid: 2 如果一個文件有 sgid 的權限,那么任何人執行該文件,將有文件擁有組的權限

      對于目錄而言,如果一個目錄有 sgid 的權限,那么任何人在該目錄下面創建文件和目錄時,自動繼承該目錄的組。
      chmod g+s dir

    • stciky: 1 如果一個目錄有 sticky 權限,那么只有 root 用戶和文件的擁有人能夠刪除該目錄下的文件
      設置在目錄上,設置在文件上無意義
      對于一個多人可寫的目錄,如果設置了 sticky ,則每個用戶僅能刪除和修改自己的文件或目錄
      設置方法 chmod o+t dir 或者 chmod 1777 dir

    ACL(Access Control List) 權限:訪問控制列表

    設置和刪除

    如果一個目錄的權限是

    drwxr-xr-x. 2 root root 6 Aug 7 18:37 data

    如果我想使 admin 用戶對該目錄有 rwx 權限,在不修改該目錄權限和擁有人擁有組的情況下,可以通過下面的命令設置

    setfacl -m u:admin:rwx data/

    此時,該目錄的權限變成了

    drwxrwxr-x+ 2 root root 6 Aug 7 18:37 data/

    注意這個’+'即表示該目錄有設置過 acl 權限,但是這樣以來,這么看它的權限是不準確的。使用

    [student@example tmp]$ getfacl data/ # file: data/ # owner: root # group: root user::rwx # 擁有人的權限 user:student:rwx # 單獨給用戶 student 設置的權限 group::r-x # 擁有組的權限 mask::rwx # mask 值表示該目錄的最大權限 other::r- # 其他人的權限

    刪除 ACL 權限:

    setfacl -x u:student data/ setfacl -x g:it data/ setfacl -b data/ # 清空所有的 acl 權限 setfacl -R data/ # 遞歸修改 acl 權限

    優先級

    如果以文件擁有者的身份訪問,那么文件所有者的權限適用

    如果訪問用戶身份設置了 acl 權限,那么該用戶的 acl 權限適用(只要掩碼允許)

    如果以文件擁有組的身份訪問,或者訪問用戶的組設置了 acl 權限,那么則匹配相應的 acl 權限(只要掩碼允許)

    否則,將適用文件的其他人的權限

    設置默認 ACL 權限

    目的是為了確保用戶在目錄中創建的文件繼承和目錄相同的 acl 權限,setfacl -m d:u:student:rx dir

    給指定組設置默認 ACL 權限:setfacl -m d:g:it:rwx dir

    刪除指定用戶的默認 acl 權限:setfacl -x d:u:student dir

    刪除指定組的默認 acl 權限:setfacl -x d:g:it dir

    刪除所有的默認權限:setfacl -k dir

    舉例:

    [root@example tmp]# setfacl -m d:u:student:rwx data/ [root@example tmp]# getfacl data/ # file: data/ # owner: root # group: root user::r-x group::r-x other::r-x default:user::r-x default:user:student:rwx default:group::r-x default:mask::rwx default:other::r-x

    sudo 命令

    sudo 是 linux 下常用的允許普通用戶使用超級用戶權限的工具,可以減少 root 用戶的登錄和管理實踐,同時也提高了安全性。

    sudo 的配置文件時 /etc/sudoers 和 /etc/sudoers.d/*,編輯時最好用 visudo 命令,會幫助檢測語法

    user MACHINE=(RunAs) NOPASSWD:COMMANDS

    用戶名 被管理主機=(可使用的身份) 授權命令(絕對路徑)

    例如:

    用戶 哪些權限 root ALL=(ALL) ALL student ALL=(root) /usr/sbin/useradd

    student 可以以 root 身份運行 useradd 命令

    root 也可以使用 sudo命令,sudo 默認是以 root 的身份執行命令,但是 -u 選項可以選擇用戶

    [root@example tmp]# sudo -u student mkdir data [root@example tmp]# ll -d data drwxr-xr-x. 2 student student 6 Aug 7 21:09 data

    設置 admin 組可以以 root 身份執行

    %admin ALL=(root) /usr/sbin/useradd,/usr/bin/mkdir

    總結

    以上是生活随笔為你收集整理的红帽RHCE培训记录(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。