sudo The Difference Between Su, Sudo Su, Sudo -i, and Sudo -s How To Run All Programs In A Directory Via Sudo In Linux 10 Useful Sudoers Configurations for Setting 'sudo' in Linux 常用指令 # 以用戶 john 執行 SHELL sudo -u john bash -c "whoami" # 以用戶 john 開啟 vnc 服務,-H 可保持用戶的 HOME;否則會是 /root。 sudo -H -u john bash -c "vncserver" # 以用戶 devrpt 執行 db2_get_tbs_usage.sh -d devrptdb sudo -u devrpt -H -s /usr/local/bin/db2_get_tbs_usage.sh -d devrptdb # 或 sudo -u devrpt -H bash -c "/usr/local/bin/db2_get_tbs_usage.sh -d devrptdb" # 避免密碼詢問 echo "ThisIsPassword" | sudo -S ls -l /root # 檢查 sudo 權限 sudo -l -U 設定格式 alang ALL=(devrpt) /bin/bash,/usr/local/bin/db2_get_tbs_usage.sh 內容格式: <使用者帳號> <登入者的來源主機名稱>=<可切換的身份> <可下達的指令> 如果要執行 SHELL Scripts,除了 scripts 路徑以外,還要加上 /bin/bash。 限制可切換的帳號 限制某帳號只能切換至特定的另一個帳號,其餘帳號不允許切換。 developer-name ALL=(ALL) NOPASSWD:/usr/bin/sudo,/bin/su - app-user 多管理者帳號 除了主要管理者需要知道 root 密碼以外,其餘管理者先以個人帳號登入系統,然後以免 root 密碼方式切換成 root。 # RedHat 7/8, /etc/sudoers.d/sysadmin your-account ALL=(ALL) ALL 免 root 密碼切換至 root 方式 # RedHat 6/7/8 # 如果有詢問密碼,輸入個人帳號的密碼 sudo -i sudo su - # RedHat 4 sudo su - # Or sudo -s # NOTE: not root's profile sudo -i 沒有包含 /usr/local/bin 路徑? 方法一:以 root 執行 visudo Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin 方法二:/root/.bash_profile # Custom PATH case :$PATH: in *:/usr/local/bin:*) ;; *) PATH=/usr/local/bin:$PATH ;; esac export PATH Disable 'su' Disable 'su' Access for Sudo Users in Linux visudo : # Cmnd alias spceification Cmnd_Alias DISABLE_SU = /bin/su # Disable the su for the user trendoceans trendoceans ALL=ALL, !DISABLE_SU logfile visudo: # Log File: Defaults logfile="/var/log/sudo.log"