Начальные навыки


Вход в систему

Загрузка Linux

Если на компьютере установлен Linux, то после включения и самотестирования ПК не происходит автоматической загрузки операционной системы (как это происходит с Dos и Windows), а появляется приглашение загрузчика LILO (LInux LOader).

| Co-Processor      : Installed           Extended Memory   :   64512K         |
| CPU Speed         : 166MHz              Cache Memory      :     512K         |
+------------------------------------------------------------------------------+
| Diskette Drive  A : 1.44M, 3.5 in.      Display Type      : EGA/VGA          |
| Diskette Drive  B : None                Serial Port(s)    : 3F8 2F8          |
| Pri. Master  Disk : LBA ,UDMA 2, 4325MB Parallel Port(s)  : None             |
| Pri. Slave   Disk : None                EDO DRAM at Row(s): None             |
| Sec. Master  Disk : CDROM,Mode 4        SDRAM at Row(s)   : 0 1 2 3          |
| Sec. Slave   Disk : CDROM,Mode 2                                             |
+------------------------------------------------------------------------------+

PCI device listing.....
Bus No. Device No. Func No. Vendor ID   Device ID   Device Class           IRQ
--------------------------------------------------------------------------------
   0        1         1        8086        7111     IDE Controller       14/15
   0        1         2        8086        7112     Serial bus controller   NA
   0       10         0        10B7        9001     Network controller      12
   0       11         0        102B        051B     Display controller      NA



LILO boot:_

В ответ на это приглашение надо набрать, какую операционную систему Вы хотите загрузить, и нажать <Enter>. Название -- это короткое слово, обычно linux для Linux, и dos для Dos/Windows. Список установленных ОС можно получить, нажав <Tab>.

Обычно Lilo настроен нак, чтобы если пользователь ничего не набирает, через некоторое время (в RedHat -- 5 секунд) загрузить ОС "по умолчанию" (обычно таковой является Linux).

Даже если Linux -- единственная ОС, установленная на компьютере, все равно при загрузке появляется приглашение Lilo, так как это позволяет передать ядру некоторые параметры (например, "не используй второй ide-контроллер").

Если приглашение появилось не полностью, например, только "LI" или "LIL", значит с компьютером что-то не в порядке (обычно это следствие неправильной установки или переконфигурации системы).

Вход в систему

После ввода в приглашении Lilo слова "linux" будет произведена загрузка системы. При этом на экран будет выводиться весьма подробная информация о том, что происходит -- какая обнаружена аппаратура, какие запускаются системные сервисы и т.д.

eth0: 3Com 3c900 Boomerang 10Mbps/Combo at 0xd400, 00:60:08:6f:fa:9e, IRQ 12
  8K word-wide RAM 3:5 Rx:Tx split, autoselect/10baseT interface.
  Enabling bus-master transmits and whole-frame receives.
search inp.nsk.su
Starting portmapper: portmap
Mounting remote filesystems.
Starting system loggers: syslogd klogd
Starting at daemon: atd
Starting cron daemon: crond
Starting INET services: inetd
Starting sshd: ssh
Starting lpd: lpd
Starting NFS services: rpc.mountd rpc.nfsd
Starting amd: amd
Loading keymap: Loading /usr/lib/kbd/keymaps/i386/qwerty/ruok.map.gz
Loading symbolic screen map from file /usr/lib/kbd/consoletrans/koi2alt
Starting sendmail: sendmail
Starting gpm mouse services: gpm
Starting sound configuration: sound


Red Hat Linux release 5.2 (Apollo)
Kernel 2.0.36 on an i586

bobby login:_

В конце концов появится приглашение "login:" (на картинке "bobby" -- это название компьютера). В ответ на него надо ввести свое login-имя (например, "ivanov"), и нажать <Enter>. Затем появится приглашение ввести пароль ("Password:"). При вводе пароля на экране ничего не появляется (даже "*"). Если пароль введен правильно, то Вы попадете в командную строку Unix (см. картинку ниже), иначе -- появится сообщение "Login incorrect" и затем опять приглашение "login:".

Red Hat Linux release 5.2 (Apollo)
Kernel 2.0.36 on an i586

bobby login: ivanov
Password:
Last login: Fri Feb 12 11:57:30 on tty1                      
bobby:~% _

"bobby:~%" -- это приглашение shell (интерпретатора командной строки Unix). Здесь "bobby" -- имя компьютера, с которым Вы работаете, а за ним через двоеточие идет имя текущей директории, в данном случае -- "~", что обозначает домашнюю директорию.

Домашняя директория

В отличие от однопользовательских систем, таких, как Dos/Windows, пользователь не может писать свои файлы в произвольное место на диске. Для них каждому пользователю дается так называемая домашняя директория (home directory). По умолчанию только сам пользователь может писать в нее, а можно сделать и так, чтобы никто другой не смог даже читать из нее файлы. Именно в эту директорию пользователь и попадает сразу после входа в систему.


Как поменять пароль

Как поменять свой пароль

Для смены пароля служит команда passwd. Вначале она требует ввести текущий пароль, затем новый, и еще раз новый, для проверки. Причем пароль, как всегда, вводится вслепую.

bobby:~% passwd
Changing password for ivanov
(current) UNIX password: 
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully    
bobby:~% _

На то, каким должен быть пароль, накладываются определенные ограничения -- чтобы пароль не был слишком простым и не поддавался отгадыванию/подбору. В разных Unix'ах они варьируются, но общие правила таковы:

Кроме того, при смене новый пароль должен отличаться от старого, а Linux требует даже, чтобы пароль не был похож на старый. (Вообще говоря, идеальный пароль -- случайное сочетание букв и не-букв, но его очень сложно запомнить.)

Примеры плохих паролей:

ПарольНедостатки
ABCDEFТолько заглавные буквы
123456Только цифры
CretinСловарное слово
abc123Слишком простой


Виртуальные консоли и запуск X

Виртуальные консоли и запуск X

В тот момент, когда на экране появляется приглашение "login:", система уже полностью функциональна, даже без графической оболочки.

Даже в этот момент уже доступны многопользовательские возможности Unix, в том числе и сетевые (например, вход по telnet), но об этом позже. А в текстовом режиме Linux позволяет использовать так называемые виртуальные консоли, переключение между которыми производится комбинациями клавиш <Alt>+<F1>, <Alt>+<F2> и так до <Alt>+<F6>. Каждая виртуальная консоль -- как отдельный терминал, с тем лишь отличием, что нельзя взаимодействовать с ними всеми одновременно, а только по очереди.

Для запуска же графической системы X-Window (сокращенно просто "X") надо набрать команду startx. Для выхода из X следует нажать левую кнопку мыши на любом свободном месте экрана, в появившемся меню выбрать пункт "Exit Fvwm" и затем "Yes, Really Quit".


Файловая система ОС Unix

Файловая система ОС Unix

Файловая система в Unix организована в виде единого дерева директорий. Никаких букв дисков (a:, c:) здесь нет, а если используется несколько физических дисков (например, первый жесткий диск, второй, CD-ROM и т.д.) то они представляются отдельными ветвями на общем дереве.

Директории разделяются косой чертой "/" (а не обратной, как в Dos), например, "/home/inpunix/ivanov/" -- поддиректория "ivanov" в директории "inpunix" директории "home". Самая верхняя директория ("корневая") называется "/".

Какие разрешаются имена:

Хотя единственный символ, которого не может быть в имени, это "/" (поскольку это разделитель директорий), лучше не слишком увлекаться, и стараться не делать имен с пробелами, и не злоупотреблять различием в регистре букв -- это только внесет лишнюю путаницу. Также лучше не называть файлы по-русски.

В каждой директории есть поддиректория ".", являющаяся ссылкой на саму директорию и "..", являющаяся ссылками директорию уровнем выше.

Файлы, имена которых начинаются c точки (включая . и ..), считаются "неинтересными", и в листинге директории обычно не показываются.

Атрибуты файла

Для просмотра листинга директории используется команда ls, и с ключиком "-l" она выдает "детальный" листинг, со всеми атрибутами файла:

bobby:~% ls -l netscape.ps 
-rw-r--r--   1 ivanov   lab5       380609 Jan 15 15:29 netscape.ps  

Поля в строке имеют следующий смысл:

Права доступа

Для файлов
r
право читать файл.
w
Право модифицировать файл (писать в него).
x
Право исполнять файл -- устанавливается у программ.
Для директорий
r
право читать список файлов в директории.
w
право модифицировать директорию (создавать и удалять из нее файлы); требует также наличия X.
x
право использовать файлы из директории. Если у директории установлен только атрибут "x", то воспользоваться файлом можно, лишь зная заранее его имя, т.к. листинг директории посмотреть невозможно -- это полезно, например, чтобы home-директория была недоступна на чтение, а вот к поддиректории public_html мог бы обратиться любой.

Естественно, наличие атрибута "x" не дает права, к примеру, читать файл из такой директории, если у него нет атрибута "r".

Что любопытно, возможен режим доступа "rwx---rwx", когда "все остальные" могут делать с файлом что угодно, а члены группы -- нет (хотя, казалось бы, они тоже "остальные"), и даже "---rwxrwx", когда с файлом может что угодно делать любой, кроме владельца. Это происходит потому, что Unix сначала проверяет, к какой категории относится персона, запрашивающая доступ к файлу, а потом смотрит соответствующие права, не обращая внимания на остальные.


Вызов команд

Вызов команд

Для вызова команды достаточно просто набрать ее имя и нажать <Enter>.

Большинство команд "понимает" несколько (а некоторые -- и несколько десятков) ключей (или опций), модифицирующих их поведение. Опции предваряются символом "-". Например, команда ls выдает листинг текущей директории, а ls -l -- детальный листинг. Обычно символ ключа осмыслен -- это первая буква слова, обозначающего действие ключа; так "l" -- сокращение от "long".

Если надо указать несколько ключей, то их можно писать как поотдельности, так и вместе. Так, команды "ls -l -a" и "ls -la" эквивалентны.

Многие команды в Linux понимают так называемые длинные ключи (long options). Длинный ключ -- это не одна буква, а слово, предваряемое двойным дефисом. Например, "ls --all" -- то же самое, что и "ls -a". Длинные ключи можно указывать только раздельно.


Где взять описание команд?

Где взять описание команд?

Чтобы узнать, какие ключи понимает та или иная команда, самое лучшее -- посмотреть страницу руководства по ней (man-страницу, man-page). Это делается при помощи команды man. Например, "man ls" покажет страницу про команду ls. Большинство man-страниц состоят из следующих частей:

NAME
Имя команды
SYNOPSIS
Краткое описание -- как выглядит вызов команды.
DESCRIPTION
Описание -- зачем команда нужна и что она делает.
OPTIONS
Какие ключи можно указывать и их описание.
SEE ALSO
"Смотри также" -- ссылки на другие man-страницы. Ссылка вида "ln(1)" означает "страница про ln из раздела 1". Посмотреть страницу из указанного раздела (если в разных разделах есть страницы с одинаковыми именами) можно командой
man раздел страница
Например, "man 1 ln".

Выход из man -- буква "q".

Многие команды понимают также специальные ключи -h и --help и выдают краткую (впрочем, не всегда :) справку по своему использованию. Пример:

bobby:~% du --help
Usage: du [OPTION]... [FILE]...
Summarize disk usage of each FILE, recursively for directories.

  -a, --all             write counts for all files, not just directories
  -b, --bytes           print size in bytes
  -c, --total           produce a grand total
  -D, --dereference-args  dereference PATHs when symbolic link
  -h, --human-readable  print sizes in human readable format (e.g., 1K 234M 2G)
  -k, --kilobytes       use 1024-byte blocks, not 512 despite POSIXLY_CORRECT
  -l, --count-links     count sizes many times if hard linked
  -L, --dereference     dereference all symbolic links
  -m, --megabytes       use 1024K-byte blocks, not 512 despite POSIXLY_CORRECT
  -S, --separate-dirs   do not include size of subdirectories
  -s, --summarize       display only a total for each argument
  -x, --one-file-system  skip directories on different filesystems
      --help            display this help and exit
      --version         output version information and exit

Report bugs to fileutils-bugs@gnu.ai.mit.edu
bobby:~% _

В очень редких случаях у команды отсутствует man-страница:

bobby:~% man diff
No manual entry for diff                          
bobby:~% _

В таком случае имеет смысл попробовать альтернативную систему документации -- info, просто набрав, к примеру, "info diff". Info -- это гипертекстовая система, похожая на help-систему в Windows или Borland C (правда, чисто текстовая и потому не такая "красивая"). Даже если info-документации нет, а есть только man-страница, info покажет ее. Документацию по самой info можно посмотреть, набрав "info info".


Базовые команды для работы с файлами

Сводка команд

Команда UnixКоманда DosНазначение
Самые необходимые
ls dir Просмотр листинга директории, показ атрибутов файла(ов)
cd cd Переход в другую директорию
pwd cd Показать, какая директория сейчас текущая
cp copyКопирование файлов
mv ren Переименование/перемещение файлов
rm del Удаление файлов
Иные
mkdirmd Создание директории
rmdirrd Удаление директории
chmod Изменение прав доступа файла
ln -s Создание символьного линка
cat typeВыдача файла на экран
more moreПостраничный просмотр содержимого файла
less Более удобный просмотр файла
df Показ свободного места на диске
du Показ объема, занимаемого директорией или файлом

Просмотр листинга директории: ls

Первое, что требуется уметь -- это посмотреть список имеющихся файлов и их атрибуты. Для этого служит команда ls. Она всегда выводит список сортированным по алфавиту, если не указано иное.

cd, pwd, cp, mv, rm, mkdir, rmdir

С данной группой команд все очевидно. Следует лишь заметить, что mv может переименовывать не только файлы, но и директории, а cp и rm также прекрасно справляются с директориями, если им указать ключ "-r" (Recursive).

Замечание1: "cd" без параметров переходит в home-директорию.

Замечание2: для копирования файла с сохранением пометки о времени следует указывать команде "cp" ключ "-p".

Управление доступом к файлу: chmod

Команда вызывается так:

chmod <режим доступа> имя-файла

Пример: режим доступа -- восьмиричное число, по цифре на режим доступа для владельца, группы и остальных (1 - 'x', 2 - 'w', 4 - 'r', цифры складываются):

bobby:~% ls -l file
-rw-r--r--   1 ivanov   lab5          756 Feb 14 20:17 file  
bobby:~% chmod 775 file
bobby:~% ls -l file
-rwxrwxr-x   1 ivanov   lab5          756 Feb 14 20:17 file

Здесь устанавливается разрешение на чтение, запись и выполнение (4+2+1=7) для владельца и группы, и только чтение и исполнение (4+1=5) -- для всех остальных.

Можно также указывать режим доступа в символьном виде, например, u=rw,g=r,o= -- смысл очевиден. Подробнее про символьное указание режима доступа можно почитать на man-странице команды chmod.

Символьные линки: ln -s

Символьный линк -- это специальный вид файла, который не является собственно файлом, а есть ссылка на другой файл. Неким бледным подобием символьных линков являются "ярлыки" (файлы .lnk) в Windows95/NT.

Для создания символьного линка используется команда "ln" с ключом "-s", при этом указывается что слинковать и куда -- порядок параметров такой же, что в командах cp и mv. При просмотре листинга директории в "детальном" формате кроме имени самого линка показывается также, куда он указывает, а самым первым символом (тип файла) ставится "l".

bobby:/tmp/ex1% ls -l
total 1
-rw-r--r--   1 ivanov  lab5  756 Feb 14 20:43 file.txt
bobby:/tmp/ex1% ln -s file.txt locallink
bobby:/tmp/ex1% ln -s /etc/fstab abslink
bobby:/tmp/ex1% ln -s ../../etc/termcap rellink
bobby:/tmp/ex1% ls -l
total 1
lrwxrwxrwx   1 ivanov  lab5   10 Feb 14 20:45 abslink -> /etc/fstab
-rw-r--r--   1 ivanov  lab5  756 Feb 14 20:43 file.txt
lrwxrwxrwx   1 ivanov  lab5    8 Feb 14 20:44 locallink -> file.txt
lrwxrwxrwx   1 ivanov  lab5   17 Feb 14 20:45 rellink -> ../../etc/termcap

Просмотр содержимого файла

cat просто выдает все содержимое файла на экран. Если файл большой, то верхняя его часть просто "уедет" за экран.

more выдает файл "по частям": сначала первый экран, а потом можно скроллировать вниз по экрану (нажимая <Пробел>) или по строке (<Enter>).

less -- это весьма удобная программа просмотра текстовых файлов, позволяющая скроллинг в обоих направлениях, поддерживающая поиск по файлу и еще много чего. Именно less используется в Linux для просмотра man-страниц (в других Unix'ах в этих целях обычно применяется более древняя more).


Возможности, упрощающие работу с командной строкой

Возможности, упрощающие работу с командной строкой

Поскольку работа с Unix -- это в значительной степени взаимодействие с командной строкой, для облегчения этого процесса существует несколько весьма приятных удобств.

<Tab> может "дописать" имя файла или команды.
Если набрать часть имени файла или команды и нажать <Tab>, то остальная часть имени "допишется" автоматически, если начало однозначно определяет имя.

Быстрое копирование текста
Отметив фрагмент текста в консоли или в окне X, можно вставить его как набрав с клавиатуры, нажав среднюю кнопку мыши (если мышь двухкнопочная -- две одновременно в X, или правую кнопку в консоли).

Текст, "уехавший" за верх экрана, еще не исчезает.
Нажав <Shift>+<PgUp> можно проскроллировать консоль или окно xterm в X назад.


Начальные навыки: выход из системы

Выход из системы

Для завершения сессии надо набрать команду logout. После этого на экране должно появиться приглашение для входа в систему.

bobby:~% logout


Red Hat Linux release 5.2 (Apollo)    
Kernel 2.0.36 on an i586

bobby login: _

Хотя компьютеры под Unix (и Linux в том числе) обычно не выключают неделями и месяцами, иногда возникает потребность перезагрузить машину (например, под другую ОС). Самый простой способ сделать это -- нажать <Alt>+<Ctrl>+<Del>. При этом Linux корректно завершит работу и перезагрузит ПК.

Если же надо выключить машину, то можно также нажать <Alt>+<Ctrl>+<Del>, дождаться перезагрузки, и после появления приглашения "LILO boot:" можно смело выключать питание (но до того, как начнется загрузка ОС!!!).


Практические задания

  1. Включить компьютер и загрузить Linux.
  2. Войти в систему.
  3. Поменять свой пароль.
  4. Выдать long-листинг корневой директории, отсортированный по времени модификации.
  5. Сделать в своей home-директории поддиректорию tests.
  6. Скопировать файл /etc/fstab в эту новую директорию. Попробовать переместить файл /etc/passwd туда же. Что получится? И почему?
  7. Установить на tests/fstab такие права доступа, чтобы никто кроме владельца не мог его прочитать.
    Замечание. Для проверки есть пользователь с именем "donald" и паролем "duck". "Превратиться" в него можно, набрав "su donald" и затем его пароль.
  8. Установить на tests/ такие права доступа, чтобы любой мог посмотреть список файлов, но никто кроме владельца не мог ни войти в нее, ни записать что-либо.
  9. Установить на tests/ такие права доступа, чтобы любой мог делать с ней все, что угодно.
  10. Сделать в home-директории символьный линк на файл /var/log/dmesg. Попробовать просмотреть его содержимое командой less.
  11. Сделать в home-директории символьный линк на файл /var/log/messages. Попробовать просмотреть файл-линк командой less. Что получится, и почему?
  12. Удалить из home-директории поддиректорию tests/ вместе с содержимым одной командой.
  13. Сколько свободно места на локальном диске?
  14. Прочитав man-страницу по команде du, показать объем, занимаемый всей директорией /etc так, чтобы объемы поддиректорий из /etc не печатались.
  15. Выйти из системы.
  16. Правильным образом выключить компьютер.

----------------------------------------

© 1999 Дмитрий Болховитянов