Форум русскоязычного сообщества Ubuntu


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

Автор Тема: Нужно чтобы скрипт выполнялся от root  (Прочитано 1180 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн qwerty33

  • Автор темы
  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Нужно чтобы скрипт выполнялся от root
« : 18 Сентябрь 2008, 20:42:34 »
Доброй ночи. Проблема в следующем - повесил на xbindkeys скрипт, но необходимо, чтобы он выполнялся от root. Как это возможно реализовать? Запуск xbindkeys при старте системы от имени рута не помогает.
Скрипт записывает циферки в /proc/acpi/video/VGA/LCD/brightness а это позволительно только руту, даже судо нельзя писать в этот файл. Пробывал поменять права на файл - сбрасываются после перезагрузки. Помогите, пожалуйста. И еще, желательно, чтобы пароль он не спрашивал

tartan

  • Гость
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #1 : 18 Сентябрь 2008, 20:51:54 »
Я такие (в смысле, с такими требованиями к выполнению) вещи пишу в /etc/rc.local, попробуйте. Если не ошибаюсь, всё, что запускается оттуда, запускается именно от рута. Не факт, что это правильно, но оно работает. )

Единственный момент - некоторые скрипты, если в них накосячить, могут в этом случае помешать загрузке иксов (живой пример - inadyn, запущенный без опции --background), так что аккуратно.
« Последнее редактирование: 18 Сентябрь 2008, 21:08:33 от tartan »

Оффлайн Alsvartr

  • Активист
  • *
  • Сообщений: 779
  • The secret of the secret
    • Просмотр профиля
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #2 : 19 Сентябрь 2008, 01:17:37 »
Я такие (в смысле, с такими требованиями к выполнению) вещи пишу в /etc/rc.local, попробуйте.
Как я понимаю, ему нужно переключаться по хоткеям, а не вовремя загрузки.

Это можно организовать с помощью файла /etc/sudoers - дать своему пользователю право без пароля выполнять ваш скрипт. Примерно так:
username ALL=(ALL) NOPASSWD:/usr/bin/filename.shТочно не помню синтаксиса, советую к манам обратиться, но так должно работать. Также необходимо помнить о предосторожностях при работе с файлом sudoers.

Ну и скрипт ваш теперь можно выполнять с sudo и без пароля.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #3 : 19 Сентябрь 2008, 06:04:22 »
Правильное решение - поменять прова на /proc/acpi/video/VGA/LCD/brightness
И вписать команду смены прав в rc.local, чтобы при перезагрузке не сбрасывались. О чем и хотел поведать tartan.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

tartan

  • Гость
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #4 : 19 Сентябрь 2008, 07:20:55 »
Нет, я хотел вовсе не команду на смену прав туда вписать, не надо меня переоценивать. )) А вообще да, круто.
« Последнее редактирование: 19 Сентябрь 2008, 07:24:56 от tartan »

Оффлайн qwerty33

  • Автор темы
  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #5 : 19 Сентябрь 2008, 08:31:35 »
Спасибо всем. Долго мучился, в итоге при помощи visudo вхерачил следующую строчку в /etc/sudoers
nik ALL=NOPASSWD: /usr/bin/nb.sh
Теперь при запросе sudo /usr/bin/nb.sh выполняет без пароля
Ещё раз огромное всем спасибо

Оффлайн Alsvartr

  • Активист
  • *
  • Сообщений: 779
  • The secret of the secret
    • Просмотр профиля
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #6 : 19 Сентябрь 2008, 13:37:11 »
Правильное решение - поменять прова на /proc/acpi/video/VGA/LCD/brightness
И вписать команду смены прав в rc.local, чтобы при перезагрузке не сбрасывались.
Это не правильное решение, а костыль.

tartan

  • Гость
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #7 : 19 Сентябрь 2008, 14:12:59 »
Смена прав или экзерсисы с rc.local?

Просто я туда несколько скриптов на сервере зафигачил, лучше убрать?

Оффлайн Alsvartr

  • Активист
  • *
  • Сообщений: 779
  • The secret of the secret
    • Просмотр профиля
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #8 : 19 Сентябрь 2008, 18:30:57 »
Смена прав или экзерсисы с rc.local?

Просто я туда несколько скриптов на сервере зафигачил, лучше убрать?
Смена прав в варианте, предложенном Lion-Simba :) В самом rc.local нет ничего плохого - у меня у самого он почти всегда задействован.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #9 : 19 Сентябрь 2008, 18:49:29 »
Правильное решение - поменять прова на /proc/acpi/video/VGA/LCD/brightness
И вписать команду смены прав в rc.local, чтобы при перезагрузке не сбрасывались.
Это не правильное решение, а костыль.
Чем мой костыль хуже вашего? :) Ваш костыль поднимает привилегии _всего скрипта_, которому по сути нужны права на запись только в один из системных файлов. Теперь, допустим, что у этого скрипта будут стоять права типа: 766. Тогда любой пользователь системы аккуратно добавляет в этот файл свою команду и, после его очередного запуска владельцем, получает права root.

Совсем правильное решение:
1) Создать в системе группу с именем LCDbrightnessAdmins
2) Создать правило в udev (или где там создается файл /proc/acpi/video/VGA/LCD/brightness), чтобы группа этого файла была LCDbrightnessAdmins, и права вроде 660.
3) Добавить себя в эту группу.
4) Регулировать яркость без sudo.

Имя группы выбрано произвольно с точки зрения наглядности. :)
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн Alsvartr

  • Активист
  • *
  • Сообщений: 779
  • The secret of the secret
    • Просмотр профиля
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #10 : 19 Сентябрь 2008, 19:28:07 »
Чем мой костыль хуже вашего? :)
Тем, что мое решение - не костыль, а системный механизм регулирования прав доступа.
Цитировать
Ваш костыль поднимает привилегии _всего скрипта_, которому по сути нужны права на запись только в один из системных файлов. Теперь, допустим, что у этого скрипта будут стоять права типа: 766. Тогда любой пользователь системы аккуратно добавляет в этот файл свою команду и, после его очередного запуска владельцем, получает права root.
А не надо давать левых прав скрипту.
Цитировать
Совсем правильное решение:
1) Создать в системе группу с именем LCDbrightnessAdmins
2) Создать правило в udev (или где там создается файл /proc/acpi/video/VGA/LCD/brightness), чтобы группа этого файла была LCDbrightnessAdmins, и права вроде 660.
3) Добавить себя в эту группу.
4) Регулировать яркость без sudo.
O_O

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #11 : 19 Сентябрь 2008, 20:43:18 »
Чем мой костыль хуже вашего? :)
Тем, что мое решение - не костыль, а системный механизм регулирования прав доступа.
Корректировка прав доступа к системным файлам - не системный механизм регулирования прав доступа?

Цитировать
Ваш костыль поднимает привилегии _всего скрипта_, которому по сути нужны права на запись только в один из системных файлов. Теперь, допустим, что у этого скрипта будут стоять права типа: 766. Тогда любой пользователь системы аккуратно добавляет в этот файл свою команду и, после его очередного запуска владельцем, получает права root.
А не надо давать левых прав скрипту.
А не надо давать привилегий рута левым скриптам. :)
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

tartan

  • Гость
Re: Нужно чтобы скрипт выполнялся от root
« Ответ #12 : 19 Сентябрь 2008, 22:15:46 »
Для надёжности скрипту можно прописать 700, если не ошибаюсь.

 

Страница сгенерирована за 0.066 секунд. Запросов: 22.