k001
k001
:...
k001 [userpic]
весёлая викторина по UNIX/Linux

Устроить что ли весёлую викторину? Три вопроса по UNIX/Linux, ответы скринятся, скажем, до завтра.

Update: викторина закрыта, комменты раскрыты, пост о победителях и правильных ответах будет завтра.

1. Есть две программы -- одна пишет что-то в файл, вторая читает из файла. Обе требуют один обязательный аргумент -- имя файла. Как запустить их так, чтобы вторая программа читала то, что пишет первая, но при этом не создавать временный файл?

2. Рассеянный сисадмин сделал chmod a-x /bin/chmod. Как ему исправить ситуацию на автономном компьютере без внешних носителей, не пиша, к примеру, программы на С, не перегружаясь и т.п.

3. Есть файл с правами 060 (---rw----), принадлежащий пользователю kir и группе users. При каких условиях kir может прочитать файл (не меняя его прав, принадлежности и т.п.)?

Comments

1. -
2. cp -a /bin/cp /tmp/chmod; cat /bin/chmod > /tmp/chmod; /tmp/chmod +x /bin/chmod
3. id -G -n | grep users > /dev/null && echo сможет прочитать
-- так пойдет? :)

2 правильно.

3 неправильно.

вообще на первый вопрос тоже был ответ - использовать '-' в качестве имени файла

Неправильно.

#!/bin/bash
echo «lalalala» > $1


Вышеприведённая программа — в качестве имени файла не скушает, а создаст файл с именем «-». Вообще, использование — как имени файла реализуется в прогах как специальный случай, то есть не везде реализовано.

2. cp /bin/chmod /tmp/chmod; rm /bin/chmod; cp /bin/ls /bin/chmod; cat /tmp/chmod > /bin/chmod
муторно но можно.

правильно :)

1. ./writer /dev/stdout (или /dev/fd/1) | ./reader /dev/stdin (или /dev/fd/0). А вообще mkfifo(1) наверное лучше всего (хотя можно придраться, что временный файл).

2. mv /bin/chmod /tmp && cp /bin/foo /bin/chmod && cat /tmp/chmod > /bin/chmod && rm /tmp/chmod, где /bin/foo – любой бинарник (с +x).

3. Имхо все же ни при каких. Разве что запустит какую-нить suid'ную прогу. Или это наебка, и файл in question на самом деле symlink. ;-)

1, 2 правильно, к mkfifo придерусь :)

3. если kir имеет UID=0


2. я б использовал install

а вот про 3 и UID==0, стыдно сказать, не догадался. позор.

1. a | b
2. attr ?
3. Если kir входит в групу users

1 неправильно. читаем условие внимательно — «требуют один обязательный аргумент — имя файла»

2 attr тут никак не поможет

3 kir'у принадлежность к группе не поможет, увы.

1. prog1 /dev/stdout | prog2 /dev/stdin
2. /lib/ld.so /bin/chmod ...
3. при условии что он в группе users

а вы с какой целью интересуетесь? =)

1, 2 правильно, 3 нет

Интересуюсь, ибо весёлая викторина

отвечал особо не думая. после думания:
1 неправильно, если программы сами со stdin/stdout что-то делают
2 неправильно, если /bin/chmod статикой собран
над 3 просто вообще не думал =)
ответ с acl не нравится, потому что в условиях про acl ничего не было сказано, с uid=0 не нравится, потому что слишком очевидно.

> 1 неправильно, если программы сами со stdin/stdout что-то де

На эту тему: http://k001.livejournal.com/433451.html?thread=2643243#t2643243

1. ./write.bin /dev/stdout > /dev/stdout | ./read.bin /dev/stdin

правильно :)

1. В bash'е можно так: dd if=/dev/zero count=1 of=>(cat -v /dev/stdin)

2. вариант 1: /lib/ld-linux.so.2 /bin/chmod +x /bin/chmod
2. вариант 2, менее "спортивный": mc, потом [C-x] [C-c] при курсоре @ /bin/chmod

3. ээээ. Ещё подумаю. :)

1 приз за самый оригинальный и при этом правильный ответ на вопрос №1 :)

2.1. правильно, но линукс-специфично
2.2. действительно, неспортивно

Буду спорить! У меня оригинальнее :)

Ну, у вас же примерно одно и тоже :))

Я просто 2-а подхода в одном примере показал.

:-)

1. named pipe? Или первой сказать чтоб писала в stdout, вторая читала из stdin и запустить их через |

2. Chat session at Mon Jul 24 10:24:33 MSD 2006
10:24:33 I say: http://bash.org.ru/quote.php?num=30302
А как, кстати? :-)
11:21:25 bacek says: sudo su -
11:21:39 bacek says: а потом собрать chmod из сырцов
11:26:15 I say: А он собранный сразу будет иметь +x? ;-)
11:40:28 bacek says: угу

3. Если у kir UID=0 ;-)

1. Как им сказать, "чтоб писала в stdout, вторая читала из stdin"? Напоминаю условие — они ожидают обязательного аргумента, имя файла.

2. Приз бацеку за самый прикольный ответ на вопрос №2 :)

3. Приз удаву за первый правильный ответ на вопрос №3 :)

И где я могу получить свой приз?

:)

да уж не в Австралии ;)

А разве 2. в таком случае (сборка программы) удовлетворяет условию? :)

Да, в общем, не удовлетворяет, ибо сорцов на системе в общем случае ожидать не приходится, ну и я написал, что система автономная, внешние носители подключить нельзя.

Но ответ достаточно прикольный :)

1. mkfifo file; echo 'blah!' >file & cat file
2. /lib/ld.so /bin/chmod a+x /bin/chmod или install -m 755 /bin/chmod ~/bin/chmod && ~/bin/chmod a+x /bin/chmod
3. Пока не придумал :)

1 Named pipe — это всё-таки временный файл, пусть и специальный, так что по условиям задачи не прокатывает.

2 правильно :)

1. файл создать как FIFO
2. perl -e 'chmod 755 "/bin/chmod"'
3. kir не может прочитать

1 Named pipe — это всё-таки временный файл, пусть и специальный, так что по условиям задачи не прокатывает.

2 тоже правильно :)

3 может, если его UID==0 :)

1. mkfifo тут поможет. Я ими во всю пользуюсь, но не всем это нравится
2. Не знаю
3. Наверное если kir входит в группу users

1 Named pipe — это всё-таки временный файл, пусть и специальный, так что по условиям задачи не прокатывает.

3 Прикинь, его это не спасёт. Если не веришь — проверь :)

Проверю на FreeBSD

проверял :-)

действительно не спасает. С UID==0 оно конечно все возможно, вообще все.., а вариант с использованием юзером kir su/sudo другого UID принадлежащего к группе users не катит?

1. Использовать FIFO-каналы, созданные при помощи mkfifo(1). Это не вполне удовлетворяет условию "не создавать временный файл", т.к. в файловой системе созданный канал будет присутствовать, но тем не менее, кажется, это самый простой вариант.

2. В голову приходят несколько решений:
    а. воспользоваться любой программой, умеющей дёргать системный вызов chmod(2):
        i. mc(1).
        ii. perl(1): perl -e 'chmod 0755, "/bin/chmod"; '
    b. переставить пакет coreutils (или как там это может называться в различных системах).

3. kir не может прочитать этот файл, за исключением случая, когда UID пользователя kir равен 0.

1 правильно — это не вполне удовлетворяет условию задачи

2 правильно

3 правильно!

Приз как первому, правильно и точно ответившему на все три вопроса.

Кстати, хочется отметить, что популярный вариант ответа на вопрос 1 (с /dev/stdin и /dev/stdout) вовсе не факт, что сработает корректно, т.к. в условии не сказано, что помимо работы с файлами программы не используют стандартные потоки. Скажем, если запустить

#!/bin/sh
echo "debug output"
echo "result" > $1


с параметром /dev/stdout, читающий процесс получит некорректный ввод.

Впрочем, стоит признать, что мне вариант с /dev/stdin и /dev/stdout в голову не пришёл, хотя использую его часто с теми же uuencode(1) / uudecode(1) :)

> Приз как первому, правильно и точно ответившему на все три вопроса.

беру свои слова обратно….погорячился чегой-то.

> echo "debug output"

Тут можно отметить, что с одной стороны, как правило, "воспитанные" программы "debug output" делают в /dev/stderr, ну а с другой... этот вариант всё равно сработает правильно. Однако, даже если считать, что /dev/stdin читающая-файл-программа будет использовать для каких-то своих целей, ей точно так же можно "скормить" псевдофайл через другой поток -- используя <().

Re: > echo "debug output"

Согласен. Честно скажу, не знал про <() и >() и прочитал сейчас этот момент в мане bash(1) с радостным удивлением :)
Буду использовать, полезная фича.

> с радостным удивлением :)

Ну "их там есть", да. :)

2a: cp /bin/ls /bin/chmod1 ; cat /bin/chmod > /bin/chmod1 ; /bin/chmod1 a+x /bin/chmod

2b: (Linux) /lib/ld-linux.so.2 /bin/chmod a+x /bin/chmod

2c: cp /bin/chmod /bin/chmod1 ; install -m 755 /bin/chmod1 /bin/chmod

2d: perl -e 'chmod 0755, "/bin/chmod"'

2e: cp /bin/chmod /msdos/disk.c ; /msdos/disk.c/chmod a+x /bin/chmod (тут, видимо, надо перемонтировать /msdos/disk.c с соответствующими опциями.

2f: Midnight Commander

2g: Найти/написать исходник chmod и откомпилировать.

Кто больше? ;-)

(По первому вопросу: создать named pipe и подсунуть обеим программам. По третьему: не знаю, а разбираться сейчас неохота. Кажется, вовсе не может, даже если он в группе users).

1 named pipe — это всё-таки временный файл, поэтому не вполне удовлетворяет условию задачи

2 приз за наибольшее количество правильных ответов на вопрос №2!

Только «написать исходник chmod», скачать или принести на дискетке по условию задачи нельзя, а ожидать, что он окажется на компе, не стоит, поэтому 2g не засчитан.

3 предварительные выводы правильные (у большинства — нет), а правильный ответ — если у kir'a UID==0.

3. Если пользователь kir имеет UID = 0

правильно! бинго!!!

Плюс приз как первому, правильно и точно ответившему на все три вопроса :)

thx! Увлекательно, давай ещё.

1. program1 -f - | program2 -f -
2. perl -e 'chmod(0755, "/bin/chmod");'
3. не знаю, по идее надо попытаться запустить cat либо от рута либо с uid отличным от kir и с gid равным users

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

#!/bin/sh
echo «lalala» > $1
его не поймёт ни разу.

2 правильно

3 вхождение в группу юзерс никак не поможет. правильный ответ — если у кира UID==1

> если у кира UID==1
тьфу ты, то есть UID==0

Пришел по сцылке danfe

1. $ program /dev/stdout | program /dev/stdin

2. # umask 000; cp /bin/chmod .; ./chmod 755 /bin/chmod

3. При условии что он суперпользователь или может попросить когонибудь из группы users (но не его самого) рассказать чо в файле :)
Или если он не суперпользователь, но имеет право прямого доступа к устройству, в обход драйвера ФС. Короче нормальными средствами помоему никак, потому что во всех юниксах, для владельца файла действуют только его собственные права, даже если он входит в owner-group.

1 правильно

2 хмм…у меня не работает…

3 «При условии что он суперпользователь» — правильно. То есть если UID у пользователя kir равен 0. Остальное тоже правильно.

2 это я прокосячил, да :))

1. foo /dev/stdout | bar /dev/stdin

2. Если есть прога install, юзаем её. Если нет, ну, можно попробовать заменить содержимое какой-нибудь ненужной программы типа bash-bug (?), которая 755, чем-нибудь вроде dd.

3. Мой вариант — или всегда (склоняюсь к этому), или никогда. Впрочем, я не знаю, а проверять лень.

1 правильно

2 правильно, только ненужной программы не нужно — достаточно скопировать нужную, а вместо dd подойдёт и обычный cat.

3 неправильно. Правильный ответ — если UID у пользователя kir равен 0.

2. Ага, обрезание не сбрасывает атрибутов файла, согласен. И про копию — … :))

3. Удивительно; интересно узнать причину такого правила.

3 ну а что, ясно же нарисовано — юзера не пущать :) вот и не пущают. хотя, конечно, можно подискутировать, правильно ли это, если написано «группу пущать», а он в группе…но уж так исторически сложилось и, вероятно, где-то стандартизовано. просто мало кто знает.

Ну это как раз нормально, более специфичное объявление всегда должно перекрывать общее.

не факт

все зависит от того как ACL реализованы, в NTFS например если нет явного запрета, и юзер входит в группу, то у него будут права на файл, даже если их явно отключить (но не ставить запрет). Но тут именно ACL, а не простые атрибуты файла (с POSIX ACL не разбирался, так что не скажу как это работает..), хотя и реализованы как дополнительные атрибуты.

1.
mkfifo /tmp/1
wrprog /tmp/1 &
rdprog /tmp/1 &

2.
a)
mc
b)
mkisofs -J -o /bin ./1.iso
mkdir /mnt/misc
mount -t iso9660 -o loop ./1.iso /mnt/misc
/mnt/misc/chmod a+x /bin/chmod
c)
dd if=/dev/zero of=./1.iso bs=512 count=1000
mkfs.vfat -F12 ./1.iso
mount -t vfat -o loop ./1.iso /mnt/misc
cp /bin/chmod /mnt/misc/
/mnt/misc/chmod a+x /bin/chmod
d)
/lib/ld-2.3.6.so /bin/chmod -- a+x /bin/chmod

3.
a) kir is a users member
b) chmod u+r /tmp/1

1 всё-таки named pipe — это файл, пусть и специальный, а создание файла не удовлетворяет условиям задачи.

2 правильно

3 а) неправильно б) противоречит условиям задачи.

1. foo - | bar -

2.
# mv /bin/chmod /bin/chmod.bak
# cp /bin/cat /bin/chmod
# cat /bin/chmod.bak > /bin/chmod

3. Надо полагать, если будет исполняться процесс, у которого EUID будет отличаться от kir, но группа останется users.

1 неправильно.

#!/bin/bash
echo «lalalala» > $1


Вышеприведённая программа — в качестве имени файла не скушает, а создаст файл с именем «-». Вообще, использование — как имени файла реализуется в прогах как специальный случай, то есть не везде реализовано.читаем условие задачи внимательно: «требуют один обязательный аргумент — имя файла»

2 правильно.

3 в принципе правильно, но вопрос был «в каком случае пользователь kir сможет прочитать файл». Если ответ «если он запустит setuid'ный бинарь», то это тривиальный ответ, поэтому незачёт. Правильный ответ — если у кира UID==0.

в условии 3 не говорилось, что юзер kir состоит в группе users

> в условии 3 не говорилось, что юзер kir состоит в группе users

А это ничего не меняет.

Странно - я это в ответ на другой комментарий писал, кажись.

Что-то в ЖЖ неладное творится :-\

1. program1 | program2

2. mv /bin/chmod /bin/chmod_old; cp -a /bin/ls /bin/chmod; cat /bin/chmod_old > /bin/chmod
Изврат конечно, но работает :) Вместо ls можно взять любой другой бинарь с правами +x :)

3. Странно. Думал, что владельцу файла будет к нему доступ, потому что он в группе, у которой есть доступ. Оказалось, нифига подобного... Всем другим участникам группы доступ к файлу есть.

1 неправильно. читаем условие задачи внимательно: «требуют один обязательный аргумент — имя файла»

2 правильно.

3 доступ будет только, если UID==0 у пользователя kir.

1. mkfifo ?

Остальное что-то в голову не приходит :(

1 противоречит ограничению в условиях задачи — не создавать временных файлов.

Кстати 3 про рута мне показалось как-то больно простым ответом ;)

1.
out_program /dev/stdout | in_program /dev/stdin
или использовать заранее созданный "лишний" fifo :-)

2.
/lib/ld-linux.so chmod +x chmod,
/usr/bin/install -m 755,
mc,
perl -e "chmod 0755, 'chmod'",
rpm -i /var/rpm-cache/coreutils.x86_64.rpm

3.
не могу сообразить. Ну, hard link если есть с другими правами. Может потом что придумается

1 правильно

2 правильно

3 если UID==0 у кира.

3. Ну, еще всякие nfs/mount варианты с remapом uid.

.

Re: add on

это мы на второй тур оставим :)

  1. использовать в качестве имени файла - и соединить их в pipe:
    prg1 - | prg2 -

  2. в ядре 2.4 -
    ld /bin/chmod a+x /bin/chmod

    в общем случае -
    cp -p /bin/ls /bin/chmod~ ; cat /bin/chmod > /bin/chmod~ ; /bin/chmod~ a+x /bin/chmod 

  3. если geteuid() == 0 || у файла есть ACL, дающий kir доступ || если файл был открыт до смены прав доступа - через /proc


    1. Спасибо

1 неправильно, ибо "-" в качестве имени файла далеко не во всех программах работает, см. выше.

2 правильно

3 правильно, и это, пожалуй, приз за наибольшее количество вариантов ответа на вопрос №3!

А, дошло. 3. CAP_DAC_OVERRIDE

1.
prog1 /dev/stdout | prog2 /dev/stdin
Работает только если prog[12] ничего не делают с stdin/out, /dev/std* смотрят куда надо и т.п.

2.
Каким-либо образом позвать chmod(2): запустить-таки /bin/chmod (/lib/ld-linux.so /bin/chmod a+x /bin/chmod); скопировать содержимое /bin/chmod в файл с атрибутом x (cp /bin/чтонить /tmp/newchmod ; cat /bin/chmod >/tmp/newchmod ; /tmp/newchmod a+x /bin/chmod); запустить нечто, что само умеет chmod (a la busybox chmod a+x /bin/chmod) и т.п.
Или попытаться напрямую поменять атрибуты (вроде бы debugfs и ему подобные это умеют).

По №3 не очень понятно, что должно быть в ответе. Команда, которая распечатает содержимое файла?

1, 2 правильно

3 в ответе должно быть описано, при каком условии kir сможет прочитать файл.

Сбивает с толку фраза "пользователь kir", которая почему-то оставляет в мозгу "его UID!=0". ;)

1. /dev/fd/N

2.
cp /bin/true xxx
cat /bin/chmod > xxx
./xxx 755 /bin/chmod

3. Not sure about that, but what if kir belongs to users? Should be easy.

1 right

2 right

3 whoops…if kir belongs to users that doesn't help. the only thing that helps is if kir's UID==0.

1. foobar /dev/stdout | bazbaz /dev/stdin? Ну или вариант с /dev/fd/.

2. /lib/ld-linux.so.2

3. попытаюсь уточнить. эквивалентен ли вопрос следующему: "при каких условиях процесс с UID и EUID kir успешно выполнить open(2) или mmap(2) на вышеупомянутый файл"?

1 правильно

2 правильно

3 в общем, да :)

1. named FIFO pipe
2. /lib/ld-linux.so.2 chmod a+x /bin/chmod
3. запустить SUID-ную читалку от кого-нибудь из группы users

1 противоречит ограничению в условии задачи — не создавать временных файлов. named pipe — это файл, пусть и специальный.

2 правильно

3 пожалуй, случай запуска суидных читалок мы не будет засчитывать как правильный ответ, ибо в общем случае таковых читалок на системе нет (а если есть — это не вполне секьюрная система). правильный ответ куда проще — если UID==0 у кира.

Спасибо за развлечение. Всё-таки про права пришлось прочитать как они работают.

3 в общем случае uid=0 только у юзера root

В общем, да, но ничто не мешает тебе сделать пользователя kir с UID==0.

это я в ответ на "ибо в _общем случае_ таковых читалок на системе нет (а если есть — это не вполне секьюрная система)"

Вопрос был — «при каких условиях kir может прочитать». Впрочем, да, ОК, вариант «при условии наличии суидной читалки» можно засчитать, ты прав. Это моя проблема, что я не указал, что варианты с запуском suidных программ считаем тривиальными.

ну и

система содержащая более одного юзера с UID==0 тоже может быть отнесена к не вполне секьюрная система, а переименовывать юзера root как-то нехотца.. хотя венда вполне себе живет с локальным админом нестандартного имени, даже рекоендуют для увеличения секурити..

*BSD

В *bsd системах by default 2 пользователя с uid==0: root и toor

Во freebsd еще по-умолчанию есть toor.

На моей рабочей машине uid=0 не проканает (в общем случае). Ибо, например, /home на nfs со всеми вытекающими.

1) Bash-изм подойдет?

reader <( writer >(cat) )


2)ldd /bin/chmod +x /bin/chmod

3)kir принадлежит группе users :)

1, 2 правильно

3 фига с два :) не поможет это ему

> 1, 2 правильно

Не, только не ldd: "... ldd - print shared library dependencies ..."

1 и 3 сам бы не догадался, а ответы уже описаны выше.

2. а сделать хард-линк на /bin/chmod и выдать ему соответствующие права — сработает?

2 а как file mode-то на хардлинке менять?

Да тут даже и не в этом дело. Permissions это атрибуты inode, ...

... в конечном счёте.

мне тут товарищи сказали, что, пока я тупила, каменты уже появились:), но я их не читала (как открыла пост около 23:00 по мск, так и не перегружала), так что можно я ляпну.. только сразу оговорюсь - я ламо и мне помогали.

1. не поняла задачи. program-to-write file & program-to-read file. что не так?

2. не столько давно поимела дело близко с этими штуками, ловя багу - так что самым простым путем вижу /lib/ld-linux.so.2 /bin/chmod a+x /bin/chmod. я лох?:) впрочем, кажется, это системозависимое. т.е. под линуксом прокатит, а под какой-нть фрей (которую я ни раза в жизни в глаза не видела:)) - наверное, не факт..

3. мне кажется, что ни при каких.

повторюсь - не бейте лоха ногами, пожалуйста:) я не столь много имею дела именно непосредственно с системой, хоть и сижу по 8 часов 5 дней в неделю в консоли.

1. надо, чтобы одна программа писала, а другая это в то же время читала то, что первая пишет, но файла при этом чтобы не создавать. вариант a|b не подходит, потому что и а и b требуют имени файла в качестве аргумента.

2. правильно

3. неправильно. если UID==0 у кира, то он прочитает :)

PS а где вы работаете, если не секрет?

1. угу. уже уловила. пардон.
2. уфф..:))) но метод, предложенный большинством - с использованием другого бинарника - намного более изящен. насладилась:)
3. блин. это выглядит каким-то очевидным читом:) но при этом в голову приходит почему-то в последнюю очередь.

http://northernlight.com/. мое занятие громко называется product engineering. ловля багов и много перла, если чуть проще:)

p.s. нет, перла я при этом не знаю. имхо:)

search engine? забавно. я когда-то делал ASPseek…

PS будем друЖЖить? :)

на ASPseek глянула сегодня краем глаза. чот сама уж и не помню, как попала. с хоумпейджа в юзеринфе, кажется:)
завтра гляну поближе. любопытно.

будем. тока полчаса назад написала у себя в жж, что наткнулась на человека, кот. не знаю лично, но при этом хочу зафрендить (обычно я френдю? френжу? вношу в фл, в общем:) только знакомых лично/хорошо знакомых по Сети людей), это совсем не стандартный для меня сценарий. впрочем, исключения разнообразят жизнь:) в общем, done.

на ASPseek глянула сегодня краем глаза


Уже сейчас неинтересно, наверное — есть более другие open source search engines. Увы, не занимаюсь я им и даже не поддерживаю. А хороший был проект, перспективный (казалось бы). Но как-то вот не срослось, и знамя, выпавшее из моей руки, никто не подхватил :(

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

вообще, у меня есть подозрение, что в области search engines счас особо ничего не накопаешь. по крайней мере, в области публичных SE. бесплатных, в смысле. там давно уже всех зарулил гугл (в рунете - яндекс), а остальные ex-гиганты вяло пытаются дергаться, просто чтобы совсем уж не помереть. а вот кастомные коммерческие поисковики по специфическому и публично недоступному контенту - это даа.. это тема. собственно, как раз наша тема и есть:)

1. использовать named pipes
2. скопировать его на место любого исполняемого файла - это сохранит permissions файла в который копируешь и, следовательно можно будет использовать новый файл как программу (я до этого долго допирал)
3. так и не допер. все что приходит в голову, это su в другого юзера, который состоит в группе users?

там уже комменты открыты — почитай.

(что-то мне подсказывает, что я рано их открыл — народ так и прёт, так и прёт :))

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

Про второй вопрос, первый раз узнал, что ld.so, это executable и что он просто запускает другие программы. Хотя с общетеоретической точки зрения этот вариант подходит только в тех юниксах где есть ld.so

> первый раз узнал, что ld.so, это executable

Тогда, может быть, новостью будет и то, что на многих Linux-системах можно запустить этот файл: /lib/libc.so.6 -- попробуй!

Re: > первый раз узнал, что ld.so, это executable

Ну, если он executable, то его можно запустить - не виду дополнительной новости.

Re: Broken logic, Inc.

Я так и не понял, у кого с логикой проблемы и в чем именно?

Re: > первый раз узнал, что ld.so, это executable

Кстати, а нафига библиотеки делают executable? В чем прикол?

> Хотя с общетеоретической точки зрения этот вариант подходит только в тех юниксах где есть ld.so

Только в линуксах, сколь я понимаю.

marck@woozle:~> ls -ld /libexec/ld-elf.so.1
-r-xr-xr-x  1 root  wheel  170928 Nov 21 10:59 /libexec/ld-elf.so.1*
marck@woozle:~>  /libexec/ld-elf.so.1
/libexec/ld-elf.so.1: Exec format error. Binary file not executable.
marck@woozle:~> uname -a
FreeBSD woozle.rinet.ru 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE [...] i386

так зачем их делают executable?