LINUX.ORG.RU

sudo в скрипте

 , ,


2

3

меняю яркость с помощью скрипта brightness.sh найденного в просторах интернета

#!/bin/bash
var1=`setpci -s 00:02.0 F4.B`
var1d=$((0x$var1))
case "$1" in
      up)
              #calculate new brightness
              var2=`echo "ibase=10; obase=16; a=($var1d+16);if (a<255) print a else print 255" | bc`
              echo "$0: increasing brightness from 0x$var1 to 0x$var2"
              setpci -s 00:02.0 F4.B=$var2
              ;;
      down)
              #calculate new brightness
              var2=`echo "ibase=10; obase=16; a=($var1d-16);if (a>5) print a else print 5" | bc`
              echo "$0: decreasing brightness from 0x$var1 to 0x$var2"
              setpci -s 00:02.0 F4.B=$var2
              ;;
      set)
              #n.b. this does allow "set 0" i.e. backlight off
              echo "$0: setting brightness to 0x$2"
              setpci -s 00:02.0 F4.B=$2
              ;;
      get)
              echo "$0: current brightness is 0x$var1"
              ;;
      toggle)
              if [ $var1d -eq 0 ] ; then
                      echo "toggling up"
                      setpci -s 00:02.0 F4.B=FF
              else
                      echo "toggling down"
                      setpci -s 00:02.0 F4.B=0
              fi
              ;;
      *)
              echo "usage: $0 {up|down|set <val>|get|toggle}"
              ;;
esac
exit 0
нужно повесить его на шорткат, а для этого нужно чтобы он исполнялся от имени любого пользователя.
chmod 777 /usr/bin/brightness.sh
+
USERNAME ALL=/usr/bin/brightness.sh
USERNAME ALL=(ALL) NOPASSWD:/usr/bin/brightness.sh
in /etc/sudoers не помогло.

PS. это костыль для GMA 3600 в openSUSE

USERNAME? Что это? root же. Ты же должен указать что без ввода пароля от ROOTa. Или как-то так - не помню точно уже.

Suntechnic ★★★★★
()
Последнее исправление: Suntechnic (всего исправлений: 1)

in /etc/sudoers не помогло.

формат

кто_запускает_sudo имя_хоста=(от_кого_должно_работать) NOPASSWD: команда
drBatty ★★
()

setpci в sudoers засунь.

anonymous
()
Ответ на: комментарий от bvn13

NOPASSWORD

s/OR// же!

а так всё верно.

И да, юзай visudo, оно синтаксис проверит (редактор настраивается).

drBatty ★★
()

man xbacklight

Deleted
()

всем спасибо за помощь

in /etc/sudoers

USERNAME ALL=(root) NOPASSWD: /usr/bin/brightness.sh
проверим командой
sudo brightness.sh up
должно сработать без ввода пароля.

setpci в sudoers не добавляем, в самом скрипте sudo дописывать не нужно. Добавляем комбинацию клавиш

Команда: sudo brightness.sh up
Комбинация: <Super>F6
не забываем про уменьшение яркости
Команда: sudo brightness.sh down
Комбинация: <Super>F5
и выключение монитора
Команда: sudo brightness.sh toggle
Комбинация: <Super>F7

lucky_guy ★★★
() автор топика

chmod 777 /usr/bin/brightness.sh

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

router ★★★★★
()
Ответ на: всем спасибо за помощь от lucky_guy

Спасибо огромное. Когда-то давно катал свой велосипед с setpci, но не допер, как заставить работать без пароля. Поэтому жил до сих пор на макс яркости.

bvn13 ★★★★★
()
Ответ на: комментарий от lucky_guy

755 подойдет?

0700 root:root ставь. Этих прав достаточно.

drBatty ★★
()
22 февраля 2014 г.

Думаю, нет смысла создавать новую тему, но я провел все манипуляции, которые тут описаны и в итоге при вызове скрипта всё-равно просит пароль, если просто добавить setpci в sudoers, то пишет, что какой-то там файл в /sys не имеет доступа на запись. Как быть?

Pyzia ★★★★★
()
Ответ на: комментарий от Pyzia

т.е. вы создали скрипт, поменяли ему права, в /etc/sudoers добавили строчку

Pyzia ALL=(root) NOPASSWD: /usr/bin/brightness.sh
где псевдоним и путь к файлу совпадает с вашими и все равно запрашивает пароль?

lucky_guy ★★★
() автор топика
Ответ на: комментарий от lucky_guy

Я создал такую запись и для скрипта и для самого setpci, но всёравно, sudo просит пароль, без sudo пишет, что доступа на запись в /sys/bus/pci/.../config нету:

pcilib: cannot open /sys/bus..

Pyzia ★★★★★
()

А в opensuse consolehelper есть?
И да, пропиши полный путь к setpci в скрипте от греха подальше.

arson ★★★★★
()

сколько повторять-то можно? Строчка:

A B = (C) NOPASSWD:D E
  • A — кто может ЭТО делать
  • B — хостнэйм откуда ЭТО можно делать
  • C — от имени кого нужно ЭТО делать (часто root, хотя не обязательно)
  • D — ЭТО имя файла с путём
  • E — параметры ЭТОГО
emulek
()
Ответ на: комментарий от Pyzia

Я создал такую запись и для скрипта и для самого setpci, но всёравно, sudo просит пароль

значит НЕ ТАКУЮ. Проверяй. Будь внимательным. Ты где-то забыл запятую или ещё что-то.

И да, sudo обычно в лог пишет.

emulek
()
Ответ на: комментарий от lucky_guy

уже вставил костыль в виде дополнительного юнита systemd, который после загрузки графики выставляет права на запись для обычного юзера в /sys и только потом выкручивает подсветку.

Pyzia ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.