1

Настройка сервера rails (Ubuntu 12.10) в DigitalOcean, и я хочу, чтобы пользователь без полномочий root запускал некоторые команды развертывания с правами доступа root , добавляя префикс sudo к команде и вводя пароль. Я думал, что смогу редактировать visudo как показано ниже, но в разрешениях отказано. Я что-то пропустил?

Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# User privilege specification
root    ALL=(ALL:ALL) ALL
nonrootuser ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Я сделал nonrootuser членом группы deployers на случай, если в будущем у меня будет несколько агентов развертывания. Эта группа не вызвана в visudo, но я не знаю, насколько это актуально, поэтому я упоминаю об этом здесь.

Команды как это терпят неудачу от моего блока разработки (не сервера.) Я ожидаю, что это добавит содержимое моего открытого ключа dev box в файл author_keys сервера на сервере после запроса пароля не-root-пользователя. Фактический результат - отказано в разрешениях.

cat ~/.ssh/id_rsa.pub | ssh -p 12345 nonrootuser@123.123.123.123 'cat >> ~/.ssh/authorized_keys'

Я попытался перезагрузить коробку полностью, и все еще без изменений. Я также попробовал sudo cat... в моей пипетке безрезультатно.

2 ответа2

1

Чтобы ваши пользователи имели доступ к sudo, в соответствии с опубликованной вами конфигурацией sudo они должны быть членами группы admin или sudo. Если вы хотите предоставить это групповым развертывателям, скопируйте конфигурацию группы sudo в новую строку и измените ее на развертыватели.

%deployers   ALL=(ALL:ALL) ALL
1
  1. /etc/sudoers не предоставляет никаких привилегий непосредственно учетной записи пользователя. Он только разрешает пользователю запускать различные команды с помощью инструмента sudo (который запускает их под учетной записью root). Поэтому sudo cat /etc/shadow будет работать, а cat /etc/shadow нет.

  2. Каналы и перенаправления обрабатываются оболочкой перед выполнением каждой команды ; то есть, если вы запускаете sudo cat > somefile , ваша оболочка (которая запускается под вашей собственной учетной записью) сначала пытается открыть somefile для записи; и - если это удастся - только тогда запускает sudo cat с файлом, прикрепленным к его стандартному выводу. Другими словами, sudo не применяется к перенаправлениям, если вы не передаете их как часть команды, например, sudo sh -c "cat > somefile" .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .