В чем смысл 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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.