Bash script and suid

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Bash script and suid

Сообщение Voice »

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

Вот собственно попытка реализации:

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

[user@foo foo] $ ll
total 8
drwxr-xr-x 2 root root 4096 2009-02-20 12:11 foo
-rwsr-sr-x 1 root root   32 2009-02-20 12:10 test
[user@foo foo] $ ll foo/
total 0
-rw-r--r-- 1 root root 0 2009-02-20 12:11 bar
[user@foo foo] $ cat test
#!/bin/bash

echo "foo" >> "$1"
[user@foo foo] $
[user@foo foo] $
[user@foo foo] $ ./test foo/bar
./test: line 3: foo/bar: Permission denied
[user@foo foo] $


Понимаю, что мое непонимание от непонимания/незнания чего-то, но вот чего... :unsure:
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Bash script and suid

Сообщение nesk »

возможно в ядре запрещены shell-скрипты с suid
Ваш скрипт - дает возможность выполнить практически любую команду от рута!
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Sleeping Daemon
Сообщения: 1450

Re: Bash script and suid

Сообщение Sleeping Daemon »

Voice писал(а):
20.02.2009 13:19
Здравствуйте.
Необходимо дописывать в один конфиг-файл, конфиг валяется в /etc и принадлежит руту. На баше это реализовать не получается, по не понятным причинам. Но на С сделал программку, которая делает то же, и все работает отлично. Может кто просветит почему баш-скрипт не работает как ожидается.

Вот собственно попытка реализации:

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

[user@foo foo] $ ll
total 8
drwxr-xr-x 2 root root 4096 2009-02-20 12:11 foo
-rwsr-sr-x 1 root root   32 2009-02-20 12:10 test
[user@foo foo] $ ll foo/
total 0
-rw-r--r-- 1 root root 0 2009-02-20 12:11 bar
[user@foo foo] $ cat test
#!/bin/bash

echo "foo" >> "$1"
[user@foo foo] $
[user@foo foo] $
[user@foo foo] $ ./test foo/bar
./test: line 3: foo/bar: Permission denied
[user@foo foo] $


Понимаю, что мое непонимание от непонимания/незнания чего-то, но вот чего... :unsure:

Прописать этот скрипт в sudoers и выполнить его с sudo.
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Bash script and suid

Сообщение Voice »

nesk писал(а):
20.02.2009 13:37
возможно в ядре запрещены shell-скрипты с suid

Не знал про такую возможность. Ядро стандартное Убунтовское, и на FreeBSD 6.2 с tcsh тоже не работает.
Есть возможность это проверить?

nesk писал(а):
20.02.2009 13:37
Ваш скрипт - дает возможность выполнить практически любую команду от рута!

Это я понимаю. Но ведь кроме рута его и модифицировать никто не сможет, так что не вижу повода для беспокойства.

Sleeping Daemon писал(а):
20.02.2009 13:51
Прописать этот скрипт в sudoers и выполнить его с sudo.

Ну это понятно. Меня, в принципе, устраивает вариант с программой на С, но хотелось бы выяснить почему suid не работает.
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: Bash script and suid

Сообщение Subj »

На скрипты не действует suid
Building better software with Ada
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Bash script and suid

Сообщение Portnov »

Насколько я понимаю, дело в том, что при запуске скрипта реально запускается интерпретатор. На котором suid-бита нет.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Bash script and suid

Сообщение nesk »

дело не только в модификации.
есть еще куча подводных камней. короче:
SUID shell scripts are a serious security risk, and for this reason the kernel will not honor them. Regardless of how secure you think the shell script is, it can be exploited to give the cracker a root shell.От сюда

С флагом suid, на двоичных исполняемых файлах, надо быть очень осторожным, поскольку это может быть небезопасным. Установка флага suid на файлы-сценарии не имеет никакого эффекта.Advanced Bash-Scripting

Умные дятьки-разработчик, запретили безбашенным админам ставить SUID на скрипты.

Portnov писал(а):
20.02.2009 15:28
Насколько я понимаю, дело в том, что при запуске скрипта реально запускается интерпретатор. На котором suid-бита нет.


все зависит от реализации. Вот в hp-ux разрешены suid-скрипты и все работает.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Bash script and suid

Сообщение Voice »

Спасибо, просветили темную голову. :)
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
Аватара пользователя
infra_hdc
Сообщения: 376
ОС: GNU/Linux

Re: Bash script and suid

Сообщение infra_hdc »

nesk писал(а):
20.02.2009 13:37
возможно в ядре запрещены shell-скрипты с suid
Ваш скрипт - дает возможность выполнить практически любую команду от рута!

Возможно (по крайней мере раньше так было) бит suid по отношению к скрипту, не бинарнику == вобще не действует. Об этом написано в одном из INTUIT-овских курсов по Линуксу.
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Bash script and suid

Сообщение Voice »

infra_hdc писал(а):
24.02.2009 20:04
Возможно (по крайней мере раньше так было) бит suid по отношению к скрипту, не бинарнику == вобще не действует. Об этом написано в одном из INTUIT-овских курсов по Линуксу.

Да, именно так и оказалось. Но мне все равно не понять чем такой скрипт не безопасней бинарника.
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
Аватара пользователя
Folderx
Сообщения: 296
ОС: fedora, mandriva

Re: Bash script and suid

Сообщение Folderx »

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

[guest@station tmp]$ ./test.sh;


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

[guest@station tmp]$ PATH=.; test.sh;
./test.sh: line 3: clear: команда не найдена
/bin/ls: невозможно открыть каталог /root: Отказано в доступе
[guest@station tmp]$


права наследуются
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Bash script and suid

Сообщение drBatty »

Voice писал(а):
24.02.2009 21:29
Но мне все равно не понять чем такой скрипт не безопасней бинарника.

кроме всего прочего, бинарный файл можно и не читая выполнять (например с правами 100), а вот для выполнения скрипта потребуются права на чтение. Т.о. злоумышленник не сможет дизассемблировать бинарник, с целью найти в нём уязвимость.
например эту нельзя:

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

-rws--x--x 1 root root 31836 2008-03-24 23:11 /bin/su*

http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: