Linux route permisions

Есть и такой ОС.

Модератор: weec

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Linux route permisions

Непрочитанное сообщение vadim64 » 2013-03-13 14:21:29

Доброго дня, форумчане!
Как позволить некой группе добавлять маршруты в таблицу маршрутизации?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

Re: Linux route permisions

Непрочитанное сообщение rayder » 2013-03-14 1:18:47

например через sudo
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Linux route permisions

Непрочитанное сообщение vadim64 » 2013-03-14 6:52:50

)))
спасибо за ответ
в вопросе я не указал что добавлением маршрута занимается скрипт, запущенный под непривилегированным пользователем.
судо сразу приходит в голову. но получается что для работы этого решения нужно дописывать в судоерс группу и описывать команду. а в моём случае работает скрипт и приходится ещё и разрешать команду sudo ip без ввода пароля.
я думал что может есть какая то переменная в /proc, которая позволяет это настроить. думаю в этом направление потому что нашёл там переменную, разрешающую абы кому создавать tap интерфейсы
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
MAGNet
ефрейтор
Сообщения: 65
Зарегистрирован: 2013-03-24 13:28:42
Откуда: Новосибирск

Re: Linux route permisions

Непрочитанное сообщение MAGNet » 2013-03-24 14:19:24

Про sudo.
В /etc/sudoers добавить строку:

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

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

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

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

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

зы
я бы пошел путем sudo
Не работает? Попробуйте выключить и снова включить

Аватара пользователя
MAGNet
ефрейтор
Сообщения: 65
Зарегистрирован: 2013-03-24 13:28:42
Откуда: Новосибирск

Re: Linux route permisions

Непрочитанное сообщение MAGNet » 2013-03-24 15:56:33

Нагуглил следующее:
в любом случае, чтобы изменить таблицу маршрутизации ваша программа должна иметь права 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.
Короче - вернулись всё к тому, с чего начали :)
Желаю удачи!
Не работает? Попробуйте выключить и снова включить

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Linux route permisions

Непрочитанное сообщение vadim64 » 2013-03-25 7:40:46

))))
спасибо за внимание
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
MAGNet
ефрейтор
Сообщения: 65
Зарегистрирован: 2013-03-24 13:28:42
Откуда: Новосибирск

Re: Linux route permisions

Непрочитанное сообщение MAGNet » 2013-03-26 12:34:30

..с булочкой ;)
Не работает? Попробуйте выключить и снова включить

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Linux route permisions

Непрочитанное сообщение vadim64 » 2013-03-26 13:03:50

на всякий случай оставляю ссылку для раскурки деталей происходящего _http://www.linuxjournal.com/article/7356
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
MAGNet
ефрейтор
Сообщения: 65
Зарегистрирован: 2013-03-24 13:28:42
Откуда: Новосибирск

Re: Linux route permisions

Непрочитанное сообщение MAGNet » 2013-03-31 21:12:46

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

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

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

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

/bin/bash -p /progdir/progname
..но сам не пробовал, если честно. Уже лень :smile:
Не работает? Попробуйте выключить и снова включить