Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#15| Dragon God
Demon's Souls |#14| Flamelurker
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Сэйдж Рас Весь текст 822.4 Kb

Приемы профессиональной работы в Unix

Предыдущая страница Следующая страница
1 ... 53 54 55 56 57 58 59  60 61 62 63 64 65 66 ... 71
личества дорожек на дюйм), символов ss или ds (single-sided - односто-
ронняя или double-sided - двусторонняя дискета) и цифры 8 или 9 (число
секторов).

     Мы видим по индексным дескрипторам,  что устройство fd0 связано с
устройствами fd048 и fd048ds9.  Самым информативным  именем  (и  самым
трудным при вводе с клавиатуры) является имя fd048ds9. Оно точно выра-
жает, к какому устройству и типу носителя мы обращаемся. Для того что-
бы  упростить указание этого имени,  устройство fd048ds9 связывается с
более короткими именами. Все три имени файла являются корректными.

     Следующий список получен на машине AT,  в  которой  имеется  уст-
ройство высокой плотности:

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

|
| 102 brw-rw-rw-  3 bin  bin  2,  7 Jun 17 14:28 /dev/fd0
|  95 br--r--r--  2 bin  bin  2,  3 Jun  6 09:23 /dev/fd048
|  93 br--r--r--  1 bin  bin  2,  2 Jun  6 09:23 /dev/fd048ds8
|  95 br--r--r--  2 bin  bin  2,  3 Jun  6 09:23 /dev/fd048ds9
|  92 br--r--r--  1 bin  bin  2,  0 Jun  6 09:23 /dev/fd048ss8
|  94 br--r--r--  1 bin  bin  2,  1 Jun  6 09:23 /dev/fd048ss9
| 102 brw-rw-rw-  3 bin  bin  2,  7 Jun 17 14:28 /dev/fd096
| 102 brw-rw-rw-  3 bin  bin  2,  7 Jun 17 14:28 /dev/fd096ds15
|  99 brw-rw-rw-  3 bin  bin  2, 11 Jun 26 19:34 /dev/fd1
|  99 brw-rw-rw-  3 bin  bin  2, 11 Jun 26 19:34 /dev/fd148
|  97 br--r--r--  1 bin  bin  2, 10 Jun  6 09:23 /dev/fd148ds8
|  99 brw-rw-rw-  3 bin  bin  2, 11 Jun 26 19:34 /dev/fd148ds9
|  96 br--r--r--  1 bin  bin  2,  8 Jun  6 09:23 /dev/fd148ss8
|  98 br--r--r--  1 bin  bin  2,  9 Jun  6 09:23 /dev/fd148ss9
| 103 brw-rw-rw-  2 bin  bin  2, 15 Jun  6 09:23 /dev/fd196
| 103 brw-rw-rw-  2 bin  bin  2, 15 Jun  6 09:23 /dev/fd196ds15
|

     Если мы посмотрим на записи с индексным дескриптором 102, начиная
с середины списка,  то увидим прогрессирующее упрощение имен  по  мере
продвижения  к  первой  записи  - устройству 0,  которое имеет высокую
плотность записи по умолчанию.  Для того чтобы обратиться к нему как к
устройству  с  низкой  плотностью записи,  необходимо использовать имя
fd048, а не fd0. Поскольку большинство используемых гибких дисков име-
ют  низкую  плотность  записи,  то  имя fd048ds9 является умолчанием в
программе mntf.

     Строка 17 соответствует опции -1 для указания устройства 1 вместо
устройства 0. Строки 18-22 проверяют, сиществует ли каталог для монти-
рования второго устройства.  Если вы используете два гибких диска  од-
новременно,  то  вы не можете монтировать их оба в один и тот же ката-
лог. Для разрешения этой проблемы программа mntf использует для монти-
рования устройства 1 каталог /mnt1,  а не /mnt.  Если каталог /mnt1 не
существует, по умолчанию используется каталог /mnt, и все хорошо, если
вы используете только устройство 1. Однако следует избегать монтирова-
ния одного гибкого диска на место второго.  Вы можете получить непред-
виденные результаты. Если вы собираетесь монтировать два гибких диска,
убедитесь, что у вас есть и каталог /mnt, и /mnt1.

     Строка 23 делает монтируемую файловую  систему  доступной  только
для чтения в случае,  если была указана опция -r,  что выполняется до-
бавлением символов -r к имени каталога.  Это не является частью  имени
каталога,  но  когда shell выполняет обработку команды,  пробела между
именем каталога и -r достаточно, чтобы распознать -r как опцию.

     Строка 24 соответствует опции -s и присваивает переменной  SYSTEM
значение sysv.  Это означает, что нужно использовать другие соглашения
об именах устройств.

     Строки 25-34 выполняют проверку на ошибки в командной строке. Лю-
бая опция, отличная от уже проверенных, является ошибкой, поэтому все,
что соответствует улавливающей ветке оператора case (*), считается не-
допустимой опцией. В этом случае выводится синтаксическая подсказка, и
программа завершается.

     В строках 39-42 выполняется вся основная  работа.  Оператор  case
действует в соответствии со значением переменной SYSTEM. Если оно рав-
но "sysv", выполняется строка 40. В противном случае выполняется стро-
ка 41 для системы XENIX. Обратите внимание, что в нашей версии команд-
ного файла mntf в строке sysv имеется только переменная с номером уст-
ройства.  Если вы используете System V,  вы можете добавить переменную
для указания плотности записи или другие параметры, которые вам нужны.

     Строка 41  выполняет  версию  команды,  рассчитанную  на  систему
XENIX.  Переменная CMD содержит, как мы отмечали, команду монтирования
(mount)  или  размонтирования  (umount).  Последовательность  символов
/dev/fd указывает файл устройства для гибкого диска.  Переменная DRIVE
равна 0 или 1.  Переменная DENSITY указывает устройство с высокой  или
низкой плотностью записи.  Если должна быть выполнена команда монтиро-
вания, переменная DIR содержит каталог. Если выполняется размонтирова-
ние, значение переменной DIR равно нулю.

     ЗАМЕЧАНИЕ ПО ВОПРОСУ БЕЗОПАСНОСТИ

     Обычно только суперпользователь (root) может монтировать файловую
систему.  В  больших  системах  это  имеет смысл.  Однако на небольших
настольных машинах это может быть слишком ограничивающим фактором. Для
того  чтобы  обойти это требование,  используйте возможность изменения
прав доступа.  Чтобы позволить любому пользователю  выполнять  команды
монтирования и размонтирования, примените следующие команды:

# chown root /etc/mount  <- делает пользователя root владельцем
                            модуля /etc/mount
# chmod 4511 /etc/mount     и дает возможность выполнять команду mount
                            всем пользователям

# chown root /etc/umount <- делает то же самое для команды
# chmod 4511 /etc/umount    размонтирования

     Эти команды  облегчают всем пользователям работу с гибким диском,
но одновременно открывают огромную дыру в защите системы. Если кто-ли-
бо уже проложил тропинку прав доступа на гибкий диск (см. главу 9), то
монтирование файловой системы продолжит эту тропинку в главную систему
и позволит такому пользователю стать суперпользователем всей системы в
целом просто с гибкого диска!

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

ИМЯ: mntlook
---------------------------------------------------------------------------

        mntlook     Поиск файловых систем на устройствах

     НАЗНАЧЕНИЕ

     Просмотр всех файлов дисковых устройств и обнаружение всех файло-
вых систем, включая немонтированные.

     ФОРМАТ ВЫЗОВА

        mntlook

     ПРИМЕР ВЫЗОВА

mntlook /dev/hd*

     Поиск файловых систем на всех жестких дисках

     ТЕКСТ ПРОГРАММЫ

1   static char id[] =
    "@(#) mntlook v1.0 Look for mounts Author: Russ Sage";
                       Поиск файловых систем

3   #include
4   #include
5   #include
6   #include
7   #include

9   #define BSIZ 512

11  main(argc,argv)
12  int argc;
13  char *argv[];
14  {
15      struct filsys sb;
16      int d, dev;
17      char buf[BSIZ];

19      for (d = 1; d < argc; d++)
20      {
21          if (argv[d][0] == '-')
22          {
23              printf("mntlook: invalid argument %s\n", argv[d]);
24              printf("usage: mntlook device [device ...]\n");
25              continue;
26          }
27          if ((dev = open(argv[d],O_RDONLY)) < 0)
28          {
29              sprintf(buf, "cannot open %s",argv[d]);
                              невозможно открыть
30              perror(buf);
31              continue;
32          }

34          /* throw away first block */
               обойти первый блок
35          if (read(dev, &sb, sizeof(sb)) == -1)
36          {
37              perror("cannot read block 0");
                        не читается блок 0
38              continue;
39          }

41          /* block 1 is the superblock */
               блок 1 является суперблоком
42          if (read(dev, &sb, sizeof(sb)) == -1)
43          {
44              perror("cannot read block 1");
                        не читается блок 1
45              continue;
46          }

48          if (sb.s_magic == S_S3MAGIC)
49          {
50              printf("\nDEV: %s --> VALID file system\n",argv[d]);
51              printf("filsys: %s\n",sb.s_fname);
52              printf("pack  : %s\n",sb.s_fpack);
53              printf("type  : %s byte block\n",
54                     (sb.s_type == S_B512) ? "512" : "1024");
55              printf("magic : %lx\n",sb.s_magic);
56          }

58          close(dev);
59      }
60  }

       ОПИСАНИЕ

                  ЗАЧЕМ НАМ НУЖНА ПРОГРАММА mntlook?

     Файловые системы являются сердцевиной системы UNIX.  Сама система
не существует вне файловой системы,  а расширенные возможности системы
обеспечиваются файловой системой.

     Даже несмотря на то,  что файловые системы настолько важны,  UNIX
не  имеет никаких средств для обнаружения файловых систем как таковых.
Не имеется даже средств, которые могли бы сообщить нам, какая информа-
ция находится в суперблоках.

     Нам необходимо  универсальное  средство  для  работы  с файловыми
системами.  Оно должно обнаруживать и идентифицировать суперблоки, на-
ходящиеся  на устройствах.  Заметим,  что операция открытия устройства
обычно требует наличия привилегий суперпользователя.

                         ЧТО ДЕЛАЕТ mntlook?

     Программа mntlook  предназначена для просмотра содержимого файлов
устройств и поиска суперблока.  (Мы вкратце  рассматривали  суперблоки
ранее).  Когда суперблок обнаружен, из него извлекается и выводится на
экран имя файловой системы,  имя дискового пакета, используемый размер
блока и идентификационный "магический номер".

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

     Давайте рассмотрим,  каким образом файловые системы связаны с фи-
зическим носителем.  К каждой машине подсоединено фиксированное  число
периферийных устройств.  Для работы со сменными носителями в UNIX реа-
лизована концепция монтированного и немонтированного файлового  прост-
ранства. Но первым шагом является установка пакета дисков (или гибкого
диска) в дисковое устройство.  После этого  можно  выполнять  операции
чтения  и записи на физических носителях,  указывая определенные имена
устройств.

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

     Для обращения непосредственно к физическому носителю используются
такие команды, как, например, команда "od -c /dev /rfd0", которая дам-
пирует неструктурированный гибкий диск.  Одной из команд,  которые не-
посредственно помещают данные на устройство, является команда "cp file
/dev/rfd0". Область данных начинается с самого первого байта на гибком
диске.  Такие  данные несовместимы с командами tar,  cpio или файловой
системой.

     Для обращения к  файловой  системе  используется  команда  "mount
/dev/fd0 /mnt".  Начиная с этого момента, все обращения к данному уст-
ройству выполняются через каталог /mnt. Важно то, что непосредственный
доступ к файлу устройства является операцией более низкого уровня, чем
операции файловой системы,  что позволяет прочитать информацию  о  су-
Предыдущая страница Следующая страница
1 ... 53 54 55 56 57 58 59  60 61 62 63 64 65 66 ... 71
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (52)

Реклама