ALTE DOCUMENTE
|
||||||||
UNIX
Как узнать какая оболочка выпол& 959n1317j #1085;яется в данный момент
vi
Фоновое выпол& 959n1317j #1085;ение процессов
Как узнать список выпол& 959n1317j #1085;яемых процессов в системе
Как пол& 959n1317j #1100;зоваться справочным руководством man
UNIX нет ничего мистического и освоить простейшие операции можно в течение одного вечера, особенно если воспол& 959n1317j #1100;зоваться толковой книжкой. К счастью, недостатка в литературе испытывать не приходится, но слишком много - так же плохо, как и совсем ничего. Попробуй, выбери одну книжку из десятка, разбросанных по витрине! Поэтому, в «Технику сетевых атак» включена короткая глава, помогающая незнакомым с UNIX UNIX, испол& 959n1317j #1100;зуемые в этой книге.
UNIX существует множество интерактивных оболочек с развитым пол& 959n1317j #1100;зовательским интерфейсом - от Mortal Commander Norton Commander Windows UNIX Mortal Commander UNIX MS DOS command com
UNIX MS DOS) нет стандартной командной оболочки, поэтому первая задача пол& 959n1317j #1100;зователя - выяснить, что именно установлено в системе, и какие альтернативные оболочки доступны.
Путь к испол& 959n1317j #1100;зуемой в данный момент оболочке содержится в переменной $SHELL echo SHELL
UWIN
echo $SHELL
/usr/bin/ksh
CYGWIN
echo $SHELL
/bin/sh
Теперь по таблице 3 легко определить, какая именно оболочка запущена (конечно, при условии, что никакие злые духи не изменили имя испол& 959n1317j #1085;яемого файла).
bash | |
csh | |
ksh | |
sh | |
tcsh |
Оболочка TC |
Пару слов об особенностях каждой оболочки. Первой на свет появилась оболочка Борна, фактически представляющая собой язык программирования, ориентированный на управление процессами, вводом-выводом и операции шаблонного поиска. Никакого интерактивного взаимодействия с пол& 959n1317j #1100;зователем в ней не предусматривалось, и вся работа сводилась к написанию управляющих программ - скриптов, обрабатываемых оболочкой.
Первая интерактивная оболочка, пол& 959n1317j #1091;чившая название «С», возникла в университете Беркли. Она быстро завоевала популярность, но имела множество недостатков и содержала кучу ошибок, поэтому пол& 959n1317j #1085;остью вытеснить оболочку Борна так и не смогла. Проблема же совместного сосуществования заключалась в пол& 959n1317j #1085;ой несовместимости командных языков обоих оболочек. Это приводило к невозможности выпол& 959n1317j #1085;ения скриптов, написанных для одной оболочки, другой оболочкой.
TC TENEX PDP
Существовали и коммерческие оболочки. Из них наибольшей популярностью пол& 959n1317j #1100;зовалось творение, созданное Дэвидом Корном, объединившее в себе лучшие черты своих предшественников. Компании AT&T System V
Стандарт - хорошо, но платить компании никто не хотел, и вскоре оболочка Борна была пол& 959n1317j #1085;остью переписана в рамках проекта GNU, пол& 959n1317j #1091;чив название bash Borne Again Shell LINUX bash самой популярной оболочкой всех времен и народов, хотя многие до сих пор предпочитают пол& 959n1317j #1100;зоваться C Shell
Во многих случаях различия между оболочками не столь существенны и не отражаются на простейших операциях, но все примеры, приводимые в книге, предназначены для оболочки Корна и их успешное выпол& 959n1317j #1085;ение в других оболочках не гарантируется (хотя и предпол& 959n1317j #1072;гается). Поэтому, пол& 959n1317j #1077;зно знать, какие оболочки установлены администратором на машине. В этом поможет команда "cat etc shells UWIN
cat /etc/shells
/usr/bin/ksh
/usr/bin/sh
/usr/bin/tcsh
/usr/bin/csh
/bin/sh
/bin/ksh
/bin/csh
/bin/tcsh
Запустить любую оболочку можно, набрав ее имя (возможно, вместе с пол& 959n1317j #1085;ым путем), в командной строке. А вернуться назад обычно помогает команда exit. В качестве тренировочного упражнения пол& 959n1317j #1077;зно запустить все доступные оболочки по очереди. (Чаще всего пути "/usr bin bin
$ echo $SHELL
/usr/bin/ksh
$ /usr/bin/sh
# echo $SHELL
/usr/bin/ksh
# exit
$ /usr/bin/tcsh
# echo $SHELL
/usr/bin/ksh
# exit
$ /usr/bin/csh
%echo $SHELL
/usr/bin/ksh
%exit
command com MS DOS) предусмотрена встроенная команда "dir", но UNIX-оболочки не поддерживают такой команды. Вместо этого пол& 959n1317j #1100;зователю предоставляется возможность вызвать внешнюю утилиту, выпол& 959n1317j #1085;яющую всю необходимую работу. Обычно в UNIX для отображения содержимого каталога испол& 959n1317j #1100;зуется программа 'ls bin". Кстати, пол& 959n1317j #1100;зователи CYGWIN прежде чем смогут ей воспол& 959n1317j #1100;зоваться, должны скачать с сервера архив fileutils.tar.gz - в минимальный комплект поставки она не входит.
ls /
A E proc
base.bat etc reg
baseserviceslink.sh F sys
bin H tmp
C home usr
D lib var
dev linka win
etc ls
$ ls /etc
crontab inetdconfig.sh passwd.add traceit
in.ftpd init.exe priv.exe tracer.exe
in.rlogind login.allow profile ucs.exe
in.rshd login.deny rc ums.exe
in.telnetd mailx.rc services
inetd.conf mkpasswd.exe shells
inetd.exe passwd stop_uwin
UNIX MS DOS char set], которую имеет смысл рассмотреть подробнее. Но для начала нелишне вспомнить назначение "*" и "?". Знак "*" обозначает любое множество любых символов (включая пустое), а "?" всего один непустой символ. Поэтому, "ls x*" выведет на экран все файлы (и каталоги), начинающиеся с буквы 'x', а "ls ?tmp"- покажет '_tmp','$tmp' и так далее.
Конечно же, временами гибкости таких шаблонов оказывается недостаточно, например, как быть, когда требуется пол& 959n1317j #1091;чить список файлов, начинающихся и на букву 'i p MS DOS с этим пришлось бы управляться в два захода, последовательно отдавая команды 'dir i*' и 'dir p*'. К счастью, в UNIX
$ ls /etc/[ip]*
/etc/in.ftpd /etc/inetd.conf /etc/passwd
/etc/in.rlogind /etc/inetd.exe /etc/passwd.add
/etc/in.rshd /etc/inetdconfig.sh /etc/priv.exe
/etc/in.telnetd /etc/init.exe /etc/profile
$ls /etc/*[0-9]*
/etc/k1y /etc/mkss2old /etc/track7
Если такой информации окажется недостаточно и потребуется узнать, скажем, права доступа к файлу, имя владельца и время последнего изменения, то придется воспол& 959n1317j #1100;зоваться ключом '-l L
ls -l /etc
-rwxr- r- 1 root Everyone 46 Feb 16 1999 crontab
-rwxr- r- 1 root Everyone 19968 Feb 17 1999 mkpasswd.exe
drwxr- r- 2 root Everyone 512 Jul 2 16:52 mydir
-rwxr- r- 1 root Everyone 119 Jul 1 12:45 passwd
lrwxr- r- 1 root Everyone 20 Jun 4 03:10 services -> /C/WINDOWS//services
-rwxr- r- 1 root Everyone 88 Feb 17 1999 shells
-rwxr- r- 1 root Everyone 73216 Feb 2 07:25 ums.exe
Первая колонка сообщает права доступа. Она состоит из тех трехсимвольных групп, определяющих права доступа создателя (то бишь владельца файла), его группы и всех остальных пол& 959n1317j #1100;зователей. Каждая группа в свою очередь состоит из трех атрибутов, разрешающих чтение (r), запись (w) и испол& 959n1317j #1085;ение (x
UNIX выпол& 959n1317j #1085;яемые файлы распознаются по атрибуту 'x', и могут иметь любое расширение или вовсе не иметь его. Обычно большинство файлов и каталогов имеют следующие права доступа 'rwxr--r--r', т.е. создатель файла может делать с ним что угодно, а всем остальным разрешается читать, но не модифицировать или запускать.
Для изменения прав доступа предусмотрена утилита chmod (сокращение от Change Mode). Для того, чтобы действие возымело эффект, необходимо указать группу пол& 959n1317j #1100;зователей ('u g o a' для всех-всех, т.е. 'u'+'g'+'o' одновременно), затем наличие (знак '+') или отсутствие (знак '-') требуемого атрибута. Например, защитить собственные файлы от «чужого глаза» можно с помощью команды 'chmod g-r,o-r *'.
d txt
bin bin usr bin
drwxrwxrwx 2 root Everyone 512 Jun 4 00:50 bin
drwxrwxrwx 3 root Everyone 512 Jun 4 00:51 dev
drwxrwxrwx 16 root Everyone 512 Jun 4 00:51 lib
root Everyone'). И замыкают строку размер, время создания и имя файла (директории). Вся остальная информация по работе с 'ls' содержится в руководстве 'man' и может быть пол& 959n1317j #1091;чена с помощью команды 'man ls'.
MS DOS, можно с помощью команды 'cd'. Стоит заметить, в UNIX нет понятия диска, поэтому специальной команды для его изменения не существует - для навигации достаточно одного 'cd'. Например
$ cd /
$ ls
A E proc
base.bat etc reg
baseserviceslink.sh F sys
bin H tmp
C home usr
D lib var
dev linka win
$ cd /A
$ ls
tpna.arj
$ cd /var
$ ls
adm tmp uninstall
Для создания новых каталогов предназначена команда 'mkdir' (Make Directory). Вызов 'mkdir myname' создаст в текущем каталоге новую директорию 'myname'. А вот попытка создать несколько вложенных друг в друга каталогов провалится, если не указать ключ '-p
$ mkdir temp
$ cd temp
$ ls
$ mkdir 1/2/3
mkdir: 1/2/3: [No such file or directory]
$ mkdir -p 1/2/3
$ ls
$ ls 1
$ ls 1/2
UNIX имен файлов, иначе вместо ключа '-p' создастся директория с таким именем. Да, 'mkdir' позволяет создать более одного каталога за вызов. Например:
$ mkdir 1 2 3
$ ls
1 2 3
Удалить ненужные каталоги поможет команда 'rm'. По умолчанию удаляются одни файлы, а для уничтожения директорий необходимо задать допол& 959n1317j #1085;ительный ключ '-d'. Если удаляемый каталог содержит вложенные директории, то начать удаление необходимо с самого «нижнего» из них или воспол& 959n1317j #1100;зоваться ключом '-r', рекурсивно стирающим все без разбора. Так, для уничтожения созданных в предыдущем примере каталогов '/1/2/3' можно воспол& 959n1317j #1100;зоваться следующими командами:
rm -d /1/2/3
rm -d /1/2
rm -d /1
rm -d -r /1
UNIX cp copy MS DOS etc passwd cp etc passwd home cat
$ cp /etc/passwd /home
$ cat /home/passwd
root:x:0:13:Built-in account for administering the computer/domain:/tmp:/usr/bin/ksh
telnetd:x:1:1:telnetd:/:/dev/null
cat' разрабатывалась для объединения нескольких файлов в один, но в качестве целевого файла испол& 959n1317j #1100;зовался стандартный вывод, поэтому пол& 959n1317j #1100;зоваться утилитой приходилось приблизительно так "cat file file file 3 > file123". Знак ">" обрабатывался оболочкой, подменяющей стандартный вывод указанным файлом. Если же целевой файл не указывался, утилита последовательно выводила содержимое перечисленных файлов на экран.
vi UNIX может вызвать насмешку у пол& 959n1317j #1100;зователей MS DOS Windows vi vi
vi edit com vi
vi, может превзойти ожидаемое увеличение производительности оператора, да и машинное время сегодня не так критично, как стремление максимально облегчить умственную деятельность пол& 959n1317j #1100;зователей.
UNIX существуют впол& 959n1317j #1085;е привычные пол& 959n1317j #1100;зователям Windows редакторы, и выбор того или иного - личное дело каждого. Разумеется, при условии, что выбранный редактор установлен в системе. К сожалению, администраторы многих серверов не балуют своих пол& 959n1317j #1100;зователей разнообразием, тем более, когда предоставляют хостинг бесплатно. Теоретически возможно связаться с администратором и попросить установить ваш любимый редактор, но практически это оказывается сложнее изучения vi UNIX доступен (если, конечно, не удален администратором).
vi
Для того чтобы пол& 959n1317j #1100;зоваться vi UNIX vi Windows x Windows NT MS DOS vim Amiga Atari Mac System UNIX MS DOS Windows vim vim ftp ftp://ftp.fu-berlin.de/misc/editors/vim "/FILES/vim"
vi bmp vi hello
Hello World vi
vi режим и режим . В командном режиме можно перемещать курсор по экрану, искать и заменять фрагменты текста, сохранять и загружать файлы с диска - словом командовать редактором, а режим вставки предназначен для ввода самого текста.
vi оказывается в командном режиме и переключится в режим вставки можно, например, нажав клавишу <i>. Дождавшись появления курсора вверху экрана, наберем восклицание "Hello Word!" или что-нибудь в этом духе. Теперь необходимо сохранить файл на диск. Но как? Прежде необходимо один раз нажать <Esc> для переключения в командный режим, затем набрать следующую последовательность <:> < q> <w> <Enter>.
vi Hello World Hello my world!". Сначала попытаемся подвести курсор к месту правки, не пол& 959n1317j #1100;зуясь клавишами-стрелками, ибо не на всех платформах они правильно действуют. Хорошенькое начало, - чем же тогда управлять курсором?
Вообще-то не стоит волноваться понапрасну - раскладка клавиатуры обычно подбирается так, чтобы пол& 959n1317j #1100;зователи могли работать ни о чем не задумываясь, но все же иногда встречаются нерадивые администраторы, криво инсталлирующие vi на свою машину. Поэтому, на всякий случай пол& 959n1317j #1077;зно знать, что клавиша <h> в командном режиме перемещает курсор на одну позицию влево, <l> - вправо, а <j> и <k> соответственно вниз и вверх.
Нажмем шесть раз клавишу <l> или испол& 959n1317j #1100;зуем комбинацию <6><l> (обычно цифра стоящая перед любой командой предписывает повторить эту команду надлежащие количество раз). Теперь наберем 'my W' на строчечную войдем в командный режим по <Esc> и включим режим вставки символа, нажатием <r>. Или же испол& 959n1317j #1100;зуем команду «~» (тильда) для инвертирования регистра символов.
Конечно, никто не и не утверждает, что пол& 959n1317j #1100;зоваться vi vi vi UNIX
UNIX vi - как быть, если, не выходя из редактора, потребуется выпол& 959n1317j #1085;ить какое-то действие? В Windows достаточно щелкнуть мышкой по заголовку окна другой программы или нажать <Alt>-<Tab>, но разработчики UNIX
Если нажать <Ctrl Z>, то выпол& 959n1317j #1085;ение процесса vi vi ps vi exe
$ ps
PID TT TIME COMMAND
148799 tty10 0 vi.exe
150872 tty10 0 ps.exe
320924 tty10 0 ksh.exe
kill fg fg fg fg vi вновь появится на экране. Нажмем еще раз <Ctrl Z> и воспол& 959n1317j #1100;зуемся командной kill kill kill
vi требуется провести поиск сложного шаблона по всему тексту, выпол& 959n1317j #1085;яющийся ну неприлично длительный промежуток времени, в течение которого ничего не остается, как сидеть и тупо пялится на экран?
На помощь приходит фоновое выпол& 959n1317j #1085;ение задач. В этом случае понижается приоритет процесса, а экран предоставляется другому приложению. Перевести приложение в фоновой режим поможет команда "bg fg" (которая, кстати, пригодится для возращения процесса из фонового в нормальный режим). Большинство оболочек распознают символ '&', распол& 959n1317j #1086;женный в конце командной строки, и автоматически запускают приложение в фоновом режиме. Например
$ vi &
[1] 141008
$ ps
PID TT TIME COMMAND
87458 tty10 0 ps.exe
141008 tty10 0 vi.exe
320924 tty10 0 ksh.exe
[1] + Stopped (SIGTTIN) vi &
UNIX можно считать законченным. Умения прогуляться по каталогам и запустить нужную программу для начала окажется впол& 959n1317j #1085;е достаточно. Конечно, это не избавляет от необходимости приобретения справочных руководств и учебников по UNIX, но множество пол& 959n1317j #1077;зной информации можно найти и во встроенной справочной системе, доступной для просмотра с помощью утилиты 'man
man ls bmp
|