Я пытаюсь выполнить команду ниже, используя пользователя без полномочий root echo '%pg_wheel ALL= /bin/su - postgres' > /etc/sudoers.d/postgres Получение ошибки ниже: bash: /etc/sudoers.d/postgres: Отказано в доступе
Нет, вы не можете получить к нему доступ без рута, потому что если бы вы могли изменить конфигурацию sudo без рута, то пользователь без полномочий root мог бы предоставить себе root-доступ.
Однако, если у вас есть доступ к root через sudo, вы можете использовать трюк «запись с тройником».
Для этого вы должны переформатировать эту команду следующим образом:
echo '%pg_wheel ALL= /bin/su - postgres' | sudo tee /etc/sudoers.d/postgres
Предупреждение: будьте осторожны при редактировании файлов sudo вручную — такой инструмент, как visudo
, проверит синтаксис вашей команды sudo, но редактирование напрямую означает, что вы можете заблокировать себя.
Вы хотите записать в файл, который может быть записан только как root. Вы не можете использовать sudo echo '%pg_wheel ALL= /bin/su - postgres' > /etc/sudoers.d/postgres
, потому что это запускает эхо как root, когда вы хотите запустить >
, перенаправление в файл, как root. Однако вы не можете запустить >
как root, потому что на самом деле это не команда. Итак, вам нужна команда, которая может писать в файл. Есть много команд, которые могут это сделать, но самая простая — tee. Обычно tee используется для разделения канала данных на два выхода, но его также можно использовать для записи файла.
спасибо, это сработало. Не могли бы вы помочь мне понять использование тройника здесь