Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 以其他使用者身分執行程式:runuser、su、sudo、systemd-run 四大工具對比與最佳實務

編輯:關於 Linux

系統管理常需切換身分執行指令:runuser (無需密碼、僅 root)、su (需密碼、完整登入 Shell)、sudo (權限精細、審計日誌)、systemd-run (現代、資源限制、日誌整合)。本文詳細對比四工具語法、適用場景、安全性差異。

runuser 語法

su 語法

工具對比表

工具需密碼適用身分環境繼承審計典型用途
runuser -u user cmd否 (僅 root)root → 任意最小 (PAM session hook only)無腳本自動化、服務啟動腳本
su - user -c 'cmd'是 (目標用戶)任意 → 知密碼者完整登入環境/var/log/secure管理員手動切換身分
sudo -u user cmd是 (發起者/目視)sudoers 允許者可配置 (env_reset)/var/log/secure + sudo.log生產環境標準提權
systemd-run --user --scope cmd否 (用戶級)當前用戶/其他 (需權限)systemd 服務環境journalctl資源限制、依賴管理、自動重啟

實戰範例


# 1. runuser (root 執行備份腳本以 postgres 身分)
runuser -u postgres -- pg_dumpall > /backup/db.sql

# 2. su (切換到 oracle 完整環境)
su - oracle -c 'sqlplus / as sysdba @startup.sql'

# 3. sudo (Web 部署腳本以 www-data 身分)
sudo -u www-data php artisan migrate --force

# 4. systemd-run (以用戶級服務運行長期任務)
systemd-run --user --scope --property=MemoryMax=500M \
    --property=CPUQuota=50% \
    ./long_computation.sh

安全建議

  • 優先使用 sudo,配合 /etc/sudoers.d/ 最小權限原則。
  • 避免在腳本中硬編碼密碼給 su。
  • runuser 僅限 root 且無審計,僅用於完全受控的自動化環境。
  • 長期運行服務改用 systemd 服務單元 (.service),而非臨時 systemd-run。

選對工具,兼顧自動化效率與安全合規。

Copyright © Windows教程網 All Rights Reserved