В чем смысл sudo sudo?

8

Я использую Cloud9 для разработки Rails, и он использует среду Ubuntu. В документации об использовании базы данных PostgreSQL говорится:

Подключиться к услуге:

$ sudo sudo -u postgres psql 

Что означает вводить sudo дважды?

https://docs.c9.io/setting_up_postgresql.html

Энди Сингх
источник
1
Возможно, пользователю разрешено запускать sudoкоманду от имени пользователя root, но не от имени psqlкоманды postgres.
Стефан Шазелас
@WarrenYoung Глядя на документ, кажется преднамеренным, что пользователь может получить root без боя. Первоначальный пользователь, вероятно, считается административной учетной записью, и поэтому он, вероятно, был предоставленuser ALL=(ALL) NOPASSWD: ALL
Братчли
Конечно, проблема не в том, чтобы запрашивать пароль root для учетной записи с правами ssh.
Братчли
Я открыл проблему (и сделал хэш запроса на удаление). Посмотрим, исправят ли они это.
Муру
И это было исправлено.
Муру

Ответы:

9

sudo -u postgres позволяет вам олицетворять пользователя postgres при запуске команды. У вашего пользователя, вероятно, нет такой привилегии, но у пользователя root есть.

Таким образом, первый sudo дает вам права root, а второй sudo позволяет вам (как root) выполнить sudo -u для postgres, что позволяет запускать команду от имени пользователя postgres.

Джереми Дрисколл
источник
+1: это вполне может объяснить второе sudo.
Уоррен Янг
0

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

Учитывая, как много людей правят свои правила, вы можете запустить sudo -lкак обычный пользователь, чтобы узнать, дали ли они вам доступ ко всем пользователям или по какой-то причине заблокировали вас как root. Я готов быть первым, и в этом случае вы можете оставить первый sudo.

Bratchley
источник