Ubuntu 18.04 – root login

Loading

測試環境為 Ubuntu 18.04 Desktop 64bits (虛擬機)

Ubuntu 預設是不能使用 root 來登入,只能用一般使用來登入,然後透過 #sudo su – 切換身份 或是 gksudo(Graphically sudo) https://benjr.tw/1273 等方式來執行一些特權指令.

下面步驟可以讓使用者在登入時選擇 root 來登入.

首先先設定 root 的密碼.

ben@ubuntu:~$ sudo -i passwd root
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

Text Mode

Ubuntu Desktop 預設為 GUI 模式,可以透過 systemctl 來改成文字模式(Text Mode).

ben@ubuntu:~$ sudo systemctl get-default
graphical.target
ben@ubuntu:~$ sudo systemctl set-default multi-user.target
Created symlink from /etc/systemd/system/default.target to /lib/systemd/system/multi-user.target.
ben@ubuntu:~$ sudo systemctl isolate multi-user.target
ben@ubuntu:~$ sudo systemctl get-default
multi-user.target

剛剛我們已經有設定過 root 的密碼了,其實這樣就可以在文字模式用 root 的身份來登入.

Text Mode – Autologin

如果想設定自動登入需修改設定檔 /lib/systemd/system/getty@.service

ben@ubuntu:~$ sudo vim /lib/systemd/system/getty@.service
ExecStart=-/sbin/agetty --autologin root --noclear %I $TERM
#ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM

把原先的 ExecStart=-/sbin/agetty -o ‘-p — \\u’ –noclear %I $TERM 修改成為 ExecStart=-/sbin/agetty –autologin root –noclear %I $TERM 即可.

GUI Mode

剛剛改成文字模式了,要透過 systemctl 來設定回圖形模式 (Graphic Mode).

ben@ubuntu:~$ sudo systemctl get-default
multi-user.target
ben@ubuntu:~$ sudo systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /lib/systemd/system/graphical.target.
ben@ubuntu:~$ sudo systemctl isolate graphical.target
ben@ubuntu:~$ sudo systemctl get-default
graphical.target

Ubuntu 預設的登入管理 login managers 系統是 LightDM ,所以直接針對 50-unity-greeter.conf 設定檔修改 (沒這個檔案就直接編輯新的即可)

ben@ubuntu:~$ sudo vim /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf
greeter-show-manual-login=true 
all-guest=false 

還有 PAM – Pluggable Authentication Modules 的設定 (桌面系統使用的是 GDM – GNOME Display Manager),需移除 (#) 在 /etc/pam.d/gdm-autologin 與 /etc/pam.d/gdm-password , auth required pam_succeed_if.so user != root quiet_success 這一項設定.

ben@ubuntu:~$ sudo vim /etc/pam.d/gdm-autologin
# auth required pam_succeed_if.so user != root quiet_success
ben@ubuntu:~$ sudo vim /etc/pam.d/gdm-password 
# auth required pam_succeed_if.so user != root quiet_success

Ubuntu 需要重新開機.

ben@ubuntu:~$ sudo reboot

重開機後在 Not listed 選項輸入 root 帳號以及密碼即可登入.

使用 root 登入後會顯示錯誤訊息

mesg: ttyname failed inappropriate ioctl for device


需要修改 /root/.profile (在 mesg n || true 前面加入 tty -s &&)

ben@ubuntu:~$ sudo vim /root/.profile
# mesg n || true
tty -s && mesg n || true

指令說明:

  • tty -s
    tty – print the file name of the terminal connected to standard input ,
    -s –silent, –quiet , print nothing, only return an exit status
  • mesg n
    mesg – display (or do not display) messages from other users, y 允許使用者將訊息顯示在螢幕上, N 則不允許.
  • true
    do nothing, successfully

&& , || 的用法
cmd1 && cmd2 若 cmd1 執行正確且無錯誤 ($?=0),則執行 cmd2 ,反之若 cmd1 執行完畢且為錯誤 ($?≠0),則 cmd2 不執行.
cmd1 || cmd2 若 cmd1 執行正確且無錯誤 ($?=0),則 cmd2 不執行 ,反之若 cmd1 執行完畢且為錯誤 ($?≠0),則開始執行 cmd2.

tty -s && mesg n || true 的語法是常用的架構 (這 && 與 || 的順序就是固定),用以判斷 command1 的執行是成功還是失敗,成功則執行 command2 失敗則執行 command 3

簡化一下剛剛的指令
tty -s && mesg n || true
tty -s 成功後 ($?=0) 執行 mesg n ,因為 $?=0 所以後半段 || true 就不會去執行了.
tty -s 失敗後 ($?≠0) ,不執行 mesg n ,因為 $?≠0 所以後半段 || 就會去執行 true 了.

當有 tty 時會去執行 mesg n ,沒有就不執行(不懂為什麼要這樣設定).

SSH

雖然前面已經幫 root 設定密碼了,但是 SSH 預設不讓 root 登入.

Ben-MacBook-Air:~ Ben$ ssh root@192.168.95.221
root@192.168.95.221's password: 
Permission denied, please try again.

如果要讓 Root 可以登入,需要修改 SSH 設定檔 sshd_config

ben@ubuntu:~$ sudo vim /etc/ssh/sshd_config
#PermitRootLogin prohibit-password
PermitRootLogin yes
ben@ubuntu:~$ sudo systemctl restart sshd

這樣就 SSH 可以就可以透過 root 登入了.

Ben-MacBook-Air:~ Ben$ ssh root@192.168.95.221
root@192.168.95.221's password: 
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.15.0-46-generic x86_64)
沒有解決問題,試試搜尋本站其他內容

3 thoughts on “Ubuntu 18.04 – root login

  1. 1. The accounts (root or default user) are not available (cannot login even if password is correct) after screen locked (Windows Key + L).
    2. My solution for your reference:

    [Original]
    auth required pam_succeed_if.so user != root quiet_success

    [Your Method – comment the statement]
    #auth required pam_succeed_if.so user != root quiet_success

    [My Method – remove the statement “user != root quiet_success”]
    auth required pam_succeed_if.so

  2. 我的Ubuntu 18.04 Sever安裝Desktop套件之後,改這兩個地方就可以了
    #sudo vim /etc/gdm3/custom.conf, Under [security] type AllowRoot=true
    #sudo vim /etc/pam.d/gdm-password
    Search this line and mark it to no work.
    so that it looks like this
    #aut h required pam_succeed_if.so user != root quiet_success

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料