Можно ли запустить команду от имени пользователя root без пароля и ввода sudo?

Предположим, у меня есть пользователь some_user и команда / usr / bin / command .Как мне выполнить эту команду от имени пользователя root, введя / usr / bin / command , но не sudo / usr / bin / command ?

Я попытался отредактировать sudoers с visudo , но безуспешно, пароль не запрашивается, но мне нужно написать sudo :

some_user ALL = (ALL: ALL) NOPASSWD: / usr / bin / command

Есть ли разница между приведенной выше командой и www-data ALL = (ALL) NOPASSWD: / usr / bin / kill ?

Спасибо.

2
задан 24 November 2020 в 15:06

2 ответа

Вы можете сделать / usr / bin / command корневым идентификатором setuid. Однако это будет работать для ВСЕХ пользователей, а не только для конкретного. Т.е. любой пользователь, набравший / usr / bin / command , запустит команду от имени пользователя root без необходимости указывать пароль - вы не можете ограничить это только определенными пользователями. Кроме того, когда вы устанавливаете / usr / bin / command setuid root, не будет возможности запустить эту команду как некорневой, пока вы не удалите бит setuid.

Btw. Именно так работает sudo - / usr / bin / sudo является setuid root, поэтому он автоматически становится root, когда вы набираете sudo . Если бы это был не setuid root, он не смог бы переключиться на root.

Но я предлагаю вам не устанавливать случайные команды setuid root. sudo был разработан для использования таким образом и выполняет множество проверок безопасности, прежде чем фактически позволит вам запустить команду. По определению , если вы вводите имя команды в терминале, вы запускаете эту команду как текущий идентификатор пользователя (если только команда не повышает привилегии сама по себе, например, будучи setuid root, или используя sudo внутри, как в решении Тони). sudo служит для того, чтобы четко отличать команду, выполняемую от имени пользователя без полномочий root, от команды, выполняемой от имени пользователя root. Поэтому не пропускайте его.

9
ответ дан 3 January 2021 в 22:48

Наверное, проще всего написать сценарий оболочки. Новый сценарий в / usr / local / bin / command , который запускает / usr / bin / command через sudo

/ usr / local / bin / command

#!/bin/bash

echo "[I] Invoked by '${USER}', running as root" >&2
sudo /usr/bin/command $(printf '%q ' "$@")
5
ответ дан 3 January 2021 в 22:48

Другие вопросы по тегам:

Похожие вопросы: