Если вы установите владельца исполняемого файла вашей программы на корень
с
sudo chown корень /путь/к/программе/исполняемому файлу
а затем установите бит setuid с помощью
sudo chmod u+s /путь/к/программе/исполняемому файлу
тогда вам не нужно ни перезагружаться, ни использовать судо
. При обычном запуске программы по имени она будет выполняться с привилегиями root. Однако это позволит Любые пользователь для запуска программы с привилегиями root, поэтому вы должны очень убедитесь, что вы запрограммировали его таким образом, что им нельзя злоупотреблять для выполнения других действий, чем вы предполагали, с привилегиями root.
Первый шаг очень важен. Функция бита setuid состоит в том, чтобы заставить программу работать с UID владельца файла. Если этот владелец не корень
то программа не будет иметь привилегий root, даже если вы запустите ее с судо
, так как бит setuid переопределяет эффект судо
.
Так либо запустите свою программу с судо
или же установите бит setuid с помощью chmod u+s
, но не оба.
NB: вместо того, чтобы запускать вашу программу с привилегиями root, может быть лучше установить права доступа к файлам устройств, к которым она обращается, чтобы разрешить обычному пользователю, запускающему ее, необходимый доступ.