Wednesday, March 24th, 2010 05:29 pm

Сегодня на повестке дня две задачи:

1) Волею судеб вы случайно удалили у команды chmod права на выполнение. Как вернуть их обратно? Под рутом, конечно. Без этого вы бы их и не удалили.

2) Как в шелле (для определённости пусть будет bash) привязать команду к клавише, чтобы, скажем, при нажатии просто “1″ (без Enter) выполнялась команда (например, uname -a). Вопрос возник из https://ru-freebsd.livejournal.com/194430.html, ответ есть там в комментах.

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

Page 1 of 3 << [1] [2] [3] >>
Wednesday, March 24th, 2010 04:38 pm (UTC)
первое - написать скрипт на чем угодно, что позовет setmode(3)? читерство?
второе - в баше конкретно можно попробовать через readline и inputrc что-то сделать. не пробовал.
Wednesday, March 24th, 2010 04:39 pm (UTC)
1) Взять любой файл с правом выполнения и заменить его содержимое внутренностями chmod'а?
Wednesday, March 24th, 2010 04:40 pm (UTC)
1) ну если есть, на чём написать, то вполне себе вариант. а ещё?
2) ну в общем да. у баша даже есть специальные команды для манипулирования опциями readline
Wednesday, March 24th, 2010 04:40 pm (UTC)
хороший вариант. а ещё есть?
Wednesday, March 24th, 2010 04:41 pm (UTC)
FreeBSD: /rescue/chmod ;-P

Linux: ld.so /usr/bin/chmod, кажется?
Wednesday, March 24th, 2010 04:43 pm (UTC)
1) это читерство!
2) да, только он теперь почему-то называется /lib/ld-linux.so*, а просто ld.so нету
Wednesday, March 24th, 2010 04:44 pm (UTC)
Написать программу на C, которая делает syscall )
Wednesday, March 24th, 2010 04:47 pm (UTC)
можно даже chmod(2)
ну да, тоже вариант, если там случайно оказался компилятор C и редактор связей с сопутствующими заголовками и библиотеками
Wednesday, March 24th, 2010 04:48 pm (UTC)
по аналогии с ld-so, можно еще попробовать загрузить ELF дебаггером и запустить на выполнение. но мне вариант с заменой содержимого больше нравится.
Wednesday, March 24th, 2010 04:51 pm (UTC)
наверное, если подумать, можно вспомнить, у какого-нибудь cpio или tar набор опций, который нетривиально исполнит роль chmod.

а ты какого ответа добиваешься? манипулирования содержимого inode руками? использования setfacl?
Wednesday, March 24th, 2010 04:52 pm (UTC)
интересная мысль, но у меня так не работает:

$ gdb chmod
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
(no debugging symbols found)
(gdb) r
Starting program: /home/***/chmod 
/bin/bash: /home/***/chmod: Permission denied
/bin/bash: line 0: exec: /home/***/chmod: cannot execute: Success

Program exited with code 0176.
(no debugging symbols found)
You can't do that without a process to debug.

или его надо как-то хитро загружать?
Wednesday, March 24th, 2010 04:54 pm (UTC)
никакого конкретно. я придумал два: с замещением содержимого другого файла и с ld.so, но он linux-only. ты придумал с запуском чего-нибудь, которое сможет сделать системный вызов.
вот может, ещё кто чего интересное предложит :)

да, debugfs'ом подправить права - тоже хорошо, если больше ничего не помогает :)
Wednesday, March 24th, 2010 05:12 pm (UTC)
То же самое хотел предложить.
В любой скрипт скопировать содержиоме чмода.

Ну или через перл, если он есть, конечно. То же что и С.

Ну или принести чмод с какого-нить стороннего источника (с репозитория или с соседнего компа).
Wednesday, March 24th, 2010 05:35 pm (UTC)
после всего перечисленного в голову приходит только mc (гы:)
Wednesday, March 24th, 2010 05:35 pm (UTC)
ну если он там случайно есть, что маловероятно, но возможно, то тоже сойдёт :)
Wednesday, March 24th, 2010 05:39 pm (UTC)
Предлагаю прямое редактирование содержимого блочного устройства.
Wednesday, March 24th, 2010 05:51 pm (UTC)
это более высокий уровень кунфу, чем debugfs, но почему бы и нет :)
Wednesday, March 24th, 2010 06:00 pm (UTC)
demos commander!
Wednesday, March 24th, 2010 06:01 pm (UTC)
некрофил!
Wednesday, March 24th, 2010 06:01 pm (UTC)
черт, было ощущение, что можно. надо документацию читать. может, руками сначала загрузить через load, потом библиотеки нужные...

или я с mdb/adb в соляре путаю... :((
Wednesday, March 24th, 2010 06:03 pm (UTC)
о! http://groups.google.com/group/bashc/web/overview
Wednesday, March 24th, 2010 06:04 pm (UTC)
дада, засучив рукава и открыв fs/ext3/inode.c, в другой консоли он запустил шестнадцатиричный редактор...

ночь обещала быть долгой.
Wednesday, March 24th, 2010 06:06 pm (UTC)
OMG. you made my day.
Wednesday, March 24th, 2010 06:06 pm (UTC)
а я чо, я сам офигел..
Wednesday, March 24th, 2010 07:12 pm (UTC)
Скопировать любую другую прогу с правами себе в home потрункатить ее, и cat-ом дописать в конец chmod? Потом запустить?
Page 1 of 3 << [1] [2] [3] >>