2

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

dhclient

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

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

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

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

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

2 ответа2

6

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

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

Боб запускал sudo dhclient когда выполнял его.

2

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

  • Пользователю нужны права на выполнение файла.

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

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

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

Для получения дополнительной информации см. Chmod - Wikipedia.

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

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

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

sudo dhclient

По поводу других ваших вопросов:

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

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

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

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

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

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

Помимо возможного нарушения чего-либо, это не будет иметь абсолютно никакого эффекта.

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