Linux sudo 以超級使用者權限執行
在 Windows 中,我們習慣用 Administrator 權限執行程式。在 Linux 中,擁有最高權限的神級帳號叫做 root。 但為了安全起見,我們 極度不建議 直接使用 root 帳號登入系統或進行日常操作。
取而代之的是,當我們需要執行管理任務(如安裝軟體、修改系統設定)時,我們會暫時借用 root 的權限,這就是 sudo 的功能。
sudo 的意義
sudo = SuperUser DO。
意思是「以超級使用者的身分執行」。
# 一般使用者執行 apt update 會失敗 (Permission denied)
apt update
# 加上 sudo 後,系統會問你的密碼,驗證通過後即可執行
sudo apt update
如何取得 sudo 權限
並不是每個人打 sudo 都有用。該使用者必須被列在 /etc/sudoers 設定檔中,或是加入 sudo (Ubuntu/Debian) 或 wheel (CentOS/RHEL) 群組。
查詢自己有沒有 sudo 權限
sudo -l
切換身分
1. 暫時切換成 root (sudo -i / sudo -s)
如果你有一連串的指令要執行,不想每行都打 sudo,可以暫時切換成 root 身分。
sudo -i
# 或者
sudo su -
執行後,你會發現提示符號從 $ 變成 #,代表你現在是 root 了。使用完畢請輸入 exit 離開。
2. 以其他使用者身分執行 (-u)
sudo 不一定只能變 root,也可以變其他人。
# 以 www-data 的身分執行指令
sudo -u www-data php artisan migrate
常見問題
"is not in the sudoers file"
這代表你的帳號均有權限使用 sudo。解決方法通常是切換到 root (如果有 root 密碼),或是請管理員幫你把帳號加入 sudo 群組。
# (管理員執行) 把 user 加入 sudo 群組
usermod -aG sudo username