Опубликован: 21.11.2006 | Уровень: специалист | Доступ: платный
Лекция 2:

Использование ОС Linux в качестве сервера электронной почты

Оболочка GNU bash

Для выполнения команд или программ пользователя ядру необходим макропроцессор для их обработки. В мире UNIX макропроцессор называют оболочкой (shell). Наиболее широко распространена оболочка Bourne shell, названная так в честь своего создателя Стефена Боурна (Stephen Bourne). Оболочка Bourne shell — это программа, которая запускается отдельным процессом в системе и организует интерактивный сеанс работы с пользователем. При этом пользователь может вводить команды из командной строки. Командами могут выступать прикладные программы, команды оболочки или программные файлы, содержащие команды оболочки (так называемые файлы сценариев ). Запуск выполняемых программ оболочка осуществляет в отдельном новом процессе. Это позволяет каждой программе, запущенной из оболочки, иметь собственный процесс в системе, который отображает ее текущее состояние.

Разработчики проекта GNU знали, как велика потребность в хорошей оболочке для работы открытого кода в UNIX-подобной операционной среде. Разработанная ими программа оболочки, была названа bash, что означает Bourne-Again SHell. Оболочка bash полностью совместима со своей первой версией, называемой просто sh. В оболочку bash также включены различные возможности из других оболочек, в частности оболочек C shell ( csh ) и Korn shell ( ksh ). В настоящее время в подавляющем большинстве версий ОС Linux по умолчанию принята оболочка bash. Текущая версия bash 2.03.

Оболочка предоставляется пользователю после его регистрации в системе под управлением ОС Linux согласно его учетной записи, которая описана в файле /etc/passwd. Обычно эта запись выглядит примерно так:

riley:x:504:506:Riley M.:/home/riley:/bin/bash

Здесь двоеточия используются для разделения полей. В первом поле указано имя пользователя системы. Во втором — хранится в зашифрованном виде пароль пользователя. В данном конкретном примере версия ОС Linux использует так называемые "теневые" пароли. При этом настоящий пароль шифруется и помещается в отдельный файл. Третье и четвертое поля отображают идентификатор пользователя и группы, соответственно. В пятом поле указывается настоящее имя пользователя. Далее, в шестом поле назначается рабочий каталог пользователя, к которому ему будет предоставляться доступ сразу после входа в систему. И в последнем поле задается оболочка, с которой пользователь будет работать по умолчанию. В нем просто указывается, откуда запускать оболочку для пользователя (в нашем случае bash ).

Оболочку bash можно настраивать определенным образом. Ее конфигурирование осуществляется несколькими файлами. Когда оболочка bash вызывается процессом регистрации в системе, то выполняется любая команда, записанная в файле /etc/profile. Эти операции действительны для всех пользователей, с оболочкой по умолчанию bash, указанной в файле passwd. В листинге 2.9 показан файл /etc/profile, сформированный по умолчанию для системы Mandrake 6.0 Linux.

1 # /etc/profile
2
3 # System wide environment and startup programs
4 # Functions and aliases go in /etc/bashnc
5
6 PATH="$PATH:/usr/X11R6/bin"
7 PS1="[\u@\h \W]\\$ "
8
9 # In bash2 we can't define a ulimit for user :-(
10 [ "$UID" = "0" ] && {
11 ulimit -c 1000000
12 }
13
14 if [`id -gn`= `id -un` -a `id -u`-gt 14 ]; then
15 umask 002
16 else
17 umask 022
18 fi
19
20 USER=`id -un`
21 LOGNAME=$USER
22 MAIL="/var/spool/mail/$USER"
23
24 HOSTNAME=`/bin/hostname`
25 HISTSIZE=1000
26 HISTFILESIZE=1000
27 export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL
28
29 for i in /etc/profile.d/*.sh ; do
30 if [ -x $i ]; then
31 . $i
32 fi
33 done
34
35 unset i
Листинг 2.9. Пример файла /etc/profile

Основная функция файла /etc/profile — создание новых переменных окружения для установки параметров сеанса работы с оболочкой, которые могут использоваться приложениями, запускаемыми из этой оболочки. Обратите внимание на переменную окружения MAIL в строке 22. Как администратор системы электронной почты вы должны знать механизм ее работы. Эта переменная указывает путь почтовой программе к почтовому ящику данного пользователя.

После выполнения команд из файла /etc/profile оболочка bash ищет еще три конфигурационных файла в рабочем каталоге пользователя. Это файлы .bash_profile, .bash_login и .profile. Все они должны находиться в рабочем каталоге пользователя и, следовательно, могут быть настроены для определенного пользователя. Имеется еще один файл конфигурации — .bash_logout. Этот файл сценария выполняется по окончании сеанса работы с пользователем. Конфигурируя файлы сценариев для отдельных пользователей, системный администратор может добиться оптимальной работы оболочки bash для каждой системы.

Компилятор GNU gcc

Если планируется установка программного обеспечения, которое распространяется в исходном открытом коде, то понадобится специальная программа-компилятор для создания из него выполняемого файла. Все программы для ОС Linux, описываемые в этом курсе, написаны на языке программирования С. Таким образом, на вашем сервере Linux должен быть установлен компилятор языка С. Самый широко распространенный компилятор для Linux — это GNUкомпилятор языка С ( gcc ).

У него довольно интересная предыстория. Группа проекта GNU разработала и распространила первую версию компилятора gcc в начале 1990 года. Продолжив развитие gcc, организаторы проекта GNU выпустили версию 2.0, периодически улучшая ее вплоть до версии 2.8, которая вышла в 1997 году. В то же время другая группа разработчиков работала над созданием компилятора для языка С++, названного egcs (произносится как "eggs"). Работы над gcc после выхода версии 2.8 были направлены на объединение усилий с проектом egcs. После этого вышла версия egcs 1.0, объединяющая в одном пакете компиляторы языков С и С++.

К сожалению, проект egcs оказался недолговечным (вышла только еще одна версия egcs 1.1 ). В настоящее время оба проекта ( gcc и egcs ) снова вернулись к идеям, реализованным в gcc. На момент выхода этого курса последней версией gcc была 2.95. В ней поддерживаются компиляторы и для языка С, и для языка С ++. Вероятно, для усложнения жизни себе и другим некоторые распространители Linux продолжают называть этот компилятор egcs версии 2.95. Остается надеяться, что это недоразумение вскоре будет устранено.

Чтобы определить, какая версия gcc используется в вашей системе, в командной строке задайте опцию --version:

[rich@shadrach rich]$ gcc --version 
pgcc-2.91.66
[rich@shadrach rich]$

Здесь приведен пример для системы Mandrake 6.0 Linux, с использованием компилятора gcc версии 2.91 с уровнем обновлений 66.

Valentin Diduk
Valentin Diduk
Украина, одесса, кпи, 2010
Евгений Олабин
Евгений Олабин
Беларусь, Гродно