Unix – 變成 Root

這裡討論的內容以 FreeBSD 為主,可能會與 linux 系的不同。

「請不要忘記『Root is God』,所以登入 root 一定要有所限制」

在預設的情況下,root 不能直接由 ssh 連進去,但若想要從網路直接登入 root 的話, 可以將 /etc/ssh/sshd_config 這個設定檔中的 PermitRootLogin 改成 yes, 不過因為這樣不安全,所以最好不要這麼做。

那麼要怎麼登入 root 呢?很簡單,那就是由另一個使用者變成 root!

有兩種方式可以變成 root,第一種是使用指令 su,su 的功能就是變成某一使用者, su 後面接使用者,就代表要變成該使用者,如要變成 chicken,就打下面的指令:

su chicken

變成該使用者必須知道這個使用者的密碼,所以不是說要變誰就變誰。

若 su 後面不加使用者,就是變成 root,但要變成 root,除了要知道 root 密碼外, 當前的使用者必須要在 wheel 群組之中。

su 後可加上 “-” 這個參數,就會模擬完整的登入。

第二種方式則是使用 sudo,sudo 就像是有限制的 su,使用起來有很多好處,像是:

  • 可以設定只在某個指令下擁有 root 權限
  • 使用會有 log
  • 使用者不用知道root 密碼
  • 比較快,不用登入成 root
  • 可以多台機器共用同一個 sudo 權限的設定檔

而想要使用 sudo ,必須先用 visudo 來編輯 sudo 的權限,設定的格式如下:

#使用者 主機=(以什麼身份執行) 可以下的指令 chicken bsd1=(root) /sbin/shutdown
Code language: PHP (php)

括號代表可以省略,所以說以什麼身份執行那一欄可以不填,預設即為 root, 至於填寫可以下的指令那一欄的時候,一定要用絕對路徑才行。

有時,一項項設定太麻煩了,這時候可以用一些關鍵字來表示,可以自己設定,也可以用預設的, 比如說 ALL 代表「所有的」。

root ALL=(ALL) ALL

這就表示 root 可以在所有的主機上,以所有的身份執行所有的指令(不過這是廢話,就算不用 sudo, root 也可以這麼做)。

還有一點就是千萬要小心使用 ALL ,可以的話,最好還要再加上一些限制,比如說可以下的指令最好不要有 Shell, 不能有 su,不然使用者就可以直接變成 root 了,一旦變成 root,他做什麼事情就沒有 log 紀錄, 想做什麼就做什麼,太危險了。

因為使用 sudo 有非常多好處,所以我們會更推薦使用 sudo,不過由於 FreeBSD 預設沒有安裝 sudo, 所以要使用 sudo 前,必須要先從 ports 安裝才行。

發表迴響