LINUX.ORG.RU

после использования команды patch группа становиться wheel


0

0

На хостинге наблюдается очень странная фигня...
Работаю под непривилегированным пользователем и не состою в группе wheel
После использования команды patch, результирующий файл получает группу wheel, причём SGID бит на бинаре patch не стоит!
Это работает даже если скопировать себе в хоум бинарник patch и патчить с его помощью.

Система FreeBSD 6.2-STABLE
Ниже конкретный пример:

$ ls -l `which patch`
-r-xr-xr-x  1 root  wheel  43904 Feb 15  2007 /usr/bin/patch
$ whoami
user
$ echo 1 > 1.txt
$ echo 2 > 2.txt
$ diff -u 1.txt 2.txt > 1-2.patch
$ ls -l
-rw-r--r--  1 user  user-users  88 Sep 18 14:46 1-2.patch
-rw-r--r--  1 user  user-users   2 Sep 18 14:45 1.txt
-rw-r--r--  1 user  user-users   2 Sep 18 14:45 2.txt
$ patch < 1-2.patch 
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- 1.txt      Thu Sep 18 14:45:45 2008
|+++ 2.txt      Thu Sep 18 14:45:50 2008
--------------------------
Patching file 1.txt using Plan A...
Hunk #1 succeeded at 1.
done
$ ls -l
-rw-r--r--  1 user  user-users  88 Sep 18 14:46 1-2.patch
-rw-r--r--  1 user  wheel        2 Sep 18 14:46 1.txt
-rw-r--r--  1 user  user-users   2 Sep 18 14:45 1.txt.orig
-rw-r--r--  1 user  user-users   2 Sep 18 14:45 2.txt
★★★★★

Выяснил что patch в директории /tmp создаёт темповый файл с группой wheel. И вобще, все новые файлы, создаваемые в /tmp создаются с группой wheel.

Что это за механизм такой?

Файловая система в /tmp - ufs.

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

Вопрос снят. Открыл для себя, что в FreeBSD файлы при создании наследуют группу родительского каталога)

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

>а дырка-то у вас хорошая...

смотрю на аватару Nao... смотрю на коня в пальто... много думаю :)

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

> теперь прочтите про магию SGID на для каталога, а дырка-то у вас хорошая...

Век живи, век учись. Вот оно как оказывается.

А насчёт дырки. А как это можно применить? Способов поставить SGID бит (чтобы запустить скрипт с эффективной группой wheel) на созданный в том каталоге файл (уже с группой wheel) я не нашёл.

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

> Способов поставить SGID бит (чтобы запустить скрипт с эффективной группой wheel) на созданный в том каталоге файл (уже с группой wheel) я не нашёл.

Пропатченный bash тебе поможет, главное скомпилировать его в /tmp и будет у тебя root двумя хопами. :)

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

Как вы себе это представляете, если не секрет. Трудо поверить, что в умолчательной конфигурации freebsd была такая дыра.

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

> Пропатченный bash тебе поможет, главное скомпилировать его в /tmp и будет у тебя root двумя хопами. :)

Ну скомпилировал ты его. SGID-бит же все равно надо на него поставить. А как ты это сделаешь-то?

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

> Ну скомпилировал ты его. SGID-бит же все равно надо на него поставить. А как ты это сделаешь-то?

Я ж написал про два хопа. Угадаешь второй? Если ты не в группе wheel, то команду su тебе выполнить не дадут, а здесь останется только угадать пароль root.

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

Re^2: после использования команды patch группа становиться wheel

> Я ж написал про два хопа. Угадаешь второй? Если ты не в группе wheel, то команду su тебе выполнить не дадут, а здесь останется только угадать пароль root.

Ну а как ты в группу wheel попадешь? Думаешь, тебе дадут выставить SGID-бит?
Да, а bash-то зачем потчить хотел? :)

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