Вопрос Выход из корня и пользователя с помощью одной команды


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

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

    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 && exit не работает, потому что он выходит из оболочки и не обрабатывает остальную часть команды

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

9
2017-09-11 17:40


происхождения


«Почти все мы это делаем». Я в этом сомневаюсь. Я поддерживаю несколько машин и имею все пароли, и я никогда не использую «sudo su» в дебианских системах. И я ожидаю, что большинство из нас не будет использовать его. - Rinzwind
Не использовать sudo su, это бессмысленно и просто запускает дополнительный процесс. использование sudo -i, если вам нужно, вместо этого. - terdon♦
я использую sudo -i для получения корневой оболочки. Что касается ssh, вы можете настроить ssh, чтобы разрешить вход в систему root, лично я использую опции «без пароля» для root и ssh keys er kerberos. Это блокирует учетную запись root для паролей. - Panther
Я не совсем понимаю, что не работает. Первый exit выходы su, второй - выход из системы. Разве это не то, что вы хотели сделать? - Pilot6
@ Pilot6 вы проверили этот код? Я только что сделал, и это не сработало. Это просто, что я хочу сделать. Но это не работает. - Joshua Zitting


ответы:


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

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

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

Ура!


9
2017-11-16 21:39





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

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терминал: используйте exec ssh whatever и когда вы выходите, терминал закрывается.


14
2017-09-11 17:59



НИЧЕГО СОВЕРШЕННО !!! Спасибо! Мне больше не нужно вводить exit дважды! - Joshua Zitting
Умело сделано! отлично - Anwar


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

sudo -s && exit

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

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

1
2017-09-24 14:10