Я пишу файл bash таким образом:
#!/bin/bash
echo 1000 |sudo tee /sys/class/backlight/intel_backlight/brightness
(который изменяет яркость экрана)
Мне нужно, чтобы он запускался при запуске, но потому, что для этого требуется пароль sudo I необходимо ввести пароль вручную. Как я могу изменить этот код, чтобы не требовать пароли sudo во время выполнения?
Для этой конкретной проблемы вы, вероятно, могли бы просто вставить echo 1000 > /sys/class/backlight/intel_backlight/brightness
в /etc/rc.local
(перед линией exit
). Это запустит его при загрузке с правами root до загрузки рабочего стола.
Но в целом (как мне запустить скрипт от имени root?) Все это немного наклейка ...
Вы можете просто запустить sudo ./myscript
(отредактировав sudoers
), но простое разрешение ./myscript
запускаться без пароля означало бы, что вы (или программа, работающая как вы) можете редактировать этот файл, и вдруг вы сможете запустить [ 1113] что угодно как root без прохождения надлежащих процедур. Uber-бедная безопасность.
Вместо этого я бы предложил:
sudo mv myscript /sbin/myscript
sudo chown root:root /sbin/myscript
sudo chmod 700 /sbin/myscript
Команды ch*
теперь означают, что только root может читать / запускать скрипт. Вставить его в /sbin/
просто случайно - вам не нужно этого делать.
Теперь вам нужно отредактировать /etc/sudoers
. В вики есть хороший пример , и вам просто нужно заменить команды выключения на путь вашего скрипта (используйте полный, абсолютный путь). NOPASSWD
является ключевым словом здесь. Это позволяет вам запускать что-то как sudo без пароля. Тогда вы можете просто добавить sudo /sbin/myscript
в свой стартовый jibberyboo, и вы летите.
Я просто делаю снимок в темноте, но пытаюсь изменить права доступа к файлу
chmod 777 [путь к файлу]
blockquote>