Есть ли способ удалить корневые требования для конкретной команды в Linux? Если да, то как?
Я использую Ubuntu 12.04 LTS, и я пытаюсь сделать так, чтобы конкретная команда
dhclient
не требует привилегий root. Я провел некоторое исследование, которое заставило меня поверить, что я могу разблокировать пользователя "su", который не требует рута для чего-либо, но боюсь, что я что-то сломаю таким образом.
Может быть, я задаю два отдельных вопроса:
Где все команды, которые не требуют привилегий root, находятся в моей ОС?
Могу ли я переместить эту команду туда?
Любой способ будет работать в моем случае, и я даже не уверен, насколько так отличаются команды обычного пользователя от остальных, если честно.
2 ответа
Лучший способ сделать это с помощью sudo, который очень настраивается в зависимости от того, какой пользователь может выполнять какие команды. использование visudo
редактировать /etc/sudoers
(никогда не редактируйте этот файл напрямую - если вы допустите ошибку, вы полностью заблокируете себя). Следующая запись позволит пользователю bob
бежать dhclient
без пароля.
bob ALL = (root) NOPASSWD: /sbin/dhclient
Боб побежит sudo dhclient
когда для того, чтобы выполнить его.
Если конкретный пользователь может или не может успешно выполнить программу (двоичную или скриптовую), это зависит от двух вещей:
Пользователю нужны права на выполнение файла.
Это не проблема:
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. Могу ли я переместить эту команду туда?
Помимо возможного нарушения чего-либо, это не будет иметь абсолютно никакого эффекта.