LINUX.ORG.RU

setuid файл не дает root


0

0

есть файл c.cgi:

> ls -l /tmp/c.cgi
-rwsr-xr-x 1 root root 15 2099-01-31 22:46 /tmp/c.cgi

> cat /tmp/c.cgi
#!/bin/sh

id

Путь к id не прописан. Пытаюсь изменить id на свою программу:

> pwd
/home/guest

> cat > id
cp /bin/sh .xxx; chow root:root .xxx; chmod 4755 .xxx
^D

> chmod 755 id
> export PATH="/home/guest"

> /tmp/c.cgi

Не может выполнить chmod потому что не хватает привилегий? В чем может быть проблема? bash версии 3.1

anonymous

Setuid обычно дают на исполнение какойто группе пользователей. А группа у тебя root.

qsloqs ★★
()
Ответ на: комментарий от qsloqs

и что? исполняемый флаг для others то стоит. ну вот другой пример который работает:

# cp /bin/bash /tmp/run # chown root:root /tmp/run # chmod 4755 /tmp/run # su guest > /tmp/run #

тоже группа root но дает же рута гостю.

anonymous
()
Ответ на: комментарий от sdio

угу :) про "-p" забыл ... но вопрос остается открытым

anonymous
()
Ответ на: комментарий от anonymous

>> а почему ? в bash защита или в ядре?

потому что запуск бинарника и скрипта очень разные процессы. в первом случае в запуске принимает учавствие ядро, которое может менять, и меняет uid/gid. а во втором случае bash (sh, zsh) который работает под обычным юзером и менять uid/gid не может.

>> если не трудно то посмотрите здесь: http://nob.cs.ucdavis.edu/bishop/secprog/sans2002/page39.html

тут никакими суидными скриптами и не пахнет, а просто добавляется в path текущая папка и скрипт с именем mail, который выполнит суидная программа вместо обычного mail

CFA
()
Ответ на: комментарий от anonymous

В случае перла есть специальный бинарник suidperl, насчет других языков не знаю.

lodin ★★★★
()
Ответ на: комментарий от anonymous

> а почему ? в bash защита или в ядре?
Потому что при запуске скрипта реально запускается не скрипт, а его интерпретатор, например, /bin/sh, который читает скрипт как обычный текстовый файл. А раз suid бит стоит не на /bin/sh, значит и UID sh-у никто менять не будет.
Используйте лучше для таких целей sudo.

spirit ★★★★★
()
Ответ на: комментарий от anonymous

> а разве c.cgi (-rwsr-xr-x) не суидная программа?

нет, это просто исполняемый файл.

Реально при запуске ./c.cgi будет выполнено

/bin/sh ./c.cgi

Как уже объяснили, сам /bin/sh не суидный, поэтому он просто _технически_ не может изменить свой uid на время выполнения скрипта ./c.cgi

pv4 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.