Лекция 6
Базова настройка на системата. Конфигурационна директория /etc . Структура на директорията. Скриптове за начално зареждане.
Както всяка операционна система и Линукс се нуждае от настройка след неговото инсталиране. Едно от най-големите удобства на тази операционна система е лесното конфигуриране чрез прости текстови файлове. Тези файлове се намират в директорията /etc. Тази директория съдържа множество файлове и поддиректории, като тези поддиректори обединяват конфигурационни файлове по някакъв признак. Например всички скриптове, чрез които се пускат и спират процесите, съответно при пускане и спиране на компютъра, се намират в поддиректорията rc.d. Поддиректорията X11 пък обединява конфигурационните файлове на графичния сървър и т.н. В тази лекция ще ви запозная с най-важните файлове и поддиректори намиращи се в конфигурационната директория /etc.
Ще разделя типовете конфигурационни файлове в пет основни групи: настройка на мрежата, настройка на шела, настройка на потребителите, настройка на модулите и настройка на пускането и спирането на операционната система.
1.НАСТРОЙКА НА МРЕЖАТА
Файловете с които се настройва мрежовата конфигурация на операционната система са няколко:
hosts – файла описва имената на компютрите, като ги свързва с техните IP адреси. На всеки компютър може да се присвои и кратко име или псевдоним. Формата на файла е следния:
#IP address computer name computer alias
127.0.0.1 localhost
192.168.7.102 server514.mgu.bg server514
192.168.7.103 class514pc1.mgu.bg class514-1
... ... ...
192.168.7.109 class514pc8.mgu.bg class514-8
Първият ред е задължителен и описва т.нар. loopback на компютъра. Редове започващи с # се считат за коментар.
resolv.conf – използването на горния файл е възможно само за малки мрежи или за мрежи нямащи DNS сървър, който да транслира имената в IP адреси. Този метод не може да се използва за хостове в Интернет, където описанието им би било непосилна задача. Затова за Интернет се нуждаем от DNS сървър. Файла resolv.conf служи за описанието на DNS сървъруте към които трябва да се върже компютъра, за да транслира името в IP адрес. Формата на файла е следния:
search mgu.bg
nameserver 217.75.128.2
nameserver 217.75.128.9
След промяната му се налага изпълнението на командата
#killall -HUP inetd
за да влязат промените в сила.
HOSTNAME – описва името на компютъра. Състои се само от един ред, който има следния вид:
server514.mgu.bg
host.conf – управлява начина по който работи клиента транслиращ името в IP адрес. Състои се от няколко директиви. Формата е следния:
order hosts, bind
multi on
Тук order и multi са директивите, а hosts, bind и on, техни опции. Пълна информация за файла може да се намери на в man страниците на Линукс.
hosts.allow, hosts.deny, hosts.equiv – описват хостовете на които е позволено или не да се свързват към компютъра. Файла hosts.equiv описва доверените хостовете, на тях е позволено да извършват отдалечени операции чрез командите rlogin и rsh.
inetd.conf – файл в който се описват за кои услуги да отговаря inet демона. Разликата между използването му и нормалното стартиране на сървър се състои в това, че inet демона не стартира услугата, докато тя не се заяви. Това е полезно за услуги, които се използват рядко, тъй като е по-бавно от стандартния начин, но пък се пести оперативна памет. Формата на файла е следния:
#име_на_услуга тип_на_сокета прот. флагове потреб. път_към_сървъра арг.
ftp stream tcp nowait root /usr/sbin/tcpd proftpd
talk dgram udp wait root /usr/sbin/tcpd in.talkd
Име_на_услуга е името на услугата описана във файла services, тип_на_сокета зависи от протокола и е stream за TCP протокол и dgram за UDP. Флагове е поле за задаване параметри на inet демона. Потребител е поле задаващо с какви привилегии ще работи услугата. Път_към_сървъра е пълният път към сървъра обслужващ услугата. Поради проблеми със сигурността се използва специален wrapper наречен tcpd, вместо истинския сървър. Аргументи, са аргумента подаден на tcpd, като тук се задава истинския сървър отговарящ за дадена услуга.
./rc.d/rc.inet1 – шел скрипт, който чете файла rc.inet1.conf и настройва IP адреса на компютъра, IP адреса на гейтуея и мрежовата маска. Описанието им се извършва във файла rc.inet1.conf и е независимо за всяка една мрежова карта. След промените трябва да се изпълни командата:
#./rc.inet1 stop
#./rc.inet1 start
за да влязат промените в сила.
2.НАСТРОЙКА НА ШЕЛА
Настройката на обкръжението се извършва основно от файла /etc/profile. Той се зарежда всеки път когато някой потребител влезе в системата. Чрез него може да се променят глобалните променливи на обкръжението и да се задават нови, които ще влязат в сила при следващ вход. Последната версия (9.1) на Slackware използва този файла за да зареди скриптовете намиращи се в поддиректорията profile.d. Тази директория съдържа няколко шел скрипта, които отговарят за различна част от конфигурацията.
lang.sh, lang.csh – в този скрипт може да се променя езика на интерфейса на операционната система и нейната локализация. За да излизат съобщенията на български език е достатъчно да се промени променливата LANG=bg_BG.CP1251. По подразбиране тази променлива е en_EN.
gtk+.sh, gtk+.csh – скрипт който задава параметри отнасящи се за графичната библиотека GTK.
kde.sh, kde.csh – скрипт задаващ променливите на обкръжение, които се използват от KDE и неговите програми.
qt.sh, qt.csh - скрипт който задава параметри отнасящи се за графичната библиотека QT.
/etc/shells – показва валидните командни интерпретатори.
3. НАСТРОЙКА НА ПОТРЕБИТЕЛИТЕ
Файловете, които отговарят за това вече са разглеждани и затова тук ще бъдат само изброени:
passwd – файл в който се пазят регистрираните в системата потребители. В старите версии на Линукс този файл се използваше и за пазене на потребителските пароли. passwd- е негово резервно копие.
shadow – файл в който се пазят паролите на потребителите. shadow- e негово копие.
group – файл чийто съдържание е групите регистрирани в операционната система. group- е копие на файла.
4. НАСТРОЙКА НА МОДУЛИТЕ
Модулите са аналога на драйверите за Windows. В Линукс има два основни файла, които отговарят за зареждането и управлението на модулите. Това са файловете /etc/rc.d/rc.modules, чрез който се задават модулите които трябва да се зареждат при всяко стартиране и файла /etc/modules.conf чрез който се задават параметри на модулите или определен модул се обвързва с определено име на устройство. Първият файл съдържа множество коментирани редове, като всеки ред отговаря на определен модул. Следния ред е типичен ред пример:
#/sbin/modprobe 8139too
Ако на този ред бъде премахнат коментара операционната система ще се опитва да зарежда модула 8139too при всяко стартиране (този модул отговаря за мрежовите карти с чип Realtek 8139). Чрез втория файл може този модул да се присвои към определено устройство. Например:
alias eth0 dmfe
alias eth1 8139too
alias char-major-195 nvidia
Първият ред присвоява към устройство отговарящо за първата мрежова карта модула dmfe (мрежови карти Davicom), а на втората мрежова карта модула 8139too. Последния ред указва на операционната система, че за char устройство с главен номер 195 отговаря модула nvidia (модула на видео картите с чип на Nvidia).
5. НАСТРОЙКА НА ПУСКАНЕТО И СПИРАНЕТО НА ОПЕРАЦИОННАТА СИСТЕМА
Пускането и спирането на операционната система се извършва от шел скрипове намиращи се w директорията /etc/rc.d/. Линукс има седем режима в които може да работи: режим на единичен потребител, многопотребителски режим, режим с графична среда, режим на рестартиране и режим на изключване. Те са обозначени със следните номера – 1, 3, 4, 6, 0 наречени runlevels. Номерата 2 и 5 не се използват. За всеки един от режимите в директорията има по един шел скрипт:
rc.0 – това е символична връзка към rc.6. Oтговаря за runlevel 0 (изключване на операционната система)
rc.K – отговаря за runlevel 1 (еднопотребителски режим)
rc.M – отговаря за runlevel 3 (многопотребителски режим)
rc.4 – отговаря за runlevel 4 (режим с графична среда)
rc.6 – отговаря за runlevel 6 (рестартиране на операционната система)
rc.S – не отговаря за никой от режимите тъй като се стартира преди тях. Използва се за инициализация на операционната система. Тук се прави проверка за коректно изключване на операционната система, стартиране на модулите и т.н.
Всеки един от тези скриптове стартира множество програми необходими за нормалната работа в дадения runlevel. По подразбиране системата влиза в runlevel 3. Това може да се промени чрез промяна на файла /etc/inittab.
id:3:initdefault:
трябва да се промени на
id:4:initdefault:
Освен тези скриптове, в тази директория има още няколко важни скрипта:
rc.local – първоначално този скрипт е празен. Тук администратора може да добавя собствени команди, които ще се изпълняват при всяко стартиране на операционната система.
rc.inet2 – от тук се стартират скриптовете на сървърите които са инсталирани.
rc.inetd – в последната версия, Slackware добавиха този прост скрипт който позволява да се рестартира inetd. Това в старите версии ставаше с командата killall -HUP inetd.
rc.sysvinit – позволява автоматично разпознаване и стартиране на скриптове предназначени за Red Hat. Тъй като Red Hat (Mandrake, Debian, Fedora, SUSE) използва Sys V тип на скриптовете, а Slackware BSD стил, чрез този файл се постига съвместимост.
rc.syslog – управлява системния процес наречен syslog. Той следи и записва възниканлите грешки и по-важни събития в определени журнални файлове.
rc.serial – управлява серийните устройства, като чете конфигурацията от файла /etc/serial.conf
Останалите файлове са скриптове за управление на инсталираните сървъри и зависят от направената инсталация.
Други важни файлове, които не попадат в условната подредба:
/etc/fstab – описва устройствата като хард дискове, камери, CD-ROM, Floppy и др. и опциите им които влизат в сила при монтиране. Освен това тук може да се опишат у-вата които се монтират автоматично при зареждането на операционната система.
/etc/mtab – описва всички монтирани устройства. При всяко закачане и разскачане на у-во, този файл се осъвременява.
/etc/lilo.conf – един от най-важните файлове. Чрез него се променя boot loader-а на Линукс. В някои дистрибуции не се използва LILO за тази цел, а GRUB. В този случай този файл не съществува. Този файл е разделен на секции – по една за всяка инсталирана операционна система. Тук Линукс леко излиза извън тази рамка, понеже един инсталиран Линукс може да има повече от една секция. Причина за това е, факта че Линукс може да има инсталирани няколко ядра, като за всяко ядро е необходима отделна секция. Ето формата на този файл:
# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
boot = /dev/hda
#compact # faster, but won't work on all systems.
prompt
timeout = 300
# End LILO global section
# DOS bootable partition config begins
other = /dev/hda1
label = WinXP
table = /dev/hda
# DOS bootable partition config ends
# Linux bootable partition with ACPI config begins
#image = /boot/kernel-2.4.22-acpi
image = /boot/latest
root = /dev/hda7
label = Linux-2.4
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
append="hdc=ide-scsi"
vga = 791
# Linux 2.6.0 bootable partition with ACPI config begins
#image = /boot/kernel-2.6.3
image = /boot/bzImage-2.6.3
root = /dev/hda7
label = Linux-2.6
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
append="hdc=ide-cd"
vga = 791
# Linux bootable partition config ends
Освен тези най-важни файлове и директории, директорията /etc съдържа още множество по-малко критични конфигурационни файлове. Въпреки това ето някои от тях:
/etc/X11 – директория в който се пази конфигурацията на графичния сървър. Най-важния файл е XF86Config или XF86Config-4. Това е основния конфигурационен файл на X сървъра.
/etc/fonts – в тази директория се пазят конфигурационни файлове отнасящи се към инсталираните шрифтове. Най-важен от тях е файла fonts.conf, който описва директориите с инсталирани шрифтове (не само).
cron.daily, cron.hourly, cron.weekly, cron.monthly – във всяка една от тези директории може да се добавят шел скриптове, програми или линкове към програми, които ще се изпълняват съответно веднъж дневно, веднъж на час, веднъж на седмица или веднъж на месец.
/etc/ld.so.conf – файл описващ директориите в които операционната система пази своите библиотеки. След промяната му трябва да се изпълни командата ldconfig, за да влязат промените в сила. Във файла ld.so.cache се пази кеширана информация за инсталираните библиотеки.
/etc/lpd – файл за конфигурация на демона позволяващ принтиране.
Промяната на всички тези файлове става единствено с обикновен текстов редактор. Повечето Линукс дистрибуции притежават шел скриптове, чрез които тази промяна е по-удобна и лесна. За съжаление няма Линукс дистрибуция в която да има шел скриптове за всички възможни промени. Затова универсалния и най-гъвкав начин за конфигуриране на операционната система е простия редактор.