The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"FreeBSD права SUID"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Система / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"FreeBSD права SUID"  +/
Сообщение от mg (??) on 07-Окт-10, 12:35 
Создал простой скрипт

------------------- test.sh --------
#!/bin/sh


whoami
echo test > /root/ok.test
------------------------------------

Выставил SUID
chmod 4755 ./test.sh

После выполнения под простым пользователем test получаю

test
./test.sh: cannot create /root/ok.test: Permission denied

Что я делаю не так?

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "FreeBSD права SUID"  +/
Сообщение от mg (??) on 07-Окт-10, 13:02 
Решил проблему написав С - програмку

Получается что во FreeBSD игнорируется SUID выставленный на скрипты или имеет какие-то ограничения.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "FreeBSD права SUID"  +/
Сообщение от Ygor (ok) on 07-Окт-10, 18:31 
> Решил проблему написав С - програмку
> Получается что во FreeBSD игнорируется SUID выставленный на скрипты или имеет какие-то
> ограничения.

В линуксе на скока я помню, тоже не получиться выставить суид на скрипт.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "FreeBSD права SUID"  +/
Сообщение от Andrey Mitrofanov on 08-Окт-10, 10:23 
>> Решил проблему написав С - програмку
>> Получается что во FreeBSD игнорируется SUID выставленный на скрипты или имеет какие-то
>> ограничения.
> В линуксе на скока я помню, тоже не получиться выставить суид на
> скрипт.

Ну, да. В интернетах много где пишут - в фак-ах/ман-ах...

И если просто _немного подумать, что скрипт исполняет _на_самом_деле-то_ exe-шник вроде /bin/bash или perl, тот экзешник "просто" читатет скрипт как данные, как текст -- это не исполненеие бинарника ядром, которе и "смотрит" на SUID/SGID биты. А сам интерпретатор не суид-ный ни разу и не болжет быть... Вот.

_ http://google.com/search?hl=ru&q=suid+%D1%81%...

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "FreeBSD права SUID"  +/
Сообщение от Andrey Mitrofanov on 08-Окт-10, 10:29 
> SUID/SGID биты. А сам интерпретатор не суид-ный ни разу и не
> болжет быть... Вот.

Упс. %)
http://www.opennet.dev/base/sec/suid_script.txt.html

Date: Fri, 12 Apr 2002 21:43:30 +0400
From: Alex Semenyaka <Alex.Semenyaka@f640.n461.z2.fidonet.org>
Subject: Пояснение почему под FreeBSD не может быть suid скриптов.

> suid+%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82+site:opennet.ru

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "FreeBSD права SUID"  +/
Сообщение от mg (??) on 08-Окт-10, 18:08 
>> SUID/SGID биты. А сам интерпретатор не суид-ный ни разу и не
>> болжет быть... Вот.
> Упс. %)
> http://www.opennet.dev/base/sec/suid_script.txt.html
> Date: Fri, 12 Apr 2002 21:43:30 +0400
> From: Alex Semenyaka <Alex.Semenyaka@f640.n461.z2.fidonet.org>
> Subject: Пояснение почему под FreeBSD не может быть suid скриптов.
>> suid+%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82+site:opennet.ru

Согласен полностью. Но вызов самого скрипта происходит через шел. Шел открывает файл и читает заголовок, понимая что это скрипт. Затем читает первую строчку - интерпретатор который требуется применить и фактический запускает указанный интерпретатор (собственно опять шел) передавая ему на вход уже ввиде параметра файл скрипта. Верно?

Предположим теперь, что вместо скрипта оказался бинарник. Тогда читая его заголовок шел должен понять, что это исполняемый файл, и начать его загрузку в память. При этом "система" как-то должна учесть что выставлен SUID. Но кто именно это должен учесть в случае бинарника? Получается что это делает ядро уже после загрузки в память, оно смотрит на атрибуты файла.

Я к чему клоню, так или иначе всё что запускается - запускается через оболочку шел. Но в одном случае это запускается с учётом SUID, а в другом нет. Чисто теоретически, шел мог бы учесть SUID входного файла и запуститься с нужными правами независимо от того скрипт это или бинарник.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "FreeBSD права SUID"  +/
Сообщение от alexs (??) on 09-Окт-10, 08:25 
>[оверквотинг удален]
> должен понять, что это исполняемый файл, и начать его загрузку в
> память. При этом "система" как-то должна учесть что выставлен SUID. Но
> кто именно это должен учесть в случае бинарника? Получается что это
> делает ядро уже после загрузки в память, оно смотрит на атрибуты
> файла.
> Я к чему клоню, так или иначе всё что запускается - запускается
> через оболочку шел. Но в одном случае это запускается с учётом
> SUID, а в другом нет. Чисто теоретически, шел мог бы учесть
> SUID входного файла и запуститься с нужными правами независимо от того
> скрипт это или бинарник.

Рекомендую почитать что-нибудь по системе, чтобы выйти из области неверных предположений и фантазий на тему. У шелла нет прав дать или не дать SUID (хоть он 10 раз будет пытаться это "учесть") - раз, система всегда пускает только бинарники, скриптов для нее нет - два. Шелл передает команду запуска с указанием запускаемого файла через соответствующий системный вызов, а не "грузит в память", не хватало еще. Вода мокрая. Небо голубое. Книги рулез.

Суидный скрипт был бы возможен, если бы 1) сам интепретатор имел сам SUID-bit, 2) и при наличии этого бита на и на скрипте тоже выполняо бы его без сброса привилегий - а при отсутствии, соответственно, привилегии сначала сбрасывал бы. Но эта схема неуниверсальна - нужно каждый интерпретатор учить такому поведению. И дыр при ее реализации столько, что куда дешевле отказаться от сомнительной радости SUID-скриптов, чем пытаться их залатать. Так что на нынешний момент такой подход считается bad practice.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "FreeBSD права SUID"  +/
Сообщение от mg (??) on 11-Окт-10, 13:03 
> Рекомендую почитать что-нибудь по системе, чтобы выйти из области неверных предположений
> и фантазий на тему. У шелла нет прав дать или не
> дать SUID (хоть он 10 раз будет пытаться это "учесть") -
> раз, система всегда пускает только бинарники, скриптов для нее нет -
> два. Шелл передает команду запуска с указанием запускаемого файла через соответствующий
> системный вызов, а не "грузит в память", не хватало еще. Вода
> мокрая. Небо голубое. Книги рулез.

Ну по-сути вы ведь к словам прицепились. В конечном счёте сам шел и создаст процесс (пусть средствами ядра, но инициирует именно он - вежливо попросив ядро создать новый процесс). На счёт скриптов я всё же вас не понял, я писал что шел анализирует заголовок полученного файла и что если понимает что это скрипт, то запускает сам себя с передачей на вход этого скрипта(да собственно сам себя он запускает даже на бинарниках). Вы же пишите что "для системы нет скриптов" - ну и причём тут то, что писал я?

По поводу что шел не может запускать с произвольными правами - это верно, я с этим и не спорил, только предположил что шел мог бы быть более "особенным" чем обычные программы - например уметь наследовать бит SUID от скрипта. А выставить шелу SUID - по-моему это означает дать всем пользователям данного шела права root.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "Жестокий мир, да."  +/
Сообщение от Andrey Mitrofanov on 11-Окт-10, 16:30 
> Согласен полностью.

Или "полностью", или "но", да? B)

>Но вызов самого скрипта происходит через шел. Шел открывает файл
> и читает заголовок, понимая что это скрипт. Затем читает первую строчку
> - интерпретатор который требуется применить и фактический запускает указанный интерпретатор

Шелу сказали выполнить, он сказал ядру - выпоолнить, _ядро_ посмотрело заголовок и...

_бинарнику_ с SUID-ом -- дало, чего положено,а

_скрипту_ -- с SUID-ом -- не дало. Потому что ядро-то _фактически выполняет какой-нибудь /bin/sh или /bin/perl (с имеренм скрипта -> параметром~~), а на _этих бирарниках никакого SUID-а нет (и не будет никогда).

Я даже ещё раз повторю: нет и небудет никогда SUID-ных скриптов.
Проще и правильнее "настроить наконец sudo"(тм).

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру