Переход в безопасный и известный каталог

Серверный процесс должен всегда функционировать в известном каталоге. Кроме всего прочего, это позволяет гарантировать, что в случае аварийного завершения работы сервера по любой причине (или при останове системным администратором неправильно функционирующего сервера) администратору будет известно местонахождение создаваемого при этом файла дампа ядра. Кроме того, все серверы должны функционировать в стандартных системных каталогах, а не в тех каталогах, из которых они были запущены. Чтобы понять, с чем это связано, рассмотрим, что произойдет, если системный администратор заметит, что работа сервера закончилась аварийно, и перезапустит его. Если администратор работает с командным интерпретатором в своем начальном каталоге и забудет перейти в системный каталог перед запуском сервера, сервер начнет функционировать в начальном каталоге администратора. Наличие любого процесса, функционирующего в каталоге, исключит возможность выполнения каких-либо действий по управлению системой, которые требуют размонтирования файловой системы. Например, администратор не сможет даже выполнить обычный дамп файловой системы. Хорошие условия для Вас: Разводка полипропиленовых труб - просто и очень легко! Надежно: Ремонт стеклопакетов москва - у нас дешевле.

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

30.9. Программирование сервера для перехода в другой каталог

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

(void) chdir (7"); 

Выбор подходящего каталога может оказаться затруднительным, поскольку ни один каталог не может полностью соответствовать условиям эксплуатации всех серверов. Например, сервер, который отправляет электронную почту, может перейти в каталог, где система хранит исходящую электронную почту (во многих системах UNIX это каталог /usr/spool/mqueue). Однако сервер, который контролирует простаивающие линии связи с терминалами, может перейти в каталог, где находятся файлы всех терминальных устройств (обычно /dev).

30.10. Маска umask в системе Linux

В операционной системе Linux каждому выполняемому процессу назначена маска umask, которая определяет режим защиты файлов, создаваемых процессом. Маска umask представляет собой целое число, девять младших битов которого представляют собой маску для 9-битового режима защиты файла. При создании каждого файла операционная система Linux вычисляет код режима защиты для этого файла, применяя поразрядную операцию "И" к режиму, указанному в вызове функции open, и к поразрядному дополнению маски umask процесса. Например, предположим, что процессу назначена маска umask с восьмеричным значением 027. Если в процессе предпринимается попытка создать файл с режимом 0777 (предназначенный для чтения, записи и выполнения всеми пользователями), система определяет допустимый режим файла, применяя поразрядную операцию "И" к числу 0750 (дополнению маски umask, равному 027) и к числу 0777 (затребованному режиму). В результате файл будет иметь режим 0750 (предназначенный для чтения и выполнения владельцем и группой файла, для записи только владельцем и не доступный для других пользователей).

Похожие статьи Меню Опрос Фото Популярное