Linux使用者權限說明

  • 最後修改時間:2025-06-08
  • 概述

    在部署維運平台時,需要使用伺服器使用者登入終端,上傳、解壓、運作finekey工具,以部署啟動維運平台。

    在部署維運專案時,需要提供伺服器帳號稱與密碼,用於專案的部署和運作。

    執行相關操作,需要確定所使用的伺服器使用者的權限滿足需求。

    優先推薦使用超級管理者帳號部署

    優先推薦使用用戶id為0且名叫root的伺服器使用者部署維運平台和維運專案。

    請確定使用者可以透過ssh連結伺服器,請確定使用者的ssh連結密碼無英文單引號字元,否則部署時權限檢查無法透過。

    注意:使用者id為0但不叫root的使用者,不支援部署,請更名為root

    非超管帳號部署需要配置權限

    請確定使用者可以透過ssh連結伺服器

    請確定使用者的ssh連結密碼無英文單引號字元,否則部署時權限檢查無法透過

    權限要求說明

    如需使用非超管root使用者進行專案的部署和運作,至少需要擁有以下權限:

    命令
    說明
    mkdir命令說明:建立目錄

    應用場景:

    1)在使用者的home目錄下建立docker臨時安裝目錄,用於存放Docker和相關組件的安裝檔案

    2)在系統目錄/usr/bin下建立docker最終安裝目錄,用於存放Docker和相關組件的可執行檔案

    3)在指定的專案掛載目錄下建立維運平台和專案的資料和組件目錄,用於存放Docker容器的資料和配置檔案

    範例命令:

    範例:mkdir -p -m 750 /home/fanruan/data

    說明:建立專案掛載目錄/home/fanruan/data,並設定權限為750

    chown

    命令說明:

    更改檔案或目錄的所有者

    應用場景:

    1)更改docker臨時安裝目錄的所有者,以確定安裝程式中的權限問題

    2)更改docker最終安裝目錄的所有者,以確定系統和使用者對可執行檔案的存取權限

    3)更改維運平台和專案的資料和組件目錄的所有者,以確定Docker容器對資料和配置檔案的存取權限

    範例命令:

    範例:chown -R fanruan:fanruan /home/fanruan/data

    說明:遞迴更改目錄 /home/fanruan/data 及其子目錄和檔案的所有者為 fanruan 使用者和組

    groupadd

    命令說明:建立使用者組

    應用場景:用於系統使用者組管理,為docker服務建立專用使用者組

    範例命令:

    範例:groupadd docker

    說明:建立一個名叫docker的新使用者組

    gpasswd

    命令說明:管理使用者組成員

    應用場景:將使用者新增到指定使用者組,賦予使用者對docker服務的存取權限

    範例命令:

    範例:gpasswd -a $USER docker

    說明:將當前使用者新增到docker使用者組中

    swapoff令說明禁用系統中所有的交換分割槽和交換檔案

    應用場景:關閉交換空間,提高效能

    範例命令:

    範例:swapoff -a

    說明:禁用系統中所有的交換分割槽和交換檔案

    modprobe命令說明:載入核心模組

    應用場景:動態載入 br_netfilter 模組,確定 Docker 網路通訊的正常運作和管理

    範例命令:

    範例:modprobe br_netfilter

    說明:載入 br_netfilter 模組,使其在核心中生效,以支援 Docker 的網路功能

    systemd

    命令說明:控制 systemd 系統和服務管理器

    應用場景:確定 Docker 服務在系統啟動時自動啟動

    範例命令:

    範例:systemctl enable docker.service

    說明:啟動 docker.service 服務,使其在系統啟動時自動啟動

    kill命令說明:向進程傳送信號

    應用場景:向 Docker 守護進程傳送 SIGHUP 信號,實現熱載入配置檔案,無需停止和重新啟動 Docker 服務

    範例命令:

    範例:kill -HUP 1234

    說明:向 Docker 守護進程 1234 傳送 SIGHUP 信號,在不中斷docker服務的情況下應用新的配置更改

    sudo

    命令說明:允許授權使用者以超級使用者的身分運作特定的命令,而無需直接登入到超級使用者賬戶

    應用場景:用於自動化腳本或需要以超級使用者權限執行的場景

    範例命令:

    命令:echo sudo_xxxx_passwd | sudo -S sh -c "systemctl start docker"

    範例:以超級使用者權限啟動 Docker 服務

    sh

    命令說明:解譯並執行由 -c 選項指定的命令字串

    應用場景:在一個命令中完成複雜的操作,並確定命令在具有適當權限的環境中執行

    範例命令:

    命令:echo sudo_xxxx_passwd | sudo -S sh -c "systemctl start docker"

    範例:以超級使用者權限在一個新的 shell 中執行命令

    echo

    命令說明:將字串匯出到標準匯出

    應用場景:方便地將字串匯出並傳遞給其他命令,進而實現自動化和成批處理操作

    範例命令:

    命令:echo sudo_xxxx_passwd | sudo -S sh -c "systemctl start docker"

    範例:將 echo 命令的匯出(即 sudo 密碼)傳遞給 sudo -S 命令,使其能夠以超級使用者權限執行命令

    cp命令說明:複製檔案和目錄

    應用場景:部署或更新服務檔案,進而使系統能夠管理和啟動相應的服務

    範例命令:

    範例:cp -f /home/finekey/docker.service /etc/systemd/system/

    說明:將檔案 /home/finekey/docker.service 複製到目錄 /etc/systemd/system/ 中,以便 systemd 可以管理該服務

    sysctl

    命令說明:查看和修改核心參數

    應用場景:查看和修改一些特定的核心參數,例如net.bridge.bridge-nf-call-iptables、net.ipv4.conf.all.forwarding、net.ipv4.ip_forward等

    範例命令:

    範例:sysctl -n net.ipv4.ip_forward

    說明:檢查當前系統中 IPv4 轉發(IP forwarding)的狀態

    sed

    命令說明:用於在正文檔案中進行尋找、取代、插入、刪除等操作

    應用場景:用於修改一些配置檔案和核心參數,主要用於修改/etc/sysctl.conf,如果這些參數已經配置成了目標值,只會令這些參數生效,不會再去修改檔案

    範例命令:

    範例:sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

    說明:修改 /etc/selinux/config 檔案,將 SELINUX 設定從 enforcing 改為 permissive,以防影響透過 systemctl 命令以服務方式啟動 Docker

    rm命令說明:刪除檔案和目錄

    應用場景:部署失敗時回滾,清理殘留檔案

    範例命令:

    範例:rm -rf /home/fanruan/data

    說明:遞迴地刪除 /home/fanruan/data 目錄及其所有內容

    權限配置步驟

    請自行編輯 /etc/sudoers 檔案,確定滿足以下兩項

    步驟說明
    修改使用者的sudo權限

    自行修改dev為你的帳號

    1)允許使用者"dev"在任何主機上以root身分使用sudo權限執行後續配置的命令

    dev     ALL=(root) /bin/sh,/bin/mkdir,/bin/rm,/bin/cp,/bin/systemctl,/bin/kill,/usr/sbin/sysctl,/usr/bin/gpasswd,/usr/sbin/groupadd,/usr/bin/chown,/usr/sbin/modprobe,/usr/bin/echo,/usr/bin/sed,/usr/sbin/swapoff,/bin/sudo

    2)如果仍然權限不足(報錯:[sudo] password for ubuntu:),可以配置NOPASSWD的sudo權限(自選)

    dev     ALL=(root) NOPASSWD:/bin/sh,/bin/mkdir,/bin/rm,/bin/cp,/bin/systemctl,/bin/kill,/usr/sbin/sysctl,/usr/bin/gpasswd,/usr/sbin/groupadd,/usr/bin/chown,/usr/sbin/modprobe,/usr/bin/echo,/usr/bin/sed,/usr/sbin/swapoff,/bin/sudo

    對使用者禁用requiretty選項

    註釋掉原本的requiretty相關內容

    確定 dev 使用者在執行 sudo 命令時不需要 TTY 對話,否則無法透過腳本/遠端命令使用sudo

    #Defaults: requiretty

    sudoers 檔案範例:(本檔案僅作為範例,請勿直接copy改寫,請逐一參考上文修改)

    # User privilege specification

    root    ALL=(ALL:ALL)       ALL


    Defaults requiretty


    # Allow dev user to run specific commands as root

    dev     ALL=(root) /bin/sh,/bin/mkdir,/bin/rm,/bin/cp,/bin/systemctl,/bin/kill,/usr/sbin/sysctl,/usr/bin/gpasswd,/usr/sbin/groupadd,/usr/bin/chown,/usr/sbin/modprobe,/usr/bin/echo,/usr/bin/sed,/usr/sbin/swapoff,/bin/sudo



    附件列表


    主題: 擴展閱讀
    已經是第一篇
    已經是最後一篇
    • 有幫助
    • 沒幫助
    • 只是瀏覽