Для выполнения сравнения с несколькими символами применяется формат [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.
Существуют и другие типы файлов passwd. В одном из вариантов поле passwd фактически находится в другом файле. Однако приведенный выше формат является наиболее распространенным.
После успешной регистрации выполняются два файла среды. Первым является файл /etc/profile, а вторым — файл .profile, расположенный в начальном каталоге $HOME.
Существуют и другие исполняемые файлы инициализации, однако в данном случае нас интересуют лишь файлы профилей.
13.1. Файл /etc/profile
Информация файла профиля, находящегося в каталоге /etc, автоматически считывается при регистрации каждого пользователя. Этот файл обычно содержит: • глобальные или локальные переменные среды;
• информацию о пути к файлам в переменной path;
• параметры терминала; а также
• меры безопасности;
а совет дня или сведения о причинах отказа.
Далее приводится краткое объяснение перечисленных выше пунктов.
Некоторые глобальные переменные среды устанавливаются так, что к ним обеспечивается доступ со стороны пользователей, а также shell–процессов и приложений.
В переменной path хранится местоположение каталогов, включающих исполняемые файлы, библиотеки и простые файлы, благодаря чему их можно быстро найти.
Параметры терминала содержат наиболее общие характеристики используемого терминала.
Команды, обеспечивающие меры безопасности, описывают режимы создания файлов или удвоенные командные строки регистрации, используемые для доступа к секретным областям системы.
Совет дня реализован в виде текстового файла, содержащего описания любых предстоящих событий. Пользователи получают сообщения об этих событиях при регистрации в системе. Кроме того, этот файл может включать любые сообщения относительно причин отказа в той или иной ситуации.
Ниже приводится содержимое файла /etc/profile, который рассматривается далее.
$ pg /etc/profile
#!/bin/sh
#
trap "" 2 3
#Установка LOGNAME export LOGNAME
#установка дополнительных путей MAN MANPATH=/usr/opt/sybase/man
export MANPATH
# Установка TZ
if [ -f /etc/TIMEZONE ]
then
. /etc/TIMEZONE
fi
# Установка TERM
if [ -z "$TERM"]
then
TERM=vt220 # для стандартного асинхронного терминала/консоли
export TERM
fi
# Разрешение пользователю на прерывание отображения исключительно совета дня
trap "trap ' '2" 2
if [ -f /usr/bin/cat ] ; then
cat -s /etc/motd
fi
trap "" 2
if [ -f /usr/bin/mail]; then
if mail -e; then
echo "Hey guess what? you have mail"
fi
fi
#установка значения umask для более безопасного осуществления операций
umask 022
#установка сред
SY$HOME=/appdvb/menus
ASLBIN=/asl_b/bin
UDTKOME=/dbms_b/ud
UDTBIN=/dbms_b/ud/bin
PAGER=pg
NOCHKLPREQ=1
PATH=$PATH:$UDBIN:$ASLBIN
export PATH UDTHOME UDTBIN PAGER NOCHKLPREQ SY$HOME
trap 2 3
# Установка переменной SAVEDSTTY так, чтобы переменную можно было
# использовать для восстановления
# настроек stty при выходе из системы аудита.
SAVEDSTTY=`stty -g`; export SAVEDSTTY
# регистрация всех связей в syslog
logger -p lосаl7.info -t login $LOGNAME 'tty'
trap 'logger -p local7.info -t logout $LOGNAME 'tty'' 0
# отмена создания файлов дампа ядра
ulimit -с D
#
# проверка, зарегистрированы ли пользователи более двух раз, не считая…
case $LOGNAME in
idink | psalon | dave)
;;
*)
PID-$($); export PID
Connected=`who | awk '{print $1}' | fgrep -xc ${LOGNAME}`
if [ "$Connected" -gt 2 ]
then
echo
echo 'You are logged in more than twice.'.
echo `who -u | grep $LOGNAME`
echo
echo 'Enter <CR> to exit \c'
read FRED
kill -15 $PID
fi
;;
esac