Страница 1 из 1

Linux route permisions

Добавлено: 2013-03-13 14:21:29
vadim64
Доброго дня, форумчане!
Как позволить некой группе добавлять маршруты в таблицу маршрутизации?

Re: Linux route permisions

Добавлено: 2013-03-14 1:18:47
rayder
например через sudo

Re: Linux route permisions

Добавлено: 2013-03-14 6:52:50
vadim64
)))
спасибо за ответ
в вопросе я не указал что добавлением маршрута занимается скрипт, запущенный под непривилегированным пользователем.
судо сразу приходит в голову. но получается что для работы этого решения нужно дописывать в судоерс группу и описывать команду. а в моём случае работает скрипт и приходится ещё и разрешать команду sudo ip без ввода пароля.
я думал что может есть какая то переменная в /proc, которая позволяет это настроить. думаю в этом направление потому что нашёл там переменную, разрешающую абы кому создавать tap интерфейсы

Re: Linux route permisions

Добавлено: 2013-03-24 14:19:24
MAGNet
Про sudo.
В /etc/sudoers добавить строку:

Код: Выделить всё

#User privilege specification
username localhost=NOPASSWD: /path/progname
теперь из-под любого пользователя progname можно запустить командой:

Код: Выделить всё

sudo -u username /path/progname
Если progname - это скрипт - значит все процессы из этого скрипта будут с правами su.

По сути.
Не вникал в вопросы модификации настроек ядра для определенных юзеров, что-нибудь поищу - самому интересно :)
У меня, например, добавлением роутов страдает только впн-клиент, но он запускается с от root-а.

зы
я бы пошел путем sudo

Re: Linux route permisions

Добавлено: 2013-03-24 15:56:33
MAGNet
Нагуглил следующее:
в любом случае, чтобы изменить таблицу маршрутизации ваша программа должна иметь права root, любым образом, можете попробовать поиграться с SUID-бит.
Подробно про SUID и другие права на файлы.
Поробовал следующее:

Код: Выделить всё

# скрипт должен принадлежать группе, в которую входит username, а владельцем должен являться root
# изменяем для username первичную группу на usergroup (можно использовать группу username по умолчанию)
sudo groupadd usergroup
sudo usermod -g usergroup username
# назначаем владельца и группу для скрипта
sudo chown root:usergroup /path/progname
# выставляем бит suid и заменяет обычные права на 750 (rwxr-x---) 
sudo chmod 4750 /path/progname
# запускаем из-под username(!)
/path/progname
Тупо убил время - не работает!

Ещё погуглил и выяснил что:
- Создаю скрипт, делаю его принадлежащим root и ставлю бит SUID. Пользователь запускает его, а он не выполняет свою задачу - недостаточно прав.
- На скрипты SUID не работает. Только на бинарные файлы.
- А может скомпилить бинарник, который сможет запускать скрипт путь к которому передан как параметр?
- Так бинарник такой уже есть - sudo называется. Осталось прочитать man sudoers.
Короче - вернулись всё к тому, с чего начали :)
Желаю удачи!

Re: Linux route permisions

Добавлено: 2013-03-25 7:40:46
vadim64
))))
спасибо за внимание

Re: Linux route permisions

Добавлено: 2013-03-26 12:34:30
MAGNet
..с булочкой ;)

Re: Linux route permisions

Добавлено: 2013-03-26 13:03:50
vadim64
на всякий случай оставляю ссылку для раскурки деталей происходящего _http://www.linuxjournal.com/article/7356

Re: Linux route permisions

Добавлено: 2013-03-31 21:12:46
MAGNet
Ха! Выпустил из виду одну весчь!
Ключик для запуска bash -p (privileged) - сценарий запускается как "suid". И ещё на всякий добавить setuid(0).
Вот типа так попробовать:

Код: Выделить всё

#!/bin/bash -p 
setuid(0);
Если не прокатит, то можно запускать через:

Код: Выделить всё

/bin/bash -p /progdir/progname
..но сам не пробовал, если честно. Уже лень :smile: