Нетрудно убедиться, что эти ограничения действуют только в текущем сеансе и только на экземпляр оболочки, обслуживающей конкретного пользователя в конкретной консоли. Для установления «жестких» ограничений на все сеансы и процессы, запущенные любым пользователем, администратор должен записать строки
Ulimit -u 10
Ulimit -n 50
Ulimit -f 1000
В файл /etc/profile. Ограничения начнут действовать сразу после нового входа пользователя в систему, т. е. когда процесс login создаст сеанс пользователя и запустит процесс bash в рамках этого сеанса, а процесс bash считает все установочные значения из всех своих имеющихся конфигурационных файлов. Пользователям (кроме администратора) не удастся превысить или переустановить эти пределы.
В операционной системе по умолчанию запускается довольно много системных процессов и сервисов. Многие из них напрасно расходуют процессорное время и оккупируют оперативную память. Некоторые сервисы откровенно небезопасны по причине своей уязвимости. Специалисты рекомендуют администраторам избавляться от подобного «багажа». Вот краткий список сервисов сомнительной полезности:
· portmap, rpc.mountd, rpc.nfsd – службы обеспечивают функционирование сетевой файловой системы NFS;
· nmbd, smbd – службы реализуют аналог с сетевыми ресурсами ОС Windows*;
· named – обеспечение службы доменных имен;
· telnet, rlogin, rexec – небезопасные службы для сетевого управления компьютером;
· finger, comsat, chargen, identd, echo – набор устаревших и небезопасных служб.
Все сущности в операционной системе имеют свои номера. Не являются исключением и процессы. Каждому из них система назначает уникальный 16-разрядный идентификатор (process identifier – PID). Таким образом, в системе может быть одновременно запущено большое число – 65536 процессов. Идентификационные номера присваиваются процессам по порядку, по мере их создания. Обычно первая сотня номеров присваивается системным процессам и демонам, поскольку они запускаются первыми. При завершении процесса система освобождает его идентификатор, но современные версии ОС в одном сеансе освобожденные номера повторно используют только после исчерпания доступного диапазона.
Процесс, запущенный другим процессом, называется дочерним (child) процессом или потомком. Соответственно созидающий процесс называется родительским (parent), родителем или просто – предком. Поэтому у каждого процесса наряду с идентификатором PID есть еще один числовой атрибут – PPID (Parent Process ID) – идентификатор родительского процесса.
Запускающий процесс создаёт своего «двойника», вызывая системную функцию fork: двойниками они являются по причине идентичности контекстов процессов, за исключением PID и PPID. Выполняя этот вызов, система создает дочерний процесс, являющийся почти полной копией родительского, но имеющий свой идентификатор PID и выполняющийся в собственном адресном пространстве. При этом родительский процесс ожидает завершения работы порождённого процесса. Для завершения работы процесса выполняется системный вызов exit. Полную самостоятельность порожденный процесс получает после выполнения системного вызова exec. Дочерний процесс сохраняет значение идентификатора родительского процесса PPID. «Родственники» могут взаимодействовать друг с другом посредством сигналов, функций межпроцессного взаимодействия, каналов и др.
Пользовательским процессам присваивается еще один идентификатор – UID – уникальный номер пользователя, который их запустил. Пользователь не может манипулировать логическими объектами непосредственно, и это делает за него программа. Обычные пользовательские программы имеют право делать только то, что разрешено их владельцу. Например, пользователь, запустивший процесс