Выход из root и пользователя одной командой
Я знаю о "не использовать sudo su -и т.д. Но давайте будем честными, почти все мы делаем это.
Итак, вот в чем проблема. У нас не может быть разрешен вход с правами суперпользователя, поэтому мы должны войти в систему как ssh, а затем войти в систему как 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, а затем из моего пользователя с помощью одной команды. Есть ли способ сделать это?
Кстати, выход && exit не работает, потому что он выходит из оболочки и не обрабатывает остальную часть команды
josh@ubuntu:~$ sudo su -
root@ubuntu:~# exit && exit
logout
josh@ubuntu:~$
3 ответа
Технически никто не ответил на ваш вопрос. Я ценю, что они думают, что их путь лучше (вероятно, есть), но вот другой подход (на случай, если вам придется su - какое-то время и имеют такую же проблему);
- [Войти в систему]
$ sudo su -;exit# echo "do things"# 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/
[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 и когда вы выходите, терминал закрывается.
Когда вы становитесь пользователем root, просто наберите::
sudo -s && exit
когда вы выйдете из корня, ваша оболочка автоматически закроется. Вы можете экспортировать эту команду, чтобы сделать ее постоянной.
echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc