Запустить команды командной оболочки с правами root без предоставления прав пользователя sudo?

Я пытаюсь запустить три отдельные команды nmcli

nmcli connection down config-AP nmcli connection up config-AP nmcli device wifi hotspot con-name config-AP ssid device band bg password password 

Если они не называются root, время ожидания

 Error: Timeout 10 sec expired. 

Как я могу разрешить выполнение этих команд без добавления пользователя в файл sudoers?

Если у вас есть команда, которая не наносит вреда, но требует прав root, вы можете изменить ее, чтобы иметь атрибут «установить идентификатор пользователя» (установить идентификатор uid или suid). Вот пример:

 ls -l /bin/chsh -rwsr-xr-x 1 root root 23376 Mar 22 21:23 /bin/chsh* 

Этот файл имеет тег «s», чтобы показать, что во время выполнения он будет принимать идентификатор пользователя root (третий столбец).

Тем не менее, это потенциально опасно, и локальный злоумышленник, способный вызвать эту команду, может обгонять вашу систему, если сама команда не запрограммирована на обращение с именем suid 0. Вы были предупреждены.

Сказав это, вы могли бы сделать:

 chmod u+s,aw /usr/bin/nmcli 

(при необходимости измените путь, например, в /bin/nmcli соответствии с вашей системой)

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

 chgrp john /usr/bin/nmcli chmod o= /usr/bin/nmcli 

Таким образом, только кто-то из группы john (и root) может вызвать команду. В идеале используйте группу, в которой находится только ваш пользователь.