Вийдіть із кореня та користувача однією командою


9

Я знаю про "не використання sudo su -" і т. Д. Але будьмо чесними, майже всі ми це робимо.

Отже, ось питання. У нас не може бути ввімкнено кореневі логіни, тому нам потрібно ввімкнути скриньку, як наш користувач, а потім виконувати їх.
Ось дерево процесу:

    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

Я хотів би вийти з root, а потім від мого користувача однією командою. Чи є спосіб це зробити?

Вихід та вихід BTW не працює, тому що він закриває оболонку і не обробляє решту команди

josh@ubuntu:~$ sudo su -
root@ubuntu:~# exit && exit
logout
josh@ubuntu:~$

5
"Майже всі ми це робимо .." У цьому сумніваюся. Я підтримую кілька машин і маю всі паролі, і ніколи не використовую "sudo su" на системах на базі debian. І я очікую, що більшість із нас цим не користується.
Rinzwind

1
Не використовуйте sudo su, це безглуздо і просто запускає додатковий процес. Використовуйте sudo -i, якщо потрібно, замість цього.
тердон

Я використовую sudo -iдля отримання кореневої оболонки. Що стосується ssh, ви можете налаштувати ssh, щоб дозволити кореневі входи, особисто я використовую параметри "без пароля" для root та будь-яких ключів ssh er kerberos. Це зберігає кореневий рахунок заблокованим паролями.
Пантера

Я не зовсім отримую те, що не працює. Перший exitвихід su, другий вихід із системи. Хіба це не те, що ти хотів зробити?
Пілот6

1
@ Pilot6 Ви перевірили цей код ?? Я щойно це зробив, і це не працює. ОСТАНО, що я хочу робити .. Але це не працює ..
Джошуа Зіттінг

Відповіді:


9

Технічно ніхто не відповів на ваше запитання. Я ціную, що вони думають, що їхній шлях є кращим (напевно, є), але ось інший підхід (якщо ви маєте su -певний час і маєте те саме питання);

  1. [Увійти в систему]
  2. $ sudo su -;exit
  3. # echo "do things"
  4. # exit

Коли ви виходите з root, початковий користувач також вийде, оскільки він продовжує свою останню команду.

Ура!


14

Просто роби

exec sudo -i

Тепер коренева оболонка замінює типову, і коли ви виходите, ви виходите з "обох" (неправильно сформульовано, оскільки перша оболонка припиняє існувати разом із exec).

Подивіться:

[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:~] % 

Я дуже часто використовую його для встановлення sshтермінала -ed: використовуйте, exec ssh whateverа коли ви виходите, термінал закривається.


2
НІКОЛЬКО Зроблено !!! Дякую! Мені більше не доведеться вводити вихід двічі !!
Джошуа Зіттінг

Уміло зроблено! відмінно
Анвар

1

коли ви стаєте користувачем root, просто введіть ::

sudo -s && exit

коли ви вийдете з кореня, оболонка автоматично закриється. Ви можете експортувати цю команду, щоб зробити її постійною.

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.