Как я могу CTRL ^ C из запроса пароля?

8

Скажем, я запустил suкоманду и хочу ее отменить. Control+ Cне работает так, suкак работает sudo... Я должен завершить запрос (либо введя неправильный пароль достаточно много раз, либо получив правильный).

Что-то, что я могу напечатать, чтобы убить приглашение пароля?

Вопросительный знак
источник
@DisplayName Вы не можете контролировать -c из su, как вы можете sudo ... это другой сценарий.
Вопросительный
ответ контрольный-D.
DisplayName
@DisplayName Да, смотрите ответ Жиля. Я
Вопросительный
Это дубликат. В ответе на пост, на который я ссылаюсь, также написано control-D.
DisplayName

Ответы:

5

suработает с повышенными привилегиями, и вы не видите, что он отвечает ^C(что посылает сигнал с вашими привилегиями). Вы можете su перейти в другую оболочку и убить ее из другой оболочки. Также (в зависимости от системы) он может реагировать на SIGHUP(сигнал зависания), если вы закрыли сеанс терминала, в котором происходит неловкое состояние su.

Есть несколько способов suигнорировать ваши ^C, например,

  • установление обработчиков сигналов или
  • работает под другим управляющим терминалом.

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

Дальнейшее чтение:

Томас Дики
источник
Если я выполняю suкак обычный пользователь, и он ожидает ввода пароля от пользователя, он «работает с повышенными привилегиями» в данный момент?
Techraf
1
Да: вы можете убедиться сами, выполнив команду ps -efиз другого терминала. Это происходит автоматически, потому что susetuid'd для root .
Томас Дики
7

Вы можете CTRL-D suподсказать.
Этот ярлык сигнализирует об окончании файла на консоли, выходя из приглашения; консоль покажет Authentication error, что является ожидаемым.

joH1
источник
3
Control-D будет EOF (QUIT - это другое, и обычно его ловят ). Но да, EOF может работать.
Томас Дики
2

Я обнаружил, что лучший способ убить suпри вводе неверного пароля - это Control+ с Uпоследующим Control+ D. Это должно избежать раздражающих задержек. Вы также можете просто очистить ввод с помощью Control+ Uи повторить попытку ввода пароля.

Control+ U- это команда, которая очищает текущую строку текста, а также работает в оболочке (и, возможно, в других местах). Также приятно, что кажется, что он работает suдля очистки введенного в данный момент пароля.

Использование Control+, Cкажется, не работает, кажется, что по какой-то причине suпросто игнорирует его. Неверно, что пользователь, который запустил процесс, больше не может убить его из-за setuid - suумирает совершенно нормально, если вы убиваете его с SIGTERMили SIGQUITс другого терминала (как пользователь, который запустил его). SIGINTне работает, так что, suвероятно, просто игнорирует это.

Control+ Dс пустым вводом пароля, кажется, единственный способ мгновенно завершить работу su- если введен какой-либо текст, то нажатие Control+ Dвызовет 3-секундную задержку (если вы не ввели правильный пароль, в этом случае. .. это запустит корневую оболочку).

uukgoblin
источник