返回文章列表

Linux 程式與使用者群組管理指令

本文探討 Linux 系統中常用的程式管理和使用者群組管理指令,涵蓋程式監控、CPU 限制、程式通訊、使用者新增與修改、群組新增與刪除等關鍵操作,並提供豐富的指令範例和技術細節解析,幫助系統管理員有效管理 Linux 系統。

系統管理 Linux

Linux 系統管理仰賴指令操作,程式和使用者群組管理是其核心。本文詳述多種指令,從 pstop 等程式監控工具,到 useraddgroupmod 等使用者群組管理指令,以及 killrenice 等程式控制指令,提供指令用法、引數說明及實務案例,讓讀者能快速掌握 Linux 系統管理技巧。 coproc 指令實作程式間通訊,cpulimit 限制程式資源,fuser 找出特設定檔案的程式,htop 提供互動式程式檢視。使用者管理方面,useraddusermoduserdel 分別新增、修改、刪除使用者,groupaddgroupmodgroupdel 則管理群組。檔案系統管理指令包含 cpmvcksumcmp 等,用於檔案操作、校驗和比較。

Linux 程式管理指令詳解

Linux 系統中,程式管理是一項重要的任務。系統管理員需要使用各種指令來監控、控制和管理程式的執行。本文將介紹一系列常用的 Linux 程式管理指令,包括其功能、用法和範例。

1. coproc - 與程式進行雙向通訊

coproc 是一個內建的 Bash 指令,用於建立一個程式並與其進行雙向通訊。

用法範例

coproc awk '{print $2;fflush();}'
echo one two three >&${COPROC[1]}
read -ru ${COPROC[0]} temp
echo $temp

內容解密:

  1. coproc awk '{print $2;fflush();}':建立一個 awk 程式,並將其輸出導向到一個檔案描述符。
  2. echo one two three >&${COPROC[1]}:將字串 “one two three” 傳送到 awk 程式的輸入。
  3. read -ru ${COPROC[0]} temp:從 awk 程式的輸出讀取資料,並將其儲存在變數 temp 中。
  4. echo $temp:輸出變數 temp 的值。

2. cpulimit - 限制程式的 CPU 使用率

cpulimit 指令用於限制程式的 CPU 使用率。

用法範例

cpulimit -l 30 dd if=/dev/zero of=/dev/null &

內容解密:

  1. cpulimit -l 30:限制程式的 CPU 使用率為 30%。
  2. dd if=/dev/zero of=/dev/null &:在背景執行 dd 指令,將 /dev/zero 的資料寫入 /dev/null

3. disown - 從當前 shell 中移除作業

disown 是一個內建的 Bash 指令,用於從當前 shell 中移除作業。

用法範例

disown -h %2

內容解密:

  1. disown -h %2:將作業編號為 2 的作業標記為不受 SIGHUP 訊號影響。

4. fg - 將作業切換到前台執行

fg 是一個內建的 Bash 指令,用於將作業切換到前台執行。

用法範例

fg 1112

內容解密:

  1. fg 1112:將作業編號為 1112 的作業切換到前台執行。

5. fuser - 找出存取特設定檔案或 socket 的程式

fuser 指令用於找出存取特設定檔案或 socket 的程式。

用法範例

fuser .
fuser -km /home
if fuser -s /dev/ttyS1; then :; else something; fi
fuser telnet/tcp

內容解密:

  1. fuser .:找出存取當前目錄的程式。
  2. fuser -km /home:殺死所有存取 /home 目錄的程式。
  3. if fuser -s /dev/ttyS1; then :; else something; fi:如果沒有程式存取 /dev/ttyS1,則執行 something
  4. fuser telnet/tcp:找出與本地 telnet 連線埠相關的程式。

6. htop - 文字模式下的互動式程式檢視器

htop 指令是一個文字模式下的互動式程式檢視器。

用法範例

htop

內容解密:

  1. htop:啟動 htop 程式,以互動式的方式檢視系統中的程式。

程式管理與監控指令詳解

在 Linux 系統管理中,程式管理與監控是至關重要的任務。本文將探討一系列用於管理與監控程式的指令,包括其功能、用法及相關注意事項。

程式檢視與監控

ps 指令

ps 指令用於顯示當前系統中的程式狀態。透過不同的選項,可以取得多樣化的程式資訊。

  • ps -ef:生成一個簡單的程式樹,顯示所有程式的詳細資訊。
  • ps axjf:顯示關於程式執行緒的資訊。
  • ps axms:顯示關於執行中程式的安全資訊。
  • ps -eo euser,ruser,suser,fuser,f,comm,label:以使用者自訂的格式顯示每個以 root 身份執行的程式(實際與有效 ID)。
  • ps -U root -u root u:以使用者格式顯示所有以 root 使用者身分執行的程式。

pstree 指令

pstree 指令以樹狀結構顯示目前執行的程式。

  • pstree:顯示目前系統中執行的程式樹。

程式優先順序管理

renice 指令

renice 指令用於更改活動程式的優先順序。

  • 範例:renice +1 987 -u daemon root -p 32
  • 注意事項:與 nice 指令相關,這是 UTIL-LINUX 套件中的指令。

snice 指令(已過時)

sNice 指令曾用於重設程式的優先順序,但現已過時。建議使用 killallpkillpgrep 指令代替。

安全上下文與系統服務管理

runcon 指令

runcon 指令用於在指定的安全上下文中執行命令。

  • 範例:runcon user_u:system_r:httpd_t ~/bin/contexttest
  • 注意事項:這是 COREUTILS 套件中的指令,完整檔案請參閱 GNU 網站。

service 指令

service 指令用於執行 System V 初始化指令碼。

  • 範例:service --status-all
  • 注意事項:與 systemctl 指令相關。

程式執行與訊號處理

setsid 指令

setsid 指令在新的會話中執行程式。

  • 範例:setsid ./myscript.sh
  • 注意事項:這是 UTIL-LINUX 套件中的指令。

skill 指令(已過時)

skill 指令曾用於向程式傳送訊號,但現已過時。建議使用 killallpkillpgrep 指令代替。

其他程式相關指令

stdbuf 指令

stdbuf 指令執行命令並修改其標準串流的緩衝操作。

  • 範例:```bash tail -f access.log | stdbuf -oL cut -d ’ ’ -f1 | uniq
- 注意事項:這是 COREUTILS 套件中的指令,完整檔案請參閱 GNU 網站。

#### `strace` 指令
`strace` 指令追蹤系統呼叫和訊號。

- 範例:```bash
strace echo HelloWorld
  • 注意事項:與 ltrace 指令相關,用於程式除錯。

taskset 指令

taskset 指令管理 CPU 的程式親和性。

  • 範例:```bash taskset -p 700
- 注意事項:這是 UTIL-LINUX 套件中的指令,與 `chrt`、`nice` 和 `renice` 指令相關。

#### `time` 指令
`time` 指令測量程式的執行時間。

- 範例:```bash
time tree /home
  • 注意事項:這是 Bash 的內建指令,與 times 指令相關。

timeout 指令

timeout 指令在指定的時間限制內執行命令。

  • 範例:```bash timeout 1 bash -c “</dev/tcp/example.com/80” && echo Port open || echo Port closed
- 注意事項:這是 COREUTILS 套件中的指令,完整檔案請參閱 GNU 網站。

### 使用者管理相關指令

使用者和群組管理是系統管理的重要部分。以下是一些相關的指令:

#### 使用者帳號管理

- `adduser user_name`:新增使用者至系統。
    - 範例:```bash
# adduser jane lpadmin
- 注意事項:這是一個指令碼,利用 `useradd` 命令實作。比 `useradd` 更具互動性,但不適合用於指令碼編寫。

群組管理

  • addgroup user_name:新增群組至系統。
    • 範例:```bash

addgroup app_admins

    - 注意事項:用於新增群組至系統,便於進行許可權管理。

## Linux 使用者與群組管理指令集錦

Linux 系統中,使用者與群組的管理是系統管理的重要部分。本文將介紹一系列與使用者和群組相關的指令,包括新增、修改、刪除使用者和群組,以及驗證和維護相關檔案的完整性。

### 使用者管理

使用者管理涉及多個指令,用於新增、修改和刪除使用者帳號。

#### 新增使用者
- **useradd**:用於建立新使用者帳號。例如:`# useradd -c "Jane Doe" -m -s /bin/bash jane`。此指令建立了一個名為 `jane` 的新使用者,並設定其全名、家目錄及預設 Shell。
  - #### 內容解密:
    - `-c` 引數用於指定使用者的全名。
    - `-m` 引數確保建立使用者的家目錄。
    - `-s` 引數指定使用者的預設 Shell。

#### 修改使用者資訊
- **chfn**:更改使用者的真實姓名和其他相關資訊。例如:`# chfn jane`。此指令允許管理員修改使用者的詳細資訊。
  - #### 內容解密:
    - 此指令會開啟一個互動式介面,讓管理員可以修改使用者的資訊,如全名、房間號碼、電話等。

- **chsh**:切換使用者的登入 Shell。例如:`chsh -s /bin/bash jane`。此指令將 `jane` 使用者的預設 Shell 修改為 `/bin/bash`。
  - #### 內容解密:
    - `-s` 引數用於指定新的 Shell 路徑。
    - 此指令需要參考 `/etc/shells` 檔案以確認指定的 Shell 是否有效。

#### 修改使用者密碼
- **passwd**:更改使用者的密碼。例如:`# passwd jane`。此指令用於修改 `jane` 使用者的密碼。
  - #### 內容解密:
    - 此指令會提示輸入新密碼,並要求確認。

- **chpasswd**:批次更新使用者密碼。例如:`# cat pwdfile | chpasswd`。此指令從 `pwdfile` 檔案中讀取使用者名稱和密碼,並進行批次更新。
  - #### 內容解密:
    - `pwdfile` 的格式應為 `username:password`。
    - 此指令適用於需要批次更新大量使用者密碼的情況。

### 群組管理

群組管理同樣包含多個指令,用於新增、修改和刪除群組。

#### 新增群組
- **groupadd**:新增一個新群組。例如:`# groupadd app_admins`。此指令建立了一個名為 `app_admins` 的新群組。
  - #### 內容解密:
    - 此指令會在 `/etc/group` 檔案中新增一個群組記錄。

#### 修改群組定義
- **groupmod**:修改群組定義。例如:`# groupmod -g 300 app_admins`。此指令將 `app_admins` 群組的 GID 修改為 `300`。
  - #### 內容解密:
    - `-g` 引數用於指定新的 GID。

#### 刪除群組
- **groupdel**:從系統中刪除一個群組。例如:`# groupdel app_admins`。此指令刪除了 `app_admins` 群組。
  - #### 內容解密:
    - 此指令會從 `/etc/group` 檔案中移除指定的群組記錄。

### 資訊查詢與驗證

- **id**:顯示使用者的 UID、GID 及所屬群組資訊。例如:`id jane`。此指令顯示 `jane` 使用者的詳細資訊。
  - #### 內容解密:
    - 此指令查詢 `/etc/passwd` 和 `/etc/group` 檔案以取得使用者的資訊。

- **groups**:顯示使用者所屬的群組。例如:`groups jane`。此指令列出 `jane` 使用者所屬的所有群組。
  - #### 內容解密:
    - 此指令查詢 `/etc/group` 檔案以取得使用者的群組成員資訊。

### 維護與安全

- **pwck** 和 **grpck**:分別用於驗證 `/etc/passwd` 和 `/etc/group` 檔案的完整性。例如:`# pwck` 和 `# grpck app_admins`。
  - #### 內容解密:
    - 這兩個指令檢查密碼和群組檔案的一致性和正確性。

- **pwconv** 和 **pwunconv**:用於在 `/etc/passwd` 和 `/etc/shadow` 之間轉換密碼資訊。例如:`# pwconv` 將密碼資訊轉移到 shadow 檔案中。
  - #### 內容解密:
    - `pwconv` 建立或更新 `/etc/shadow` 檔案,以增強密碼的安全性。

### 其他相關指令

- **last** 和 **lastb**:顯示最近登入系統的使用者資訊及失敗的登入嘗試。例如:`last jane` 和 `lastb jane`。
  - #### 內容解密:
    - `last` 查詢 `/var/log/wtmp` 檔案以取得登入資訊。
    - `lastb` 查詢 `/var/log/btmp` 檔案以取得失敗的登入嘗試。

- **logname** 和 **whoami**:顯示目前登入的使用者名稱。例如:`logname`。
  - #### 內容解密:
    - 這兩個指令用於查詢目前登入的使用者身份。

## Linux 系統管理指令大全:使用者群組與檔案系統指令深度解析

在 Linux 系統管理中,正確使用各種指令對於維護系統安全、提升管理效率至關重要。本文將探討使用者群組管理和檔案系統管理兩大類別中的關鍵指令,涵蓋其功能、使用範例、相關指令以及技術細節。

### 使用者與群組管理指令

使用者與群組管理是 Linux 系統管理中的基礎任務。正確管理使用者帳戶和群組許可權對於系統安全和資源存取控制至關重要。

#### 1. 使用者帳戶管理

##### useradd 與 userdel 指令
`useradd` 指令用於建立新使用者帳戶,而 `userdel` 則用於刪除使用者帳戶。這些指令通常需要 root 許可權執行。

```bash
# 建立新使用者 jane
useradd jane

# 刪除使用者 jane 並移除其所有檔案
userdel --remove-all-files jane

#### 內容解密:

  • useradd jane:建立一個名為 jane 的新使用者帳戶。
  • userdel --remove-all-files jane:刪除 jane 使用者帳戶並移除其所有檔案。--remove-all-files 引數確保刪除使用者家目錄及其下所有檔案。
usermod 指令

usermod 指令用於修改現有使用者帳戶的資訊,如變更家目錄。

# 修改 jane 使用者的家目錄至 /home/jane_new
usermod -d /home/jane_new jane

#### 內容解密:

  • usermod -d /home/jane_new jane:將 jane 使用者的家目錄變更為 /home/jane_new-d 引數指定新的家目錄路徑。

2. 使用者狀態查詢

who 與 w 指令

whow 指令用於顯示目前登入系統的使用者資訊。w 指令提供更詳細的資訊,包括使用者的目前活動。

# 顯示目前登入的使用者
who

# 顯示詳細的登入使用者資訊
w

#### 內容解密:

  • who:列出目前登入系統的使用者。
  • w:顯示目前登入使用者的詳細資訊,包括他們正在執行的指令。

檔案系統管理指令

檔案系統管理涉及檔案的建立、修改、刪除以及檔案屬性的管理。以下是一些常用的檔案系統管理指令。

1. 檔案操作指令

cp 與 mv 指令

cp 指令用於複製檔案或目錄,而 mv 指令則用於移動或重新命名檔案/目錄。

# 複製檔案 file1 至 file2
cp file1 file2

# 將目錄 dir1 移動至 dir2
mv dir1 dir2

#### 內容解密:

  • cp file1 file2:將 file1 複製為 file2。若 file2 已存在,則會被覆寫。
  • mv dir1 dir2:將 dir1 移動到 dir2 下。若 dir2 不存在,則 dir1 會被重新命名為 dir2

2. 檔案校驗與比較

cksum 與 cmp 指令

cksum 用於計算檔案的 CRC 校驗和,而 cmp 則用於逐位元組比較兩個檔案。

# 計算 myfile.txt 的 CRC 校驗和
cksum myfile.txt

# 比較 file1 和 file2
cmp file1 file2

#### 內容解密:

  • cksum myfile.txt:輸出 myfile.txt 的 CRC 校驗和,用於檢查檔案完整性。
  • cmp file1 file2:比較 file1file2,若兩個檔案完全相同,則無輸出;否則顯示第一個不同位元組的位置。