LINUX.ORG.RU

Ну первое, что приходит в голову - открыть диск как бинарный файл, поправить соответствующий бит редактором.

squareroot ★★★★
()
/tmp # cp /bin/chmod .
/tmp # ll chmod 
-rwxr-xr-x 1 root root 53k Apr  2 23:27 chmod
/tmp # ./chmod -x chmod 
/tmp # ll chmod 
-rw-r--r-- 1 root root 53k Apr  2 23:27 chmod
/tmp # cp /bin/cp .
/tmp # cp chmod cp
/tmp # ./cp +x chmod 
/tmp # ll chmod 
-rwxr-xr-x 1 root root 53k Apr  2 23:27 chmod
GotF ★★★★★
()
Ответ на: комментарий от GotF

В исходной формулировке задачи о скучности и очевидности ничего не сказано :-)

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

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

Что ты будешь открывать как бинарный файл, умник? Атрибуты, по-твоему, в самом файле хранятся?

Тривиальное решение - запустить mc и из него поправить атрибуты.

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

Что ты будешь открывать как бинарный файл, умник?

Зачем сразу ругаться?

 dd if=/dev/sda1 of=dump.bin; 
правим файл dump.bin,
 dd if=dump.bin; of=/dev/sda1 
Можно наверное как-нибудь более элегантно, но это уже не по теме.

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

>Что ты будешь открывать как бинарный файл, умник?

Каталог.

Yareg ★★★
()

А вот если у ld.so бит выполнения снять - это уже веселее будет :-)

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

> Тривиальное решение - запустить mc и из него поправить атрибуты.

А mc, стало быть, через astral API атрибуты выставляет?

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

>А mc, стало быть, через astral API атрибуты выставляет?
Каким образом изменение прав на бинарник chmod'a влияет на системный вызов chmod(), о котором я писал выше?

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

>> А mc, стало быть, через astral API атрибуты выставляет?

Он не вызывает /bin/chmod.

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

>> Каким образом изменение прав на бинарник chmod'a влияет на системный вызов chmod(), о котором я писал выше?

Я только не пойму, что за «3p»? Описание процедуры находится в секции 2.

GotF ★★★★★
()

# busybox chmod +x /bin/chmod

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

>Я только не пойму, что за «3p»? Описание процедуры находится в секции 2.
Конкретно у меня (opensuse 11.3) 2 - описание линуксовой версии процедуры на русском, 2+ - на английском, 3p - описание процедуры по стандарту posix.

unikoid ★★★
()

Не понял шутки юмора

# ls -la /bin/chmod 
-rwxr-xr-x 1 root root 52192 Апр 28  2010 /bin/chmod
# chmod -x /bin/chmod 
# ls -la /bin/chmod 
-rw-r--r-- 1 root root 52192 Апр 28  2010 /bin/chmod
# perl -e "chmod 0755, '/bin/chmod'"
# ls -la /bin/chmod
-rwxr-xr-x 1 root root 52192 Апр 28  2010 /bin/chmod
Olegymous ★★★
()

Можно пересобрать/переустановить coreutils, вариантов море.

Ivan_qrt ★★★★★
()

Это мой любимый вопрос на собеседованиях :)

#cp -p /bin/ls ./chmod
#cat ./chmod > /bin/chmod

ld.so, c+gcc (perl/python/whatever) :), и еще с пяток других способов

leave ★★★★★
()

разумеется можно. Ведь во время исполнения бинарик будет находится в оперативке.

DNA_Seq ★★☆☆☆
()

Проверил. Сделал chmod -x /bin/chmod, звездочка в mc на файле пропала, вернул обратно через mc

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

Решение через cat вообще кажется очевидным

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

install -m 755 /bin/chmod /bin/chmod2

(ginstall)

вариантов много вообщем)

Sylvia ★★★★★
()

mv /bin/chmod /bin/chmod.fxxckup cp /bin/cp /bin/chmod cat /bin/chmod.fxxckup > /bin/cp

старая шутка. :)

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

а зачем ты содержимое chmod заменил на ls? :)

как бы наоборот нужно. забекапить chmod, скопировать ченить в chmod и cat'нуть в него бекап chmod'а

ну еще apt-get install --reinstall coreutils сделать :)

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

ой, да. башка третий день болит, соображаю плохо уже :)

leave ★★★★★
()
#include <sys/stat.h>
int chmod(const char *pathname, mode_t mode);

Напиши свой chmod и сделай mychmod +x /bin/chmod (:

Kaschenko
()

С помощью cat, разумеется. Самый простой вариант.

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