Назад | Перейти на главную страницу

Почему я не могу запустить sudo -g?

$ sudo -u fish -g fish bash
Sorry, user steve is not allowed to execute '/bin/bash' as fish:fish on myserver.
$ sudo -u fish bash
$ groups
fish

Для чего предназначен параметр -g и почему я не могу его использовать? RHEL кстати.

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

  • Стив ВСЕ = (ВСЕ) ...

  • Стив ВСЕ = (ВСЕ: ВСЕ) ...

Появляется дикая страница руководства!

-g group Обычно sudo устанавливает в качестве первичной группы группу, указанную в базе данных passwd для пользователя, от имени которого выполняется команда (по умолчанию root). Параметр -g (группа) заставляет sudo запускать указанную команду с основной группой, установленной как group. Чтобы указать gid вместо имени группы, используйте #gid. При запуске команд как gid, многие оболочки требуют, чтобы символ '#' был экранирован обратной косой чертой ('\'). Если опция -u не указана, команда будет запущена от имени вызывающего пользователя (не root). В любом случае основная группа будет установлена ​​на группу.

Вероятно, вы не можете использовать его, потому что у вас нет на это разрешения. Если я читаю sudoers(5) справочная страница справа, вам нужно явно указать список групп для Runas_user часть записи sudoers, чтобы иметь возможность использовать -g:

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