Выход из root и пользователя одной командой

Я знаю о "не использовать sudo su -и т.д. Но давайте будем честными, почти все мы делаем это.

Итак, вот в чем проблема. У нас не может быть разрешен вход с правами суперпользователя, поэтому мы должны войти в систему как ssh, а затем войти в систему как root
Вот дерево процесса:

    1  7897  7826  7826 ?           -1 S     1000   0:00 sshd: [email protected]/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, а затем из моего пользователя с помощью одной команды. Есть ли способ сделать это?

Кстати, выход && exit не работает, потому что он выходит из оболочки и не обрабатывает остальную часть команды

[email protected]:~$ sudo su -
[email protected]:~# exit && exit
logout
[email protected]:~$

3 ответа

Решение

Технически никто не ответил на ваш вопрос. Я ценю, что они думают, что их путь лучше (вероятно, есть), но вот другой подход (на случай, если вам придется su - какое-то время и имеют такую ​​же проблему);

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

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

Ура!

Просто делать

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/

[[email protected]:~] % exec sudo -i
[sudo] password for romano: 
[email protected]:~# whoami
root
[email protected]:~# 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
[email protected]:~# exit
logout
Connection to pern.XXX.XXX.XXX closed.
[romano:~] % 

Я использую это много, чтобы иметь sshтерминал: используйте exec ssh whatever и когда вы выходите, терминал закрывается.

Когда вы становитесь пользователем root, просто наберите::

sudo -s && exit

когда вы выйдете из корня, ваша оболочка автоматически закроется. Вы можете экспортировать эту команду, чтобы сделать ее постоянной.

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
Другие вопросы по тегам