Как я добавляю команды sudo к сочетанию клавиш?

Я плохо знаком с Linux, поэтому терпите меня. Я запускаю Ubuntu 16.04 на ноутбуке Vaio Sony, который показывает подсветку клавиатуры. Я могу ввести эту команду в терминал, поместив "0" вместо *value* выключить подсветку, и "2" для включения его.

sudo su -c "echo *value* > /sys/devices/platform/sony-laptop/kbd_backlight"

Когда я перешел к приложению настроек, чтобы создать пользовательское сочетание клавиш и связать его с простой ctrl привязкой клавиш, оно не работает. Любая справка была бы очень ценивший.

6
задан 6 September 2016 в 19:15

1 ответ

У Вас есть три опции. Выберите того из них, которых Вы любите лучше всего:

  • Установите gksu пакет, если не сделанный уже и использование gksudo получить диалоговое всплывающее окно ввода пароля GUI вместо того, чтобы быть спрошенным относительно терминальной консоли как sudo делает (который не присутствует, когда Вы выполняете его как сочетание клавиш, и поэтому не работает).

    sudo apt install gksu
    

    Команда, которую необходимо связать с ярлыком, была бы этим:

    gksudo -- bash -c 'echo VALUE > /sys/devices/platform/sony-laptop/kbd_backlight'
    
  • Использовать pkexec вместо sudo. Это работает подобное gksudo и должен быть предварительно установлен, но это только работает на терминальные команды, если Вы хотели запустить приложение GUI как корень с ним, этому была нужна специальная конфигурация. Но для Вашей команды это было бы достаточно.

    Команда, которую необходимо связать с ярлыком, была бы этим:

    pkexec bash -c 'echo VALUE > /sys/devices/platform/sony-laptop/kbd_backlight'
    
  • Запишите короткий сценарий, чтобы изменить яркость и затем настроить sudo NOPASSWD опция так, чтобы можно было выполнить его как корень, не попросившись пароля.

    Актуальный вопрос: Как я выполняю определенные команды sudo без пароля?

    Вот то, что необходимо сделать в конкретном случае:

    1. Запишите файл сценария, который содержит все команды, необходимые для достижения того, что Вы хотите, который будет затем выполнен как корень:

      #!/bin/bash
      if test "$(id -u)" -ne 0 ; then
          sudo "$0" "$1"
          exit $?
      fi
      
      if test "$1" -gt 0 ; then
          echo "$1" > /sys/devices/platform/sony-laptop/kbd_backlight
      else
          echo "Invalid argument $1"
          exit 1
      fi
      

      Сценарий выше взятий целое число, больше, чем нуль как параметр командной строки и записи, это к подсветке управляет файлом после выполнения основной проверки работоспособности. Вы могли также изменить проверку, чтобы только позволить значения 0 и 2 если Вы хотите, но я оставлю это до Вас.

      Кроме того, это проверяет как, какого пользователя это выполняет и пытается поднять свои полномочия базироваться путем выполнения себя с sudo при необходимости. Это означает, что можно даже опустить sudo при выполнении его.

    2. Сохраните этот сценарий как /usr/local/bin/set-kbd-backlight (можно выбрать другое имя файла, но каталог должен остаться таким же; обратите внимание, что запись в это местоположение требует sudo)

    3. Удостоверьтесь, что Ваш файл сценария имеет корректное владение и настройки разрешения. Вы собираетесь быть способными запустить этот скрипт как корень без пароля, таким образом, мы должны удостовериться, что он может быть выполнен всеми, но не отредактирован некорневыми пользователями!

      sudo chown root:root /usr/local/bin/set-kbd-backlight
      sudo chmod 755 /usr/local/bin/set-kbd-backlight
      
    4. Теперь можно настроить sudo позволить запускать этот скрипт как корень без пароля:

      Отредактируйте Ваш sudo конфигурационный файл /etc/sudoers путем выполнения команды ниже (не любой другой путь!):

      sudo visudo
      

      Теперь добавьте следующую строку прямо перед строкой, содержащей includedir /etc/sudoers.d около конца файла, заменяя USERNAME с корректным именем пользователя, которое Вы предоставите выполнению без пароля как корню:

      USERNAME ALL=(root) NOPASSWD: /usr/local/bin/set-kbd-backlight
      

      Выйдите visudo редактор путем нажатия Ctrl+X, затем Y (или независимо от того, что ключ представляет "Да" в локали) и затем Входит.

    5. Проверьте, что это работает первым выполнением sudo -k для отмены кэшируемого пароля на всякий случай Вы ввели его в течение прошлых 15 минут на текущей сессии оболочки. Это не нужно, чтобы сценарий работал, он должен только протестировать, настроили ли Вы NOPASSWD правильно.

      Затем выполните команды ниже для включения и выключения подсветки, без sudo. Вас нельзя требовать на Ваш пароль.

      set-kbd-backlight 0
      set-kbd-backlight 2
      
    6. Свяжите команды (set-kbd-backlight 0 выключить свет, set-kbd-backlight 2 включить его) к соответствующим сочетаниям клавиш.

4
ответ дан 23 November 2019 в 07:59

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

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