Выбрать главу

Для замены в файле пароля passwd всех двоеточий символами табуляции, двоеточие следует заключить в кавычки и указать в строке замены восьмеричное значение символа табуляции, которое равно '011'. Файл станет более удобным для чтения. Сначала приводится файл passwd, а затем команда с утилитой tr, которая выполняет задачу.

$ pg passwd

halt:*:7:0:halt:/sbin:/sbin/halt

maiclass="underline" *:8:12.maiclass="underline" /var/spool/maiclass="underline"

news:*:9:13:news:/var/spool/news:

uucp:*:10:14:tmcp:/var/spool/uucp:

$ tr -s "[:]" "[\011]" < passwd

halt * 7 0 halt /sbin /sbin/halt
mail * 8 12 mail /var/spool/mail
news * 9 13 news /var/spool/news
uucp * 10 14 uucp /var/spool/uucp

С другой стороны, аналогичного результата можно добиться с помощью следующей команды, где указывается сокращенная запись символа табуляции:

$ tr "[:]" "[\t]" < passwd

12.1.10. Сравнение с несколькими символами

Для выполнения сравнения с несколькими символами применяется формат [character*n]. Ниже приводится содержимое файла, описывающего жесткие диски системы. В файле содержатся диски, которые зарегистрированы или распознаны системой. Первый столбец содержит числа. Если этот столбец не состоит из одних нулей, то регистрируется соответствующий диск во втором столбце.

Иногда надоедает наблюдать в подобных списках нули, поэтому заменим их символом, который привлекает к себе внимание. Тогда сразу становится видно, какие диски присутствуют в системе, а какие -oтсутствуют. Ниже приведена часть содержимого файла.

$ pg hdisk.txt

1293 hdisk3

4512 hdisk12

0000 hdisk5

4993 hdisk12

2994 hdisk7

При просмотре файла становится ясно, что имеется один жесткий диск, который не зарегистрирован. Для замены всех нулей, допустим, звездочками можно воспользоваться шаблоном [0*4], который означает поиск соответствия, по крайней мере, четырем нулям. При этом строка замены содержит только звездочки. Ниже приводится соответствующая команда и результат выполнения подобной фильтрации:

$ tr "[0*4]" "*" < hdisk.txt

1293 hdisk3

4512 hdisk12

**** hdisk5

4993 hdisk12

2994 hdisk7

Теперь, просматривая приведенный выше файл, можно сразу узнать, какой диск не зарегистрирован в системе.

12.2. Заключение

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

Часть 3

Регистрация в системе

ГЛАВА 13

Регистрация в системе

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

В этой главе рассматриваются следующие темы:

   • процесс регистрации

   • файл /etc/profile

   • файл $HOME/.profile

   • настройка пользовательского файла $HOME/.profile

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

[1] [ 2 ] [3] [4] [ 5 ] [ 6 ] [ 7 ]

kvp:JFqMmk9.uRioA:405:413:К.V. Pally:/home/sysdev/kvp:bin/sh dhw:hi/G4UlCUd9aI, B/OJ;407:401:D. Whitley:/home/dept47/dhw:/bin/sh aec:IL.gHtxJ9x. Xt, B/GI:408:401:A. E.Cloody:/b_user/dept47/aec:/bin/sh gdw:iLFu9BB8RNjpc, B/MK:409:401:G. D.Wiicom:/b_user/dept47/gdw:/bin/sh

Рассмотрим некоторые поля файла. Первое поле содержит регистрационное имя, второе поле — зашифрованный пароль, пятое поле — полное имя пользователя, шестое поле — начальный каталог данного пользователя, а седьмое поле описывает интерпретатор shell, применяемый пользователем. В данном случае параметр "/bin/sh" определяет интерпретатор shell, устанавливаемый по умолчанию. Обычно используется интерпретатор Bourne shell.