Как запустить файл с sudo без пароля? [Дубликат]

Это указано в быстрых клавишах клавиш (удерживайте клавишу Super / Win до тех пор, пока они не появятся на экране) в качестве комбинации «Alt + Dead Grave» ... это клавиша «слева» от номера 1 на моей клавиатуре, выше вкладка - извинения, если ваша находится в другом месте!

Это позволит вам циклически запускать несколько окон одного и того же приложения - к сожалению, я не думаю, что есть способ сказать, перебирать разные вкладки в одном окне ( используя ваш пример Firefox).

1
задан 13 April 2017 в 15:24

3 ответа

Для полноты вы можете добиться аналогичного эффекта, установив бит setuid в разрешениях файла.

Немного сложная часть состоит в том, что по соображениям безопасности setuid бит в скриптах игнорируется ядром, поэтому вам нужно будет скомпилировать небольшую программу-оболочку на C и использовать ее для вызова вашего скрипта. Сохраните это как runscript.c:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
   setuid( 0 );
   system( "/path/to/script.sh" );

   return 0;
}

, затем скомпилируйте его с

gcc runscript.c -o runscript

и установите бит setuid в исполняемом файле:

sudo chown root:root runscript
sudo chmod 4755 runscript

] Также важно убедиться, что ваш скрипт доступен только для записи root, поскольку каждый, кто может изменить скрипт, сможет выполнять произвольные программы:

sudo chown root:root /path/to/script.sh
sudo chmod 0711 /path/to/script.sh

Вот статья, в которой у меня есть обертка программный код из: setuid .

По соображениям безопасности оба подхода - один с sudo и один с setuid - довольно плохи, но, вероятно, будут в порядке на домашней машине. Разница в том, что каждый пользователь системы сможет запустить команду setuid, даже не будучи в файле sudoers. Также, очевидно, вам не нужно будет префикс команды с помощью sudo.

3
ответ дан 25 May 2018 в 05:30

Тег «NOPASSWD» вам нужен.

Используйте visudo и установите что-то вроде этого в конце файла:

имя пользователя ALL = NOPASSWD: / bin / echo

Замените имя пользователя вашим именем пользователя и / bin / echo командой, которую вы хотите запустить.

0
ответ дан 25 May 2018 в 05:30

Вам нужно будет добавить полный путь к программе, которую вы запускаете, в файл sudoers, а не сценарий. Я предполагаю, что это pm-hibernate, поэтому:

john ALL=NOPASSWD: /usr/sbin/pm-hibernate
0
ответ дан 25 May 2018 в 05:30

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

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