Keluar dari root dan pengguna dengan satu perintah

9

Saya tahu tentang "tidak menggunakan sudo su -" dll. Tapi jujur ​​saja, hampir semua dari kita melakukannya.

Jadi, inilah masalahnya. Kami tidak dapat mengaktifkan login root, jadi kami harus ssh in sebagai pengguna kami lalu su ke root.
Berikut adalah pohon proses:

    1  7897  7826  7826 ?           -1 S     1000   0:00 sshd: josh@pts/0
 7897  7898  7898  7898 pts/0     8182 Ss    1000   0:00  \_ -bash
 7898  7990  7990  7898 pts/0     8182 S        0   0:00      \_ sudo su -
 7990  7991  7990  7898 pts/0     8182 S        0   0:00          \_ su -
 7991  7992  7992  7898 pts/0     8182 S        0   0:00              \_  -su
 7992  8182  8182  7898 pts/0     8182 R+       0   0:00                  \_ ps axjf

Saya ingin keluar dari root, lalu dari pengguna saya dengan satu perintah. Apakah ada cara untuk melakukan ini?

BTW keluar && keluar tidak berfungsi karena keluar dari shell dan tidak memproses sisa perintah

josh@ubuntu:~$ sudo su -
root@ubuntu:~# exit && exit
logout
josh@ubuntu:~$
Joshua Zitting
sumber
5
"Hampir semua dari kita melakukannya .." Aku meragukannya. Saya memelihara beberapa mesin dan memiliki semua kata sandi dan saya tidak pernah menggunakan "sudo su" pada sistem berbasis debian. Dan saya berharap sebagian besar dari kita tidak menggunakannya.
Rinzwind
1
Jangan gunakan sudo su, tidak ada gunanya dan hanya meluncurkan proses tambahan. Gunakan sudo -i, jika Anda harus, sebaliknya.
terdon
Saya gunakan sudo -iuntuk mendapatkan shell root. Untuk ssh, Anda dapat mengkonfigurasi ssh untuk membolehkan login root, secara pribadi saya menggunakan opsi "tanpa kata sandi" untuk root dan salah satu kunci ssh er kerberos. Ini membuat akun root terkunci untuk kata sandi.
Panther
Saya tidak begitu mengerti apa yang tidak berhasil. exitKeluar pertama su, yang kedua logout. Bukankah itu yang ingin Anda lakukan?
Pilot6
1
@ Pilot6 sudahkah Anda menguji kode itu ?? Saya baru saja melakukannya dan itu tidak berhasil .. itu adalah HANYA apa yang ingin saya lakukan .. Tapi itu tidak berhasil ..
Joshua Zitting

Jawaban:

9

Secara teknis, tidak ada yang menjawab pertanyaan Anda. Saya menghargai bahwa mereka berpikir cara mereka lebih baik (mungkin), tetapi inilah pendekatan lain (jika Anda harus su -beberapa waktu dan memiliki masalah yang sama);

  1. [Masuk ke sistem]
  2. $ sudo su -;exit
  3. # echo "do things"
  4. # exit

Saat Anda keluar dari root, pengguna asli juga akan keluar karena itu melanjutkan itu perintah terakhir.

Bersulang!

Alexander E. Smith
sumber
14

Kerjakan saja

exec sudo -i

Sekarang shell root mengganti yang default, dan ketika Anda keluar, Anda keluar "keduanya" (kata-kata salah, karena shell pertama berhenti ada dengan exec).

Lihat:

[romano:~] % ssh pern
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-28-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

[romano@pern:~] % exec sudo -i
[sudo] password for romano: 
root@pern:~# whoami
root
root@pern:~# pstree -a -s -l -p -u $$
init,1
  └─sshd,1140 -D
      └─sshd,17450 
          └─sshd,17570,romano  
              └─sudo,17571,root -i
                  └─bash,17665
                      └─pstree,17678 -a -s -l -p -u 17665
root@pern:~# exit
logout
Connection to pern.XXX.XXX.XXX closed.
[romano:~] % 

Saya sering menggunakannya untuk memiliki sshterminal -ed: gunakan exec ssh whateverdan ketika Anda keluar, terminal ditutup.

Rmano
sumber
2
NICELY DONE !!! Terima kasih! Saya tidak lagi harus mengetikkan keluar dua kali !!
Joshua Zitting
Cerdik dilakukan! luar biasa
Anwar
1

ketika Anda menjadi pengguna root cukup ketik ::

sudo -s && exit

ketika Anda akan keluar dari root, shell Anda akan secara otomatis menutup. Anda dapat mengekspor perintah ini untuk membuatnya permanen.

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
javesh bhardwaj
sumber