Есть ли способ убрать требования root для определенной команды в Linux? Если да, то как?

Есть ли способ убрать требования root для определенной команды в Linux? Если да, то как?

Я использую Ubuntu 12.04 LTS и пытаюсь сделать так, чтобы конкретная команда

dhclient

не требует прав root. Я провел некоторые исследования, которые привели меня к мысли, что я мог бы разблокировать пользователя "su", который не требовал бы прав root ни для чего, но боюсь, что я сломаю что-нибудь таким образом.

Возможно, я задаю два отдельных вопроса:

  1. Где в моей ОС находятся все команды, не требующие прав root?

  2. Могу ли я переместить эту команду туда?

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

решение1

Лучший способ сделать это — использовать sudo, который очень гибко настраивается в отношении того, какой пользователь может выполнять те или иные команды. Используйте visudoдля редактирования /etc/sudoers(никогда не редактируйте этот файл напрямую — если вы допустите ошибку, вы полностью заблокируете себя). Следующая запись позволит пользователю bobработать dhclientбез запроса пароля.

bob ALL = (root) NOPASSWD: /sbin/dhclient

Бобу пришлось бежать, sudo dhclientчтобы выполнить его.

решение2

Может ли конкретный пользователь успешно выполнить программу (двоичный файл или скрипт) или нет, зависит от двух вещей:

  • Пользователю необходимы права на выполнение файла.

    Это не проблема: ls -lпоказывает, что любой пользователь может выполнить /sbin/dhclient.

  • Пользователю необходимы права на чтение, запись и/или выполнение файлов, к которым обращается программа.

    Эта часть намного сложнее и опаснее, поскольку может включать изменение прав доступа ко многим файлам.

Для получения более подробной информации см.Chmod - Википедия.

Обычный способ выполнить команду с привилегиями root — sudo. Изстраница руководства:

судопозволяет разрешенному пользователю выполнитькомандакак суперпользователь или другой пользователь, как указано вsudoersфайл. Реальные и эффективные uid и gid устанавливаются в соответствии с uid и gid целевого пользователя, как указано в файле passwd, а вектор группы инициализируется на основе файла группы (если толькоопция была указана). Если вызывающий пользователь — root или целевой пользователь тот же, что и вызывающий пользователь, пароль не требуется. В противном случае,судотребует, чтобы пользователи аутентифицировали себя с помощью пароля по умолчанию (ПРИМЕЧАНИЕ: в конфигурации по умолчанию это пароль пользователя, а не пароль root). После аутентификации пользователя обновляется временная метка, и пользователь может использовать sudo без пароля в течение короткого периода времени (5 минут, если это не изменено вsudoers).

Основной синтаксис в вашем конкретном случае следующий:

sudo dhclient

Относительно других Ваших вопросов:

1. Где в моей ОС находятся все команды, не требующие прав root?

Большинство двоичных файлов для всех пользователей находятся внутри /bin, /usr/binи /usr/local/bin.

Большинство системных двоичных файлов (требуют прав root) находятся в /sbin.

Это просто практическое правило. Вы можете размещать двоичные файлы где угодно.

Смотрите также:Стандарт иерархии файловой системы

2. Могу ли я переместить эту команду туда?

Помимо потенциальной поломки чего-либо, это не имело бы абсолютно никакого эффекта.

Связанный контент