Как правильно настроить файл sudoers на Debian Wheezy?

10

Я видел много постов в блогах, которые говорят, что достаточно сделать

aptitude install sudo
su root
adduser USERNAME sudo

Но это только защищает aptitude, другими словами:

  • aptitude install sendmailпопросит пароль, вам нужно будет sudoзапуститьaptitude

  • apt-get install sendmailне будет запрашивать пароль, никаких sudoпривилегий не требуется

  • Если вы редактируете защищенные файлы, например, файлы в etcнем не будут запрашивать пароль, никаких sudoпривилегий не требуется

  • Вы можете запускать и останавливать службы, такие как apache, он не будет запрашивать пароль, никаких sudoпривилегий не требуется

Как это исправить? Это мой файл sudoers:

 This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$

# Host alias specification

# User alias specification

# Cmnd alias specification

Это вывод sudo -l:

Matching Defaults entries for root on this host:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User root may run the following commands on this host:
    (ALL : ALL) ALL
    (ALL : ALL) ALL
Lynob
источник
3
После того su root, как вы вошли в систему как rootпользователь, у вас есть полный доступ ко всему. Чтобы вернуться к регулярному использованию, которое нужно использовать sudoдля привилегированных операций, выйдите из оболочки, запущенной как root.
Депвид
Я новичок в Linux, но в вики Debian говорится - имя пользователя adduser sudo wiki.debian.org/sudo
AntiCZ

Ответы:

16

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

Команда adduser USERNAME sudoдобавляет указанного пользователя в вызываемую группу sudo. Группа с таким именем должна существовать; создайте его, addgroup sudoесли это не так. После добавления пользователя в группу пользователь должен выйти и снова войти в систему, чтобы членство в группе вступило в силу.

sudoэто не специальное имя группы. Это соглашение, разрешающее пользователям в группе, вызываемой, sudoзапускать команды от имени пользователя root с помощью sudoутилиты. Для этого требуется следующая строка в sudoersфайле:

%sudo ALL = (ALL) ALL

Запустите visudoдля редактирования файла sudoers, никогда не редактируйте его напрямую.

Я понятия не имею, почему вы верите, что «это только защищает способности». В способностях нет ничего особенного. После того как вы разрешили пользователю запускать команды от имени пользователя root, этот пользователь может запускать sudo aptitude …или sudo apt-get …или sudo service …, или sudoeditредактировать файлы, для которых требуется разрешение root. Нахождение в файле sudoers напрямую не меняет привилегии вашего пользователя, а позволяет sudoзапускать команды от имени пользователя root. Команды запускаются с правами root только при их запуске sudo. Некоторые программы могут делать это автоматически, особенно программы с графическим интерфейсом, где пользовательский интерфейс запускается без специальных привилегий, и только бэкэнд запускается как root, но команды, выполняемые как root, всегда выполняются sudo.

Жиль "ТАК - перестань быть злым"
источник
Он побежал sudo -lот имени root. Даже если есть полезные определения для пользователей, они не были бы показаны. Таким образом, ваше предположение «Вы не добавили ни одного правила sudo» может быть неверным.
Хауке Лагинг
@HaukeLaging Я не понимаю ваш комментарий. «Вы не добавили ни одного правила sudo» - не догадка: sudoersфайл в вопросе.
Жиль "ТАК - перестань быть злым"
Я был близок к депрессии, осознавая, что слишком сосредоточен на sudo -lвыводе, но, к счастью ... Кажется, что содержание вопроса не может быть целым файлом, поскольку оно не соответствует выводу. По крайней мере, моя sudoверсия не претендует на то, что «пользователь root может запускать следующие команды» sudoersбез какого-либо определения команды (как в вопросе).
Хауке Лагинг
@HaukeLaging Вы правы, я проверил wheezy и на самом деле sudo -lпросто говорит: «Пользователь root не может запускать sudo на darkstar». И sudoгруппа находится в файле sudoers по умолчанию на wheezy. Необходимые записи могут быть перемещены в файл в /etc/sudoers.d. В любом случае, что бы ни содержал файл sudoers, он не будет делать то, что предполагает Фишер.
Жиль "ТАК ... перестать быть злым"
4

Что может произошло это: Судо кэширование пароля. Итак, после того, как вы правильно завершили внедрение sudo в вашей системе, вы должны ввести пароль для первой команды, и после этого она будет кешироваться в течение некоторого времени. Если это произойдет, и вы запустите последовательность

sudo aptitude install sendmail
sudo apt-get install sendmail

Затем вам нужно будет ввести пароль для первой команды, но не для второй (по крайней мере, пока вы находитесь в течение времени ожидания). Может показаться, что он защищает только первую команду, но не вторую. Без дополнительной информации (полных стенограмм оболочки) невозможно сказать ...

Josef
источник
Да. Одно не исключает другого. Правильный ответ хорошо объясняет, как правильно настроить sudo, и в этом смысле он отвечает на вопрос. Это не объясняет, почему, по словам вопроса, «это только защищает способность». Жиль пишет сам: «Я понятия не имею, почему вы верите, что« это только защищает способности »». Как я уже сказал, чтобы действительно понять это явление, необходимо больше информации. Я думаю, что отрицательное голосование является немного резким, учитывая, что мой ответ на самом деле правильный, затрагивает исходный вопрос и заполняет пробел в существующем ответе.
Йозеф
Хорошая идея, это может быть источником путаницы Фишера.
Жиль "ТАК ... перестать быть злым"
0

Если вы следуете приведенному выше ответу, вы идете правильным путем. По крайней мере, в моей Debian Jessie я сделал мягкую ссылку на / usr / bin команды в пути / sbin. Например: / sbin / ifup, я помещаю мягкую ссылку (ln -s) на / usr / bin и могу использовать ее.

Еще одна важная вещь, чтобы поставить NOPASSWD так:

User_Alias NET = goviedo
Cmnd_Alias ETH = /sbin/ifup
NET ALL = NOPASSWD:ETH
Гонсало Овьедо
источник