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 <username>
設定格式
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"
No Comments