Можно ли запустить команду от имени пользователя 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` ? 

 Спасибо. 

 

 Вы можете сделать  `/ 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. Поэтому не пропускайте его. 

 

 Наверное, проще всего написать сценарий оболочки.
Новый сценарий в  `/ 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 ' "$@")

```