Как дать команду sudo файлу python без ввода пароля каждый раз

Я создал код Python, для запуска которого требуется разрешение sudo. Проблема в том, что это автоматический код, который будет запускаться при каждом запуске компьютера, поэтому есть ли способ, с помощью которого я могу дать ему разрешение sudo только один раз и запустить его позже без запроса пароля?

Я уже пытался дать ему +x разрешения (я знаю, что это не сработает, но в любом случае), запустив sudo chmod +x main.py, но это не помогло.

работа, которую выполняет мой код, заключается в обнаружении наличия съемных устройств (например, флешки) на компьютере и печати имен файлов, присутствующих на этом устройстве. Мой код печатает все данные и работает хорошо, когда устройство уже подключено, но если оно подключено позже, он дает трассировку:

Traceback (most recent call last):
  File "/home/rapidfire69/RaPiD/coding/Projects/Python/PenDrive_Thief/PenDrive_Thief.py", line 17, in <module>
    myFunction()
  File "/home/rapidfire69/RaPiD/coding/Projects/Python/PenDrive_Thief/PenDrive_Thief.py", line 7, in myFunction
    raw_files = (os.listdir(base_path+devices[0]))
PermissionError: [Errno 13] Permission denied: '/media/username/pendrive'

Моя ОС Ubuntu 20.04. Питон 3

Пожалуйста помоги....


person RPD_215    schedule 08.09.2020    source источник
comment
Как вы запускаете свой скрипт при запуске?   -  person jlandercy    schedule 08.09.2020
comment
с помощью приложения с именем startup, которое по умолчанию присутствует в Ubuntu 20.04.   -  person RPD_215    schedule 08.09.2020
comment
Чтобы решить вашу проблему, вы можете рассмотреть возможность использования systemctld, который является современным способом организации служб в Debian/Ubuntu. Его легко сесть в поезд, он надежен, а также изначально управляет вращающимися бревнами. Это может быть отличным вариантом решения вашей проблемы.   -  person jlandercy    schedule 08.09.2020


Ответы (1)


Вы можете отредактировать файл /etc/sudoers, как описано здесь и дайте пользователю, выполняющему ваш скрипт, права доступа sudo без пароля

 username ALL=(ALL) NOPASSWD: ALL
person Łukasz Ślusarczyk    schedule 08.09.2020
comment
Я не рассматривал подробно ссылки на этой странице, но стоит подчеркнуть, что при редактировании файла sudoers вы должны использовать команду visudo. Если вам не нравится редактор, который он предлагает, это можно изменить, установив переменную окружения EDITOR. - person alani; 08.09.2020
comment
Спасибо, это сработает, но он никогда больше не будет запрашивать пароль у этого пользователя, что действительно небезопасно, есть ли способ сделать это, но только для одного файла или сценария? - person RPD_215; 08.09.2020
comment
взгляните на свойство SUID сценария оболочки, например. здесь: stackoverflow.com/questions/33565729/ - person Łukasz Ślusarczyk; 08.09.2020