Здравствуйте, Alhim, Вы писали:
A>При попытке под обычным пользоватлем открывать файл порта выдаётся сообщение о недостатке прав. Как это можно обойти?
Например, поставить SUID на прогу, которой открываете и права владения на root'а
Здравствуйте, Alhim, Вы писали:
A>При попытке под обычным пользоватлем открывать файл порта выдаётся сообщение о недостатке прав. Как это можно обойти?
права на нем поменять... например дать ему группу termuser и всех, кому надо в эту группу... а suid не есть хорошо.
Здравствуйте, aka50, Вы писали:
A>>При попытке под обычным пользоватлем открывать файл порта выдаётся сообщение о недостатке прав. Как это можно обойти? A>права на нем поменять... например дать ему группу termuser и всех, кому надо в эту группу... а suid не есть хорошо.
Понятно, что не хорошо, но часто так и делают..
A>>... а suid не есть хорошо. B>Понятно, что не хорошо, A sachem togda predlogat'
Aaaaa, tak eto s suid prikol byl?
B>..но часто так и делают..
Esli napered ne snajut, kakie resursy programma ispol'suet.
Sdes' ved' rech idet o konkretnom "device"
Здравствуйте, raskolnikov, Вы писали:
A>>>... а suid не есть хорошо. B>>Понятно, что не хорошо, R> A sachem togda predlogat'
один из рабочих и часто используемых вариантов
R>Aaaaa, tak eto s suid prikol byl?
ну, можно и так сказать
R>Kstati luchsche vmesto suid-bita paket "sudo" ispol'sovat'.
Здравствуйте, <Аноним>, Вы писали:
А>А как эту проблему можно обойти под MacOS X для application package? С sudo или su из командной строки это, само-собой, не запускается.
Почему "само-собой не запускается"?
aka50 ведь сказал, выставляете правильные права на файл девайса и вперёд.
Нет ничего невозможного..
Re[3]: Как не root'у пользоваться /dev/ttyS0
От:
Аноним
Дата:
18.06.04 10:52
Оценка:
Здравствуйте, butcher, Вы писали:
B>Почему "само-собой не запускается"?
Потому что приложение представляет собой директорию, в которой хранятся ресурсы. И в консоли в эту директорию можно только войти, и я не знаю как сказать ей выполнится.
B>aka50 ведь сказал, выставляете правильные права на файл девайса и вперёд.
А это решение не подходит т.к. требует логина под root-ом (или пользователем который может поменять права), но тогда и программа под этим пользователем отработает без проблем...
Здравствуйте, butcher, Вы писали:
B>Здравствуйте, aka50, Вы писали:
A>>к стати о sudo. Я тут наткнулся на такую весч, что sudo не хочет выполняться из под рута:
A>>
A>>station# sudo -u someuser test
A>>You are already root, you don't need to use sudo.
A>>
A>>вот такая петрушка. Можно конечно в исходники слазить, но вдруг есть решение A>>(мое решение, просто тупая прога на 10 строчек специально для рута)
B>Попробуйте так: B>
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, butcher, Вы писали:
B>>Почему "само-собой не запускается"? А>Потому что приложение представляет собой директорию, в которой хранятся ресурсы. И в консоли в эту директорию можно только войти, и я не знаю как сказать ей выполнится.
B>>aka50 ведь сказал, выставляете правильные права на файл девайса и вперёд. А>А это решение не подходит т.к. требует логина под root-ом (или пользователем который может поменять права), но тогда и программа под этим пользователем отработает без проблем...
в смысле под рутом? под рутом надо сделать 2 комнды и добавить юзера в группу termuser (ну и создать ее если еще нету такой)
Здравствуйте, aka50, Вы писали:
A>после этого все пользователи из группы termuser могут делать че угодно с этим девайсом
Все что в /dev вотчина root-a и кому попало права на эти файлы дать нельзя. А можно, я думаю, сделать следующее: сделать неболшую программу, которая будет открывать нужный файл в /dev, а в программе сделать AuthorizationExecuteWithPrivileges на ту программу с правами root-а и через получившуюся трубу общаться с девайсом.
Здравствуйте, Alexey_Mel, Вы писали:
A_M>Все что в /dev вотчина root-a и кому попало права на эти файлы дать нельзя. А можно, я думаю, сделать следующее: сделать неболшую программу, которая будет открывать нужный файл в /dev, а в программе сделать AuthorizationExecuteWithPrivileges на ту программу с правами root-а и через получившуюся трубу общаться с девайсом.
Помоему, это очень сильно смахивает на SUID, или я не так понял?
Здравствуйте, Alexey_Mel, Вы писали:
A_M>Здравствуйте, butcher, Вы писали:
A_M>Все что в /dev вотчина root-a и кому попало права на эти файлы дать нельзя. А можно, я думаю, сделать следующее: сделать неболшую программу, которая будет открывать нужный файл в /dev, а в программе сделать AuthorizationExecuteWithPrivileges на ту программу с правами root-а и через получившуюся трубу общаться с девайсом.
Народ, ну почитайте что-ли по юниксовым правам чтонить? !!! Какие права? Какие "кому попало"? Зачем же тогда их придумывали? Видно непонимание юниксовых прав... в корне.
Итого:
Если у файла есть владелец, например root, то только он может чето-то сделать с этим файлом (например поменять права, ну и еще кто имеет права записи в директорию могут его удалить, переименовать).
Если юзер не является владельцем, но является членом группы, имеющей доступ к файлу, то он сможет выполнять разрешенные действия с этим файлом (rwx).
Таким образом команда: chown root:termuser /dev/file делает так, что все кто входит в группу termuser имеют rw доступ к файлу (после комманды chmod g+rw). Но ни перименовать, ни удалить (директория принадлежить руту и права на ней dr-xr-xr-x) не могут.
B>>Помоему, это очень сильно смахивает на SUID, или я не так понял?
A_M>Ну, в общем, похоже. Только не из терминала а полностью программно.
A_M>Runs an executable tool with root privileges.
skip
A_M>);
блин... лисапед... ну есть же sudo! и зачем такой изврат. (особенно прикольно посмотреть как ты будешь ioctl() транслировать). Да и баги в программе возможны... и как будешь от них защищаться? Мда...
Далее... не понял что означает "Только не из терминала а полностью программно"? Это как?
<skip>
A>блин... лисапед... ну есть же sudo! и зачем такой изврат. (особенно прикольно посмотреть как ты будешь ioctl() транслировать). Да и баги в программе возможны... и как будешь от них защищаться? Мда...
Ну дык может подскажешь как MacOS X application package под sudo запустить? А ioctl(...) в той же трубе может быть. Да и программы без багов писать можно и нужно.
Здравствуйте, Alexey_Mel, Вы писали:
A_M>Здравствуйте, aka50, Вы писали:
A_M><skip>
A>>блин... лисапед... ну есть же sudo! и зачем такой изврат. (особенно прикольно посмотреть как ты будешь ioctl() транслировать). Да и баги в программе возможны... и как будешь от них защищаться? Мда...
A_M>Ну дык может подскажешь как MacOS X application package под sudo запустить? А ioctl(...) в той же трубе может быть. Да и программы без багов писать можно и нужно.
зачем тебе package под sudo пускать? Далее, я так подзреваю, всегда есть бинарный файл, который собсвенно делается exec(). Вот его и надо из под sudo запускать. А то что из под гуи это выглядит, как запуск "директории"... ну значить надо читать и разбираться... но правами это решается на раз.. Если не пнятно ... значит полохо объяснял .
A_M>А ioctl(...) в той же трубе может быть. Да и программы без багов писать можно и нужно.
ioctl()? Ну ioctl трубы будет... ioctl девайса не будет ...
Вывод: читам google и много думаем. Темы:
unix permissions
ioctl devices internals
<skip>
A>зачем тебе package под sudo пускать? Далее, я так подзреваю, всегда есть бинарный файл, который собсвенно делается exec(). Вот его и надо из под sudo запускать. А то что из под гуи это выглядит, как запуск "директории"... ну значить надо читать и разбираться... но правами это решается на раз.. Если не пнятно ... значит полохо объяснял .
блин лисапед...((с) ваше) тебеж писали "А это решение не подходит т.к. требует логина под root-ом (или пользователем который может поменять права), но тогда и программа под этим пользователем отработает без проблем..." Я понял, что задача такова что бы под рутом не грузиться вообще, тогда максимум возможен ввод пароля root-а, как для sudo. Но sudo не делать "Потому что приложение представляет собой директорию, в которой хранятся ресурсы. И в консоли в эту директорию можно только войти, и я не знаю как сказать ей выполнится".
Конечно можно перед запуском той проги попытаться под sudo выполнить скрипт настройки прав на нужные файлы... тоже решение.
A_M>>А ioctl(...) в той же трубе может быть. Да и программы без багов писать можно и нужно. A>ioctl()? Ну ioctl трубы будет... ioctl девайса не будет ...
На счет трубы ты сам, кажется, не понял... В прогу-трубу предать интерфейс устройства (en0 допустим), а она уже откроет файл, забиндит интерфейс, настроит и т.д. Она же будет получать запросы и пихать в девайс, получать ответы и отсылать назад. Если не пнятно ... значит полохо объяснял ((с) ваше)