Solaris

Oracle Solaris (SunOS)


Oracle Solaris (SunOS) - это коммерческий продукт, который предоставляет пользователям интегрированную и полнофункциональную серверно-ориентированную платформу, сочетающую программное обеспечение для облачных вычислений с открытым исходным кодом OpenStack и надежную операционную систему корпоративного класса Solaris.

"SunOS Release 5.11 Version 11.40.15.0 64-bit  Copyring (c) 1983,2018, Oracle and/or its affiliates. All rights reserved."  На базе SunOS Solaris "рождена" Cisco IOS межсетевая операционная система.

ОС Solaris - это операционная система UNIX, изначально разработанная Sun Microsystems, а теперь поддерживаемая корпорацией Oracle под названием Oracle Solaris.

Поддерживаемые архитектуры включают x86 (32-разрядная версия) и SPARC (архитектура масштабируемого процессора). Рекомендуемые системные требования включают не менее 2 ГБ или ОЗУ (системная память) и не менее 15 ГБ свободного места на жестком диске.

    Теперь, когда не осталось 32-битных машин Intel, Oracle исключил имя «x64» и просто называет его «x86», что всегда относилось к архитектуре Intel. То есть скачивая образ к примеру:

 sol-11_4-text-x86.iso, мы имеем 64-битную версию с поддержкой «x86» .

    С Solaris 10 Sun Microsystems реализовала двоичную совместимость с Linux, что позволяет запускать Linux-приложения под Solaris на системах x86 в зонах BrandZ (что на практике мало кем востребовано). Планируется двоичная совместимость с FreeBSD. В Solaris SPARC эта функциональность не доступна.

Серверы работают Вечно!

Системное программное обеспечение SunOS предполагает постоянную работу системы.

Чтобы найти (определить) run level для системы, наберите who -r .

root@solaris:~# who -r

  run-level 3  Feb 12 09:32     3      0  S

root@solaris:~#

Можно использовать init-режимы (с опцией -i ) как аргументы команды shutdown. Существуют четыре типа режимов системы:

•  Отключение питания (Power-down) (run level 0)

•  Однопользовательский (run levels 1 и s или S)

•  Многопользовательский (run levels 2 и 3)

•  Перезагрузка (run levels 5 и 6)

По команде shutdown Solaris переходит в однопользовательский режим работы 1. 

Предварительно:  cd /

# shutdown -g0 -i0

# shutdown -y -i5 -g0 (solaris 9)

System is halted. It is now safe to power it off. .................

В случае десктопа это все слишком сложно, поэтому можно так:   poweroff  (shutdown -p now)

Эви Немет - Unix и Linux.      <---------ст.139    man pages section 1: User Commands - svcs(1)     https://using-smf/basic-smf-commands

Службы, запущенные svc.startd, называются milestones(вехи). Концепция milestones заменяет традиционные  уровни выполнения, которые использовались в предыдущих версиях Solaris. 

Milestones - это особый вид сервиса, представляющий группу услуг.  Milestones состоит из нескольких SMF services. Например, службы, которые установили уровни выполнения S, 2 и 3 в предыдущей версии Solaris,  теперь представлены SMF services:

milestone/single-user – (эквивалентно уровню выполнения S)

milestone/multi-user – (эквивалентно уровню выполнения 2)

milestone/multi-user-server – (эквивалент уровня 3)

user@zone1:~$ svcs -d milestone/multi-user:default

Другие этапы  milestones , доступные в Solaris 10 как:

milestones/name-services

milestones/devices

milestones/network

milestones/sysconfig

Каждая служба имеет свое объявление (manifest) – файл в формате XML, содержащий полное описание всех свойств службы или ее экземпляра. Манифест SMF - это файл XML, который содержит полный набор свойств, связанных с экземпляром службы.  Свойства хранятся в файлах и подкаталогах, расположенных в /var/svc/ manifest.  Манифесты не должны редактироваться напрямую для изменения свойств сервиса. 

Конфигурации  могут управляться или запрашиваться только с использованием интерфейсов SMF, которые являются утилитами командной строки.

Отладка 

Solaris Management Console:  # smc или # smc&

cat -v -t -e [file] – Показать неотображаемые символы

dumpadm -d swap – Сконфигурировать swap устройство как dump устройство

ld -l                – Проверка наличия библиотеки

truss -f -p           – Использование нескольких окон. Это может использоваться при отслеживании setuid/setgid программ

truss executable – Отслеживание команды (полезно при отладке)

 Проверить свойства пакета:

[17:42@solaris]~ # pkgchk -l -p /usr/bin/firefox

Pathname: /usr/bin/firefox

Type: symbolic link

Source of link: ../lib/firefox/firefox

Referenced by the following packages:

        SUNWfirefox

Current status: installed

Работа с диском 

fsck   Проверяет все FS перечисленные в  /etc/vfstab. Программа fsck проверяет файловую систему и, если находит ошибки, исправляет их. Найдя ошибки, об исправлении которых она не может принять самостоятельное решение. Если в настоящий момент файловая система смонтирована, fsck не начинает проверку такой файловой системы. Это правило можно обойти, если потребовать от fsck обращаться к диску как к символьному устройству, а не как к блочному:fsck /dev/rdsk/c0.... Каждому файлу в каталоге /dev/dsk соответствует файл устройства прямого доступа (raw disk) в каталоге /dev/rdsk.

Solaris-introdution PDF ст.20

Cheat sheet:  http://dreamcatcher.ru

mount              – Что куда, примонтировано

mount -v         – включает тип файловой системы в свой подробный вывод.

fstyp [-v] <device>      – также покажет тип файловой системы

iostat -En                      – покажет устройства

Вывести устройство, на котором смонтирована файловая система, указанная в аргументе;

 devnm / /var 

/dev/md/dsk/d10  /

/dev/md/dsk/d30  /var

# df -h -F zfs

Filesystem           Size   Used  Available Capacity  Mounted on

rpool/ROOT/solaris                         49G    3.7G            40G         9%    /

rpool/ROOT/solaris/var

                     49G   958M     40G     3%    /var

rpool/VARSHARE       49G   3.1M     40G     1%    /var/share

rpool/VARSHARE/tmp   49G    31K     40G     1%    /var/tmp

rpool/VARSHARE/kvol  49G    31K     40G     1%    /var/share/kvol

rpool/VARSHARE/zones 49G    31K     40G     1%    /system/zones

rpool/export         49G   409M     40G     1%    /export

rpool/export/home    49G    35K     40G     1%    /export/home

rpool/export/home/user

                                                             49G    63K               40G     1%    /export/home/user

rpool/export/home/zone1

                                                              49G    32K                40G     1%    /export/home/zone1

Solaris:                             https://docs.oracle.com/cd/E19253-01

                                         ZFS - introduction          # zfs list   (Solaris11)

 Размонтировать :           https://docs.oracle.com/cd/E19253-01

 Убить:   # zfs destroy     https://docs.oracle.com/cd/E19253-01       tank/home/tabriz

root@solaris:~# zfs destroy rpool/export/home/zone1

cannot destroy 'rpool/export/home/zone1': filesystem has children

use '-r' to destroy the following datasets:root@solaris:~# zfs destroy -r rpool/export/home/zone1

........................................

root@solaris:~# zfs destroy -r rpool/export/home/zone1

root@solaris:~# mount -v | awk '{print $3,$4, $5}'

/                type zfs

/var          type zfs

/devices  type devfs

/dev         type dev

.....................

df; df -k    Текущее использование диска;  df -Z  все видимые зоны (только из глобальной)

# df -oi         #для UFS

df: operation not applicable for FSType autofs

df: operation not applicable for FSType ctfs

................................................................................

df: operation not applicable for FSType proc

df: operation not applicable for FSType sharefs

df: operation not applicable for FSType tmpfs

Filesystem                  iused     ifree  %iused  Mounted on

/dev/dsk/c0t0d0s0 197656 891432 18% /

/dev/dsk/c0t0d0s7 4 838652 0% /export/home

# 197 656 + 891 432 = 1 089 088

/bin/mount -F hsfs -o ro /dev/sr0 /cdrom      – Монтирование ISO 9660 CDROM

/usr/bin/iostat -E       – Отображение статистики дисков                       

/usr/bin/iostat -En | awk '{print $1,$2,$7}'       

du -ad /var | sort -nr   – Отчет об использовании /var сортированный в обратном порядке

du -k .                         – Отчет об использовании диска в килобайтах

du -sk * | sort -nr | head     – Показать 10 самых больших файлов/каталогов

du -sk *|sort -k1,1n     – Отчет об использованном пространстве в текущем каталоге

quot   <-------------quot [-acfhnv] filesystem.. https://www.opennet.ru/man

fdformat -d -U                          – Форматирование дискеты

newfs -Nv /dev/rdsk/<c0t0d0s1>    – Просмотр доступных суперблоков

prtvtoc /dev/rdsk/<c0t0d0s2>         – Информация о геометрии и разделах диска

prtvtoc /dev/rdsk/<c0t0d0s2> | fmthard -s - /dev/rdsk/<c0t1d0s2>              – Копировать таблицу разделов с одного диска на другой

quot -af         – Сколько дискового пространства используется пользователем

volrmmount -i floppy    – Монтирование дисковода или другого устройства  по его имени

.....................................................

# cd /dev/rdsk

/dev/rdsk # ls

c0d0p0   c0d0s1   c0d0s15  c0d0s7 c1t0d0p3 c1t0d0s12  c1t0d0s4

c0d0p1     c0d0s10    c0d0s2   

/dev/rdsk # fdisk -G /dev/rdsk/c0d0p0

* Physical geometry for device /dev/rdsk/c0d0p0

* PCYL     NCYL     ACYL     BCYL     NHEAD NSECT SECSIZ

  2080     2080     0        0        255   63    512

....................................................

https://linux.die.net/man/1/iostat

https://pingvinoff.net/komanda-iostat/

[20:54@solaris]~ # iostat -dx

device    r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b

cmdk0     3.9    0.8   37.1    3.6  0.0  0.0    5.7   0   1

sd0       0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0

nfs1      0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0

[20:55@solaris]~ #

    r/s – отображает количество операций чтения с диска в секунду

    w/s – печатает количество записей на диск в секунду

    kr/s – показывает общее количество прочитанных данных в секунду

    kw/s – отображает общее количество записанных данных в секунду

    actv – показывает среднее количество обрабатываемых транзакций

    svc_t – отображает средний период обслуживания в миллисекундах

    %w      – выводит процент времени ожидания

    %b – показывает процент времени работы диска

Управление файлами 

dos2unix | -ascii           – Конвертировать файлы формата DOS в формат Unix

fold -w 180                   – Удалить строки с больше чем 180 символов

split [-linecount] [file] – Разбить файл на части

# iostat -En        #Только имя размер дисков

c21d0            Soft Errors: 0 Transport Errors: 0 Protocol Errors: 0 Vendor: SUN Product: VDSK       Size: 137.67GB <137665445888 bytes>

c21d1            Soft Errors: 0 Transport Errors: 0 Protocol Errors: 0 Vendor: SUN Product: VDSK       Size: 137.67GB <137665445888 bytes>

#

[20:01@solaris]~ # iostat --help

                -c:     report percentage of time system has spent

                        in user/system/wait/idle mode

                -C:     report disk statistics by controller

                -d:     display disk Kb/sec, transfers/sec, avg.

                        service time in milliseconds

                -D:     display disk reads/sec, writes/sec,

                        percentage disk utilization

                -e:     report device error summary statistics

                -E:     report extended device error statistics

                -i:     show device IDs for -E output

                -I:     report the counts in each interval,

                        instead of rates, where applicable

                -l n:   Limit the number of disks to n

                -m:     Display mount points (most useful with -p)

                -M:     Display data throughput in MB/sec instead of Kb/sec

                -n:     convert device names to cXdYtZ format

                -p:     report per-partition disk statistics

                -P:     report per-partition disk statistics only,

                        no per-device disk statistics

                -r:     Display data in comma separated format

                -s:     Suppress state change messages

                -T d|u  Display a timestamp in date (d) or unix time_t (u)

                -t:     display chars read/written to terminals

                -x:     display extended disk statistics

                -X:     display I/O path statistics

                -Y:     display I/O path (I/T/L) statistics

                -z:     Suppress entries with all zero values

# iostat -En | awk '{print $1, $6}' | tr -d "Errors:" | sed 's/Vend//g' | sed '$!N;$!N;s/\n/ /g'

c21d0   137.67GB

c21d1   137.67GB

c21d2   274.88GB

c21d11   34.36GB

c21d12   34.36GB

c21d13   34.36GB

c21d14   34.36GB

c21d15   34.36GB

c21d16   34.36GB

c21d17   34.36GB

c21d18   68.72GB

c21d19   274.88GB

.exrc

set exrc

set list                           – Показать неотображаемые символы

set nu                            – Пронумеровать строки

set ts=[num]                 – Установить значение табуляции

Команда Описание

:q! – Выход без сохранения

:w – Сохранение изменений

:w <filename> – Сохранение как <filename>

:wq       – Выход с сохранением

:q      – Выход, если файл не изменялся

i – Переход в режим вставки символов в позиции курсора.

a    – Переход в режим вставки символов в позиции после курсора.

o     – Вставка строки после текущей

O     – Вставка строки над текущей

x   – Удаление символа в позиции курсора

dd – Удаление текущей строки

u      –Отмена последнего действия

<escape>             – Возврат в режим команд     

Файловая система 

https://docs.oracle.com/  Solaris 9/10

https://docs.oracle.com   Solaris 11

Solaris System Admin Guade  (Devices and File Systems)  PDF     

http://solarisfacts.blogspot.com/file-system.html   <----------здесь

fsck -m    Проверяет, можно ли установить(mounted) файловую систему

fsck -y      Предполагает ответ «да» для всех ремонтов

fsck -n     Предполагает отсутствие ответа на все ремонтные работы

fsck -o p   Noninteractively preens the file system, fixing all expected (innocuous) inconsistencies, but exits when a serious problem is encountered (Невзаимодействует файловая система, исправление все ожидаемые (безобидные) несоответствия, но выходит, когда возникает серьезная проблема)


Справочник по файлам UNIX-LINUX

AWK   "шпаргалка"    https://www.ibm.com/AWK


$0 Содержит всю запись (или строку)

$1,$2... Содержит первое поле, второе поле и т. Д.

NR Сохраняет общее количество входных записей. Если количество строк, вводимых в команду AWK, равно 10, значение NR равно 10.

NF Сохраняет общее количество полей в записи.

FILENAME Содержит имя входного файла.

FS Эта переменная содержит разделитель полей для AWK, на основе которого каждая строка разделяется на разные поля. Разделителем полей по умолчанию является пробел, содержащий любое количество пробелов или символов табуляции. Разделителем полей может быть любой символ или комбинация символов.

RS Используется как разделитель записей, то есть разделяет каждый текстовый файл на разные строки. Символ-разделитель записей по умолчанию «новая строка».

OFS Означает «разделитель полей вывода», который разделяет вывод полей, напечатанных AWK. По умолчанию используется символ «пробел».

ORS Означает «разделитель выходных записей», который разделяет выходные записи, напечатанные AWK. По умолчанию используется символ новой строки.

OFMT Спецификация формата, print используется с sprintf (), когда неоюходимо преобразовать число в строку для печати. Формат по умолчанию - «% .6g».

/sbin/uadmin x x                        Синхронизация файловых систем и быстрая перезагрузка

awk ' END {print NR}' file_name     Вывести количество строк в файле

cat /dev/null > filename                      Нулевой вывод в файл без прерывания пайпа

dd if=/dev/rdsk/... of=/dev/rdsk/... bs=4096      Сделать зеркало загрузочного диска

df -k | grep dg | awk '{print $6}' | xargs -n 1 umount     Отмонтировать все файловые системы в группе дисков dg

fsck -F ufs -o b=97472 /dev/rdsk/c0t0d0s0   Проверить и восстановить файловую систему UFS на c0t0d0s0 используя альтернативные суперблоки

fsck -F ufs -y /dev/rdsk/c0t0d0s0   Восстановить файловую систему UFS на c0t0d0s0 без подтверждения

fsck -F ufs /dev/rdsk/c0t0d0s0    Проверить файловую систему UFS на c0t0d0s0

gzip -d -c tarball.tgz | (cd /[dir];tar xf - ) &         Распаковка архива в указанное место

gzip -dc file1.tar.gz | tar xf -                                 Распаковка архива

ln [-fhns]                                                                 Создать жесткую или мягкую ссылку

ls -al | awk '$3 == "oracle" || $3 == "root" {print $9}' Вывод всех файлов, владельцем которых является root

ls -l | sort +4n                         Список файлов по размеру

ls -la | awk '{ print $5," ",$9 }' | sort -rn        Размер файлов в текущем каталоге

ls -lR | awk '{total +=$5};END {print "Total size: " total/1024/1024 "MB" }' Рекурсивный подсчет размера каталогов в Мб

mkisofs -l -L -r -o [image-name].iso [directory]         Создать образ ISO из каталога

mount -F ufs -o rw,remount /                                     Перемонтировать корневой раздел в rw

mount -o remount,logging /spare Перемонтировать ro в rw aи включить журналирование ufs

mount -f pcfs /dev/dsk/c0d0p1 /export/dos                 Примонтировать раздел DOS

mv [filename]{,.new_suffix}                                         Переименовать файл

pax -rw . /newdir                                           Альтернативный метод копирования каталогов

prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2 Клонировать таблицу разделов

tar cf - . | (cd /newdir ; tar xf -)                      Рекурсивное копирование файлов и разрешенй

tar cvf filename.tar             Создать архив

tar xvf filename.tar             Распаковать архив

X=$(wc -l < filename); echo $X Подсчет количества строк в файле (ksh)

zcat                                                         Распаковка patch_file

zcat [cpio file] | cpio -itmv         Показать содержимое cpio

# cat /etc/vfstab                                  Автоматически смонтрованные файловые системы

Передача файлов 

find . -depth | cpio -pdmv /path/tobe/copied/to Быстрая альтернатива cp -pr

find . -follow | cpio -pdumL /path/tobe/copied/to Копирование с символическими ссылками

get filename.suffix |"tar xf -" Недокументированная возможность FTP

ssh cd /some/directory \&\& tar cf - | ssh cd /some/direstory \&\& tar xvf - Переместить файлы без фактического обращения к ним

put "| tar cf - ." filename.tar Недокументированная возможность FTP

sendport Команда FTP, служащая для передачи большого количества файлов в пределах одной сессии

Общие 

date [месяц,число, время]    # date 11152159 (mmddHHMM)

/usr/bin/env        окружение          бинарный файл        https://docs.oracle.com/userconcept

showrev -a | more     версия установленной системы Solaris и информация обо всех     установленных   обновлениях системы

prtconf | grep Mem       размера памяти на локальной машине

prstat -Z

/usr/sbin/prtconf -vp      Детальный просмотр системной конфигурации

isainfo -bv      Быстрая проверка режима 32 или 64 bit

cat  /etc/path_to_inst      Список устройств в системе

(В случае, если файл /etc/path_to_inst был удален или неверно отредактирован, система не сможет загрузиться)

cat /etc/name_to_major | more      служит для отображения имен устройств в major номера файлов устройств; этот файл создается при формировании содержимого каталога /devices, например,при работе devfsadmd.

prodreg      GUI  диспетчер пакетов

/bin/printf '%d\n' '0x' Преобразование шестнадцатеричного числа в десятичное

/usr/bin/catman -w         Создать индекс базы данных страниц руководства man

FQ_FILENAME=; echo ${FQ_FILENAME%/*}

mailx -H -u                         Список заголовков писем конкретного пользователя

ps -ef | grep -i $@

set filec Установить автодополнение имен файлов для csh

uuencode [filename] [filename] | mailx -s "Subject" [user to mail] Послать файл в аттаче

xauth -f /home/${LOGNAME} extract - ${DISPLAY} | xauth merge -

# useradd  [username]

# useradd -d [dir] -m [username]

# passwd username

#cat /etc/passwd

https://www.opennet.ru/man.shtml/USERADD

https://www.opennet.ru/man.shtml/USERDEL

# useradd -d /export/home/user -m -s /bin/bash user

# passwd user

New Password:

Re-enter new Password:

passwd: password successfully changed for user

# userdel <shtirliz>

https://docs.oracle.com/cd/E23824_01/html/

# useradd -u 1000 -g postgres -d /global/postgres -s /usr/bin/ksh postgres

# chown -R postgres:postgres /global/postgres

##### В Linux интерактивная утилита: adduser <user>

-u  UID         – Создать пользователя с номером UID

-g  GID         – Основной группой пользователя должна являться группа с номером GID

-c  Name   Комментарии к учетной записи пользователя; обычно указывается полное имя

-d  home_directory – Домашний каталог пользователя

-m        – Если задан этот параметр, а указанный домашний каталог пользователя не существует, то он будет создан

-s shell – Установить shell в качестве интерпретатора командной строки для создаваемого пользователя

username – Имя создаваемой учетной записи

user@solaris:~$ cat /etc/group

Файлы :

/etc/group – системный файл, содержащий определения групп

/etc/datemsk – системный файл форматов даты

/etc/passwd – файл системных паролей

/etc/shadow – системный файл, содержащий зашифрованные пароли пользователей и соответствующую информацию

/etc/user_attr – системный файл, содержащий дополнительные атрибуты пользователя и роли

https://docs.oracle.com/cd/E23824_01/html/821-1461/setfacl-1.html

Вся информацию о пользователе, используя id:

root@solaris:~# id

uid=0(root) gid=0(root)

root@solaris:~# id user

uid=100(user) gid=10(staff)

Список групп:

user@solaris:~$ groups

staff

root@solaris:~# groups user

staff

root@solaris:~# echo $UID

0

root@solaris:~# echo $UID user

0 user

root@solaris:~# id -G

0 1 2 3 4 6 7 8 12

Список групп с именами:

root@solaris:~# id -Gn

root other bin sys adm mail tty lp daemon

root@solaris:~# id -Gn user

staff

Кол-во групп в которых состоит пользователь:

root@solaris:~# groups | wc -w

9

 Добавить пользователя "user" в группу "root"

root@zone2:~# groups user

staff

root@zone2:~# usermod -G root user

root@zone2:~# groups user

staff root

root@zone2:~#

/export/home/user $ vi .profile

#

# Copyright (c) 2001 by Sun Microsystems, Inc.

# All rights reserved.

#

# ident "@(#)local.profile      1.10    01/06/23 SMI"

stty istrip

PATH=/usr/bin:/usr/ucb:/etc:.

export PATH

LANG=ru_RU.UTF-8

export LANG

LC_CTYPE="ru_RU.UTF-8"

export LC_CTYPE

LC_NUMERIC="ru_RU.UTF-8"

export LC_NUMERIC

LC_TIME="ru_RU.UTF-8"

export LC_TIME

LC_COLLATE="ru_RU.UTF-8"

export LC_COLLATE

LC_MONETARY="ru_RU.UTF-8"

export LC_MONETARY

LC_MESSAGES="ru_RU.UTF-8"

export LC_MESSAGES

LC_ALL=

export LC_ALL

~ # reboot

================================

Аппаратное обеспечение 

Анализ оборудования во многом совпадает с анализом оборудования в Linux, поэтому возможно пригодится  эта ...."упрощенная" инструкция: https://sites.google.com/site/kfgnb0101

.... а вообще вот тут:  https://docs.oracle.com/cd/E23824/gdvku.html  

....и тут: solaris-how-to-scan-new-storage

Анализ оборудования в BSD: http://backend.wiki.val.bmstu.ru     

....и там: https://www.freebsd.org/handbook

Для получения информации об уже установленных устройствах следует пользоваться

программами prtconf, sysdef и dmesg.

    Утилита prtconf выдает информацию о конфигурации системы в том виде, в котором она иерархически представлена в системе; с помощью prtconf можно выяснить, "увидела" ли система то или иное устройство. 

*** Упоминание устройства в выводе prtconf означает только то, что устройство обнаружено среди оборудования компьютера. Это НЕ ЗНАЧИТ, что устройство нормально работает, и тем более не означает, что в системе установлен его драйвер.

    Утилита sysdef показывает больше информации о системе: здесь выводится не только список аппаратуры в системе, но и перечень псевдо-устройств, загруженных модулей, параметры ядра, информация о разделяемой памяти, семафорах и т.п.

    Утилита dmesg выдает сообщения из файла протокола и список устройств, обнаруженных при последней перезагрузке системы. Эти сообщения можно также посмотреть в файле /var/adm/messages.

*** Ядро записывает сообщения в кольцевой буфер (область памяти фиксированного размера, в которой осуществляется перезапись устаревших сообщений при добавлении новых), а утилита использует специальный файл /proc/kmesg для доступа к содержимому этого буфера. https://linux-faq.ru/page/komanda-dmesg

Для более детального изучения оборудования компьютера могут пригодиться программы: 

Все это применяется (естественно) в сочетании с awk '{print $2,.....}' ; more; less; grep и тд

# dmesg | awk '{print $2,$3,$4,$5,$6,$7,$8}' | more

cfgadm                                    Проверить конфигурирумые аппаратные устройства

m64config -depth 8|24    Установить глубину цвета M64

m64config -prconf            Вывести конфигурацию адаптера M64

m64config -res 'video_mode'      Изменить разрешение графического адаптера M64

prtpicl -v | grep sync-speed       Обзор скорости синхронизации SCSI

psrinfo -vp                              Архитектура процессора                           


Ядро Параметры 

ndd /dev/ip ip_forwarding      Показать переменную ip_forwarding в ядре

ndd /dev/ip ip_forwarding 1      Установить переменную ip_forwarding в ядре

ndd /dev/ip \?                              Показать все IP переменные в ядре

Эви Немет - Unix и Linux.            PDF ст. 540  

/usr/sbin/modinfo          Информация о модулях ядра

/usr/sbin/modload          Загрузить модуль ядра

/usr/sbin/modunload -i Выгрузить модуль ядра

/usr/sbin/sysdef                 Детальный вывод настройки ядра

nm -x /dev/ksyms | grep OBJ | more     Настраиваемые параметры ядра

Память 

pagesize -a                     Доступные размеры страницы для Solaris 

prstat -Z                            Для зон

prtconf | grep Mem     Вывод размера памяти на локальной машине               

# echo "::memstat" | mdb -k     Общее распределение память - Solaris Modular Debugger

# echo "::swapinfo" | mdb -k

# echo "::memlist" | mdb -k       .........Kernel Debugging Modules

sar                                                <------PDF

# sar -r 1 3

14:35:34   freemem   freeswap

14:35:35    279107    3748872

14:35:36    279107    3748872

14:35:37    279107    3748872

Average     279107    3748872

========SOLARIS Локализация========

# vi /etc/default/init

TZ=Europe/Moscow

CMASK=022

LC_COLLATE=ru_RU.UTF-8

LC_CTYPE=ru_RU.UTF-8

LC_MESSAGES=C

LC_MONETARY=ru_RU.UTF-8

LC_NUMERIC=ru_RU.UTF-8

LC_TIME=ru_RU.UTF-8

================================

И если:

~ $ echo $LANG

ru_RU.ISO8859-5

....то лучше поменять:

~ # LANG=ru_RU.UTF-8 export LANG

~ $ env

..............

LANG=ru_RU.UTF-8

..............

Как сменить имя хоста в Solaris?, необходимо внести изменения в следующие  файлы:

/etc/hosts

/etc/nodename

/etc/hostname.*

/etc/net/ticlts/hosts

/etc/net/ticots/hosts

/etc/net/ticotsord/hosts

/etc/inet/ipnodes

Укажав имя  системы, заменив в этих файлах имя хоста с того, что по умолчанию на необходимое.

После внесения изменений reboot.

Часто достаточно:

/etc/hosts

/etc/hostname.<interface>

/etc/nodename (если нет, создать)

Чтобы точно узнать версию установленной системы Solaris и получить информацию обо всех установленных обновлениях системы, следует использовать команду showrev, по необходимости добавьте в канал more:

[19:11@solaris]~ $ showrev -a | more

Hostname: solaris

Hostid: 37eb9d03

Release: 5.10

Kernel architecture: i86pc

Application architecture: i386

Hardware provider:

Domain:

Kernel version: SunOS 5.10 Generic_147148-26

OpenWindows version:

Solaris X11 Version 6.6.2 19 November 2010

Patch: 119316-27 Obsoletes: 123886-01 Requires: 124189-01 Incompatibles:  Packages: SUNWpmgr, SUNWmga

Patch: 800131-03 Obsoletes:  Requires:  Incompatibles:  Packages: SUNWpmgr, SUNWpprou, SUNWmgapp, SUNWwbapi, SUNWlvmg, SUNWadmj, SUNWmconr, SUNWtsmc, SUNWmc, SUNWppro-plugin-sunos-base, SUNWppror, SUNWjsnmp, SUNWwsr2, SUNWproduct-registry-root, SUNWmccom, SUNWmga, SUNWinstall-patch-utils-root, SUNWlucfg, SUNWpkgcmdsu,

SUNWmctag, SUNWlpmsg, SUNWmcc, SUNWpkgcmdsr, SUNWsadml, SUNWadmc, SUNWadmap, SUNWadmfw, SUNWrmui, SUNWfsmgtu, SUNWmcos, SUNWmcdev, SUNWmcex, SUNWjato, SUNWinst, SUNWlvmr, SUNWjatodoc, SUNWwbcou, SUNWmcosx, SUNWluzone, SUNWwsrv, SUNWwbcor, SUNWlvma, SUNWadmfr, SUNWjatodmo, SUNWmgts, SUNWadmr, SUNWfsmgtr, SUNWmcon, SUNWz

--More--

Пространство ядра Solaris

Для того чтобы сделать загрузку модулей по запросу корректной, система Solaris опирается на организацию конкретных каталогов. Система Solaris работает в предположении, что определенные каталоги находятся в определенных местах, и эти каталоги должны содержать конкретные типы модулей:

Во время загрузки Solaris, чтобы найти ядро, проверяет путь:

Сначала находятся файлы с именами unix , а затем — файлы с именами genunix . Generic Kernel Debugging Support  - genunix

Genunix — это обобщенное ядро, которое представляет независимую от платформы часть базового ядра.

Каждый из перечисленных выше каталогов может содержать несколько стандартных подкаталогов.

Информация о сети 

#ifconfig -a        

Результат выполнения команды ifconfig -а зависит от того, выполняется ли она как корневая команда или как команда пользователя. В первом случае, помимо IP-адресов и параметров, отображаются также адреса Ethernet канального уровня.     

arp -a                                  Вывод arp таблицы (соответствия mac и ip адресов)                         

arp -d myhost                  Удалить запись определенного хоста из таблицы

lsof -iTCP@10.20.2.9          Отобразить открытые файлы для определенного хоста

ndd /dev/arp arp_cache_report          Напечатать arp таблицу выводя mac и IP адреса

netstat -a | grep EST | wc -l                  Показать число активных подключений к данной машине

netstat -a | more                Показать состояние сокетов на этой машине

netstat -i                        Показать состояние TCP/IP интерфейсов                 

netstat -k hme0                 Недокументированная опция netstat

netstat -np                        Аналог команды arp -a, без разрешения имен

netstat -r                        Таблица маршрутов

netstat -rn                        Таблица маршрутов, без разрешениия имен

snoop -S -ta [machine] Прослушивание сетевых пакетов, включая размер и время

traceroute                         Маршрут к данному адресу

netstat -a | grep EST | wc -l      Показать число активных подключений к данной машине

/usr/sadm/admin/bin/dhcpmgr      GUI комплексная настройке DHCP                                                


Флаги в выводе netstat обозначают состояние и тип маршрута:

U – up – маршрут активен и действует;

G – gateway – маршрут лежит к шлюзу;

H – host – маршрут к хосту , а не к сети;

S – static – маршрут добавлен статически (обычно – вручную);

D – dynamic – маршрут добавлен динамически, посредством протокола маршрутизации.

NIS (Network Information Service) — это клиент-серверный протокол, созданный Sun Microsystems, который позволяет обеспечивать доступ к системной конфигурации по всей сети. 

Настройка сети 

Solaris без сомнений это шедевр, но с сетевой подсистемой похоже они "перемудрили"..поэтому только практика поможет ее освоить.

Настройка сетевых интерфейсов ст.33

Наблюдение сетевых соединений

/sbin/ifconfig hme0:1 inet 10.210.xx.xxx netmask 255.255.0.0 broadcast 10.210.xxx.xxx     

/sbin/ifconfig hme0:1 up      Поднять виртуальный интерфейс

/usr/sbin/ndd -set /dev/hme adv_100fdx_cap 1

ifconfig eth0 10.1.1.1 netmask 255.255.255.255       Добавить интерфейс

https://habr.com/ru/post/138664/

ifconfig eth0 mtu 1500                                 Сменить MTU на интерфейсе                               

ndd -set /dev/ip ip_addrs_per_if 1-8192 Задать больше, чем 256 виртуальных IP адресов

ndd -set /dev/tcp tcp_recv_hiwat 65535 Увеличить TCP буфер приема на Sol2.5.1 с 100BaseTx

ndd -set /dev/tcp tcp_xmit_hiwat 65535 Увеличить TCP буфер передачи на Sol2.5.1 с 100BaseTx

В Solaris необходимо сначала “присоединить” сетевые интерфейсы с помощью команды:

# ifconfig <interface> plumb (ifconfig -a plumb подключить все интерфейсы)

и лишь затем настраивать конфигурации и выводить на экран с помощью команды 

# ifconfig -а  # ifconfig -a configinfo .


# ifconfig <interface> up  поднять

Solaris интегрирует команду ifconfig с клиентским демоном протокола DHCP.  

Команда:  

# ifconfig <interface> dhcp конфигурирует именованный интерфейс с помощью параметров,  арендованных у локального DHCP-сервера, затем запускает программу dhcpagent, чтобы управлять этими параметрами в течение долгого времени. Другие системы используют команду ifconfig независимо от протокола DHCP, при этом программное обеспечение DHCP функционирует на отдельном уровне.

С помощью команды ifconfig интерфейс можно получить конфигурацию отдельного интерфейса.

# ifconfig -a configinfo    

lo0 inet plumb mtu 8232 index 1 set 127.0.0.1  netmask 0xff000000 up

e1000g0 inet plumb mtu 1500 index 2 set 0.0.0.0  netmask 0x0

--------------------

# ifconfig e1000g0 up

# ifconfig -a

lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index  1

        inet 127.0.0.1 netmask ff000000

e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2

        inet 0.0.0.0 netmask ff000000

        ether 8:0:27:ac:77:2


solaris$  ifconfig e1000g0

e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500

index 2 inet 192.168.10.10 netmask ffffff00 broadcast 192.168.10.255


redhat$  ifconfig e1000g0

eth0 Link encap:Ethernet HWaddr 00:02:B3:19:C8:86

inet addr:192.168.1.13 Bcast:192.168.1.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric:1

RX packets:206983 errors:0 dropped:0 overruns:0 frame:0

TX packets:218292 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

Interrupt:7 Base address:0xef00

Отсутствие коллизий в интерфейсе Ethernet во втором примере может указывать на слабо загруженную сеть или, что более вероятно, на коммутируемую сеть. В сети общего доступа (организованной с помощью концентраторов, а не коммутаторов) этот показатель должен быть ниже уровня 5% от числа отправленных пакетов. Большое число коллизий свидетельствует о загруженности сети, которую, возможно, требуется разбить на подсети или перевести на коммутируемую инфраструктуру.

                                 Файлы настроек свойств сети в Solaris

В Solaris одна часть файлов сетевой конфигурации находится в каталоге /etc, а другая — в каталоге /etc/inet. Многие из них дублируются посредством символьных связей, благодаря которым реальные файлы могут находиться в каталоге /etc/inet, а связи — в каталоге /etc.

Имя файла /etc/defaultdomain означает, что его можно использовать только в данном домене DNS, но на самом деле он задает доменное имя NIS или NIS+.

Домен DNS задается в каталоге /etc/resolv.conf, как обычно.

Для определения порядка, в котором производится просмотр имен компьютеров в базе данных /etc/hosts и в службах NIS, NIS+ и DNS, система Solaris использует файл /etc/nsswitch.conf. Для того чтобы не усложнять загрузку, рекомендуем сначала просматривать файл hosts, а затем службу DNS. Строка в файле nsswitch.conf должна выглядеть следующим образом: hosts: files dns

Эта конфигурация задается по умолчанию, если компьютер получает адреса от DNS серверов с помощью протокола DHCP.

Для того чтобы увидеть, какой режим работы сети установлен, следует выполнить команду svcs svc: /network/physical.

Solaris конфигурирует IP-адрес для каждого сетевого интерфейса с помощью файла /etc/hostname.<interface>

/etc/nsswitch.conf

Если начинать "из далека", любое окружение, локальное как и сетевое подразумевает наличие набора данных, определяющих это окружение, которые группируются в некоторые базы данных, например для локального пользователя основная база данных это файл /etc/passwd, и вроде как этого достаточно (для начала), но сетевое окружение это тоже окружение, причем локального пользователя в том числе, и что делать когда появляется разнообразие служб типа: Domain Name Service (DNS), Network Information Service (NIS), Lightweight Directory Access Protocol (LDAP), и кто знает какие будут еще?, тут и возникает необходимость в файле типа /etc/nsswitch.conf Name Service Switch NSS  — Диспетчер Службы Имен проще говоря "переключатель","коммутатор", "свитч", в котором ищется информация, и регламентируется порядок просмотра данных, баз данных, то есть определяется, каким образом процессом осуществляется поиск по различным базам данных, содержащим информацию о хостах, сетях и прочее.

Каждая запись в файле nsswitch.conf содержит имя базы данных и список источников с разделением пробелами. Каждому источнику может соответствовать дополнительный завершающий критерий, который определяет необходимость использования следующего источника в списке. В противном случае поиск завершается на текущем источнике. Каждый критерий содержит один или несколько кодов состояния, а также действия, которые предпринимаются при появлении определенных кодов. Например если при установке мы решили использовать DNS, то файл должен иметь следующую запись: hosts:     files dns, которая будет означать поиск хостов в /etc/hosts и затем из DNS, и все это делает утилита nsdispatch() (name-service switch dispatcher routine  — диспетчер коммутатора службы имен) в библиотеке сокетов.

PS: Кроме локального и сетевого укружения существуют группы, сервися, хосты, которые на прямую связаны с понятием "окружение" и все это в целом называется "Административные базы данных", для просмотра которых существует утилита getent (имеющая непосредственное отношение к файлу /etc/nsswitch.conf):

$ getent services

$ getent passwd

$ getent group

$ getent hosts

$ getent auth_attr  и  getent prof_attr , +(| more), в Solaris

.... nsswitch.conf (5) и тд

Динамическая генерация пользователей

 Параметры сети определяются в файлах:

/etc/defaultdomain – полное имя домена (например, company.ru);

/etc/inet/hosts – таблица соответствия имен компьютеров и их адресов;

/etc/hostname.le0 – краткое имя интерфейса le0. Остальные интерфейсы описаны соответствующими файлами. Должно совпадать с тем, что указано для адреса этого

интерфейса в  /etc/inet/hosts:

cat /etc/hostname.le0

hamburger

cat /etc/inet/hosts | grep hamburger

192.243.78.11 hamburger.macro.su hamburger

/etc/hosts – символьная ссылка на /etc/inet/hosts ;

/etc/inet/nsswitch.conf – вместо host.conf в других UNIX'ах – указание порядка опроса name-сервера и файла hosts ; cat /etc/inet/nsswitch.conf

hosts: files, DNS

/etc/bootptab – адреса принт-сервера и принтера;

/etc/resolv.conf – настройки DNS, включая адреса DNS-серверов;

В этом файле допустимы команды:

    nameserver IP-адрес

    search домен

    domain домен

Первая команда – nameserver – называет IP-адрес сервера имен; всего допустимо до трех таких команд. Вторая указывает, имена каких доменов надо подставлять к имени хоста, если его ввели без имени домена (т.е. для поиска хоста с именем типа sunny ), а команда domain определяет, в каком домене находится наш компьютер; это требуется для того, чтобы вначале попытаться найти компьютер с неполным именем (например, suuny ) в своем домене, а уже затем попытать счастья в других доменах, которые перечислены в директиве search.

domain eu.spb.ru

nameserver 192.168.5.18

search eu.spb.ru

Поиск имени компьютера по адресу или поиск адреса по имени выполняется при

соблюдений всего двух условий: правильно указанного адреса сервера имен и возможности обменяться с ним данными.

/etc/inet/netmasks - в каждой строчке пара: адрес сети, маска сети

cat /etc/netmasks

192.168.1.0 255.255.255.0

/etc/defaultrouter – адрес шлюза ;

/etc/nodename – имя компьютера.

======================https://docs.oracle.com=============================

1. правим /etc/inet/hosts 

#::1              localhost

127.0.0.1  localhost    loghost

192.168.1.10  <mynewhostname>

2. правим /etc/nodename

<mynewhostname>

3. правим /etc/hostname.interfaceу

192.168.1.10

4. правим /etc/inet/netmasks

 255.255.255.0

5. правим /etc/defaultrouter

192.168.1.1

# reboot -- -r  или #svcadm restart svc:/network/physical:default

====================

Assign Static IP:        https://www.unix.com/solaris     https://docs.oracle.com

ifconfig <interface> ip-address up

echo ip-address > /etc/hostname.<interface>

Перезагрузить сеть: #svcadm restart svc:/network/physical:default

https://www.nest.org.ru      <------- Solaris 11 -------> https://stepbystep.ucoz.ru/publ/solaris

Выяснить какие интерфейсы в наличии:

#ifconfig -a configinfo   (ifconfig -a configinfo | sed G - вставка пустой строки)

# dladm show-link

# dladm show-dev

# dladm show-dev  https://docs.oracle.com

Выяснить состояние служб, для статического назначения, то есть что бы конфигурация сети считывалась из файлов конфигурации, отключить nwam и разрешить physical:default:

svcadm disable nwam

svcadm enable physical:default

svcs -a | grep physical

    online         17:32:37 svc:/network/physical:upgrade

    online         17:33:45 svc:/network/physical:default

Solaris Guide 13-16        <--------- ст. 7

$ svcs -v nwam

svcs: Pattern 'nwam' doesn't match any instances

STATE          NSTATE        STIME    CTID      FMRI

$ svcs -v physical

STATE          NSTATE        STIME    CTID      FMRI

    online         -             17:32:37         - svc:/network/physical:upgrade

    online         -             17:33:45        77 svc:/network/physical:default

Назначить адрес и маску:

ifconfig <interface> IP-address broadcast broadcast-address netmask netmask

Здесь <interface> – это имя интерфейса (например, eri0 ), IP-address – адрес, который следует назначить этому интерфейсу, а необязательные параметры broadcast-address и netmask задают широковещательный адрес сети, к которой подключен интерфейс, и маску сети. Для включения интерфейса следует выполнить команду:

#ifconfig <interface> up

В общем и целом:     #ifconfig interface plumb up

ifconfig имя_интерфейса dhcp start

ifconfig имя_интерфейса dhcp status

    # svcadm enable network/physical:default (включение ручной настройки сети)

    # svcadm disable network/physical:nwam (выключение автоматической настройки nwam)

https://docs.oracle.com/ipconfig-12.html

https://www.f-notes.info/solaris:dhcpclient   <-------------- это best!

Solaris Guide 1-3            <--------- PDF ст.33

Solaris Guide 13-16        <--------- Службы и управление ими

https://ru.wikibooks.org/wiki/OpenSolaris/network

https://vds-admin.ru/unix-toolbox/network

По умолчанию в Solaris 10

====/etc/hostname.e1000g0

solaris

====/etc/defaultrouter

192.168.1.1

====/etc/hosts

ссылка на /etc/./inet/hosts

====/etc/inet/hosts

# Internet host table

#

::1 localhost

127.0.0.1 localhost

192.168.1.99 solaris loghost

====/etc/inet.ipnodes

ссылка на /etc/inet/./hosts

====/etc/inet/inetd.conf

# Legacy configuration file for inetd(1M).  See inetd.conf(4).

in.tftpd in.tftpd -s /tftpboot

====/etc/netmasks

ссылка на /etc/./inet/netmasks

====/etc/inet/netmasks

# Both the network-number and the netmasks are specified in

# "decimal dot" notation, e.g:

#  128.32.0.0 255.255.255.0

192.168.1.0 255.255.255.0



====/etc/inet/networks

# Internet networks

#

arpanet 10 arpa # Historical

====/etc/nodename

solaris

====/etc/resolv.conf  https://configure-and-enable-dns-client-service/

domain solaris

nameserver 192.168.1.1

nameserver 8.8.8.8

nameserver 8.8.4.4

search solaris

Механизмы (основные) регулирующие права доступа к устройствам сетевых интерфейсов; разрешения на файлы в /dev и /device.,...и тд, привелегии пользователей #ppriv -eD ifconfig -a.

Процессы 

/usr/proc/bin/ptree        Вывести дерево родитель/потомок для процесса

/usr/proc/bin/pwdx        Вывести рабочий каталог процесса                       

/usr/ucb/ps -au [user] | more              Отобразить использование CPU % для каждого процесса    

/usr/ucb/ps -auxww | grep      Получить полный список процессов (очень длинный)

fuser -uc /var                          Процессы, запущенные из /var

ipcs            Отчет о межпроцессных взаимодействиях

kill -HUP `ps -ef | grep [p]roccess | awk '{print $2}'`   Послать всем связанным процессам сигнал HUP за один раз

lsof -i TCP:25     Соотнести порт с приложением

pfiles                     Показать файлы, открытые процессом                                           

pkill -n                     Убить процесс с определенным именем

ps -edf -o pcpu,pid,user,args          Форматированый вывод 'ps'

ps -ef | grep -i | awk '{ print $2 }' Создать список PID содержащих                   

ps -ef | grep | grep -v grep | cut -c 10-15 | xargs kill -9 Найти и убить процесс

ps -ef | more                                 Показать все запущенные процессы                                  

ps -ef | grep -v "0:00" | more

# /usr/proc/bin/pfiles [номер процесса]      все файлы процесса                             

ps -eo pid,args                       Список процессов в простом формате

ps -fu oracle|grep pmon       Посмотреть, какие инстансы Oracle запущены

top -b 1                                 Отобразить наиболее прожорливый процесс и выйти

-------------------------------------------

prstat    [prstat -J,   prstat -T......]          Аналог  top                          

Usage:  prstat [-acJLmRtTvZ

[-u euidlist] [-U uidlist] [-p pidlist] [-P cpulist] [-C psrsetlist] [-j projidlist] [-k taskidlist] [-z zoneidlist]

[-s key | -S key] [-n nprocs[,nusers]] [interval [counter]]

------------------------------------------

prstat -Z   Для зон                                             

/proc

[14:55@solaris]~ # ps -eaf | grep user    

    user   849   843   0 13:48:05 pts/2       0:00 -bash

    user   843   842   0 13:47:51 ?           0:01 /usr/lib/ssh/sshd

[14:55@solaris]~ # cd /proc/849

[15:21@solaris]/proc/849 # ls -l

total 9832

-rw-------   1 user     staff    4988928 окт. 14 13:48 as

-r--------   1 user     staff        168 окт. 14 13:48 auxv

dr-x------   2 user     staff         32 окт. 14 13:48 contracts

-r--------   1 user     staff         84 окт. 14 13:48 cred

--w-------   1 user     staff          0 окт. 14 13:48 ctl

lr-x------   1 user     staff          0 окт. 14 13:48 cwd ->

dr-x------   2 user     staff       8208 окт. 14 13:48 fd

-r--------   1 user     staff          0 окт. 14 13:48 ldt

-r--r--r--   1 user     staff        120 окт. 14 13:48 lpsinfo

-r--------   1 user     staff        816 окт. 14 13:48 lstatus

...........................................

[17:09@solaris]~ # cd /usr/proc/bin/

[17:09@solaris]/usr/proc/bin # ls

pcred   pflags  pmap    psig    pstop   ptree   pwdx  pfiles  pldd    prun    pstack  ptime   pwait

[17:09@solaris]/usr/proc/bin #

[15:22@solaris]/proc/849 # /usr/proc/bin/pflags 849

849:    -bash

        data model = _ILP32  flags = ORPHAN|MSACCT|MSFORK

 /1:    flags = ASLEEP  waitid(0x7,0x0,0x8047bd0,0xf)

        sigmask = 0x00020000,0x00000000

    Вы можете распечатать учетную информацию для этого процесса, в том числе действующий и реальные UID и GID владельца процесса с помощью команды pcred:

[15:43@solaris]/proc/849 # /usr/proc/bin/pcred 849

849:    e/r/suid=100  e/r/sgid=10

        groups: 10 0 1 2 3 4 6 7 8 14 50 60001 100 101

    Чтобы изучить карту адресного пространства целевого процесса, вы можете использовать pmap. Команда и все библиотеки, необходимые для выполнения:

[15:44@solaris]/proc/849 # /usr/proc/bin/pmap 849

849:    -bash

08045000      12K rw---    [ stack ]

08050000     552K r-x--  /usr/bin/bash

080E9000      76K rwx--  /usr/bin/bash

080FC000     160K rwx--    [ heap ]

CCB30000      64K rwx--    [ anon ]

CCB50000      56K r-x--  /usr/lib/locale/common/methods_unicode.so.3

CCB6D000       4K rwx--  /usr/lib/locale/common/methods_unicode.so.3

CCB70000    1772K r-x--  /usr/lib/locale/ru_RU.UTF-8/ru_RU.UTF-8.so.3

CCD30000       4K rwx--    [ anon ]

CCD3A000       8K rwx--  /usr/lib/locale/ru_RU.UTF-8/ru_RU.UTF-8.so.3

CCD40000    1088K r-x--  /lib/libc.so.1

CCE50000      32K rwx--  /lib/libc.so.1

CCE58000       8K rwx--  /lib/libc.so.1

CCE60000       4K r-x--  /lib/libdl.so.1

CCE71000       4K rw---  /lib/libdl.so.1

CCE80000     516K r-x--  /lib/libnsl.so.1

CCF11000      20K rw---  /lib/libnsl.so.1

CCF16000      32K rw---  /lib/libnsl.so.1

CCF20000      44K r-x--  /lib/libsocket.so.1

CCF37000       4K rwxs-    [ anon ]

CCF3B000       4K rw---  /lib/libsocket.so.1

CCF40000      24K rwx--    [ anon ]

CCF50000     136K r-x--  /lib/libcurses.so.1

CCF80000       4K rwx--    [ anon ]

CCF82000      28K rw---  /lib/libcurses.so.1

CCF89000       8K rw---  /lib/libcurses.so.1

CCF90000       4K rwx--    [ anon ]

CCFA0000       4K rw---    [ anon ]

CCFB0000       4K rw---    [ anon ]

CCFBF000     176K r-x--  /lib/ld.so.1

CCFF0000       4K rwx--    [ anon ]

CCFFB000       8K rwx--  /lib/ld.so.1

CCFFD000       8K rwx--  /lib/ld.so.1

 total      4872K

    Вы можете получить список динамических библиотек, связанных с каждым процессом используя команду pldd:

[16:55@solaris]~ # /usr/proc/bin/pldd 849

849:    -bash

/lib/libcurses.so.1

/lib/libsocket.so.1

/lib/libnsl.so.1

/lib/libdl.so.1

/lib/libc.so.1

/usr/lib/locale/ru_RU.UTF-8/ru_RU.UTF-8.so.3

/usr/lib/locale/common/methods_unicode.so.3

[16:56@solaris]~ #

    Используя команду psig, можно перечислить действия сигналов, связанных с

каждым процессом:

[16:56@ ]~ # /usr/proc/bin/psig 849

    Также возможно напечатать трассировку стека шестнадцатеричного формата для облегченного процесс (LWP) в каждом процессе с помощью команды pstack. Это может быть полезно и может использоваться так же, как команда truss:

[16:56@solaris]~ # /usr/proc/bin/pstack 849

    Возможно, наиболее часто используемым инструментом proc является команда pfiles, которая отображает все открытые файлы для каждого процесса. 

Это полезно для определения операционной зависимости между файлами данных и приложениями:

[17:39@solaris]~ # /usr/proc/bin/pfiles 849

849:    -bash

  Current rlimit: 256 file descriptors

   0: S_IFCHR mode:0620 dev:310,0 ino:12582920 uid:100 gid:7 rdev:24,2

      O_RDWR|O_NOCTTY|O_LARGEFILE

      /devices/pseudo/pts@0:2

   1: S_IFCHR mode:0620 dev:310,0 ino:12582920 uid:100 gid:7 rdev:24,2

      O_RDWR|O_NOCTTY|O_LARGEFILE

      /devices/pseudo/pts@0:2

   2: S_IFCHR mode:0620 dev:310,0 ino:12582920 uid:100 gid:7 rdev:24,2

      O_RDWR|O_NOCTTY|O_LARGEFILE

      /devices/pseudo/pts@0:2

   3: S_IFDOOR mode:0444 dev:319,0 ino:60 uid:0 gid:0 size:0

      O_RDONLY|O_LARGEFILE FD_CLOEXEC  door to nscd[168]

      /var/run/name_service_door

 255: S_IFCHR mode:0620 dev:310,0 ino:12582920 uid:100 gid:7 rdev:24,2

      O_RDWR|O_NOCTTY|O_LARGEFILE FD_CLOEXEC

      /devices/pseudo/pts@0:2

[17:39@solaris]~ #

    Кроме того, можно получить текущий рабочий каталог цели  с помощью команды pwdx:

[17:39@solaris]~ # /usr/proc/bin/pwdx 849

849:    /home/user

    Если вам нужно проверить дерево процессов для всех родительских и дочерних процессов, содержащих целевой PID, вы можете использовать команду ptree. Это полезно для определения зависимости между процессами, которые не очевидны при просмотре списка процессов:

[17:52@solaris]~ # /usr/proc/bin/ptree 849

602   /usr/lib/ssh/sshd

  842   /usr/lib/ssh/sshd

    843   /usr/lib/ssh/sshd

      849   -bash

        854   bash

          959   /usr/proc/bin/ptree 849

[17:52@solaris]~ #

Управление ресурсами 

/usr/bin/ldd [filename] Список динамических зависимостей выполняемого файла

/usr/proc/bin/pmap pid Отчет о карте адресного пространства процесса

 Маршрутизация осуществляется на сетевом уровне. Когда приходит пакет, предназначенный для  другого узла, его целевой IP-адрес сравнивается с записями в таблице маршрутизации ядра.  При совпадении (хотя бы частичном) с каким-нибудь маршрутом в таблице пакет направляется по  IP-адресу следующего шлюза, связанного с данным маршрутом.

Но есть два особых случая:

    Чтобы некоторая машина могла найти в сети другую, должен иметься механизм (набор правил) описывающий то, как добраться от одной машине к другой, из точки А в точку В. Такой механизм называется маршрутизацией, реализованный  так или иначе в виде таблиц, стандартном способе сопоставления данных в вычислительных системах. Цель маршрутизации – это выбор оптимального маршрута доставки данных из одной сети в другую, проще говоря правила маршрутизации определяют, куда отправлять IP-пакеты, цель маршрутизатора состоит в том, чтобы соединять несколько сетей и передавать пакеты от одной сети к следующей. 

PS: Табличное задание данных, функции отличается от аналитического, тем что любой "закон" линейный, не линейный в таблице реализуем и реализуем более оптимально чем аналитический (последовательный), что очевидно, поэтому в какую сторону вычислительной техники мы непосмотрим, везде найдем таблицы.

Это означает, что у маршрутизатора есть несколько интерфейсов. Каждый интерфейс является элементом или узлом в различной сети 

У маршрутизатора есть таблица маршрутизации, которая является списком сетей, известных маршрутизатору. 

Таблица маршрутизации включает сетевые адреса для своих собственных интерфейсов, которые являются непосредственно соединенными сетями, так же как и сетевые адреса для удаленных сетей. 

Удаленная сеть является сетью, которая может быть достигнута, только передавая пакет к другому маршрутизатору, маршрутиризаторы могут быть устройства как специальнно  предназначенные для задач маршрутиризации, так и обычными рабочими станциями, таблицы маршрутиризации если вести разговор о локальной операционной системе, хранятся в одной из таблиц ядра (Kernel IP routing table).

    Решение возникших проблем маршрутиризации на локальной машине начинается с анализа таблиц маршрутиризации этой машины. Вести таблицы маршрутизации можно статически или динамически как и маршрутиризация может быть статической и динамической.  Статический маршрут это маршрут, который задается явно с помощью команды route.  Динамическая маршрутизация выполняется процессом-демоном (routed или gated), который ведет и модифицирует таблицу маршрутизации на основе сообщений от других компьютеров сети.     Динамическая маршрутизациия  выполняется по средством специальных протоколов: RIP(L3), OSPF(L3), IGRP(L3), EGP(L7), BGP (L7) и т. д.

    "Маршрут" строго говоря это пара адресов, маршрут из точки А в точку В, и это один маршрут, маршрут из точки В в точку А это другой маршрут и в случае статической маршрутиризации для двухстороннего взаимодействия статический маршрут должен быть настроен в обоих направлениях.

Маршруты могут быть прямыми и обратными "не посредственными" и проходящими через шлюз. 

Сеть сама по себе "замкнута" , то есть самостоятельно пакет из сети ни куда не убежит и если маршрут лежит в другую сеть, то он задается "адресом назначения" (адресом точки В)  и сетевым шлюзом (gateway - "специфичным интерфейсом" в отличии от других хостов сети) это еще одна пара (из таблицы) указывающая на то, что если вы пытаетесь соединиться с адресом назначения лежащим за пределами вашей сети, то вам нужно устанавливать связь через "сетевой шлюз".

Существует три типа адресов назначения: 

"Маршрут по умолчанию" (default route, обычно это первая строка в выводе таблицы) используется, если не подходит ни один из других маршрутов. Когда локальной системе нужно установить соединение с удаленным хостом, она обращается к таблице маршрутов для того, чтобы определить, существует ли такой маршрут. Если удаленный хост попадает в  подсеть, для которой известен способ ее достижения (маршруты типа Cloned), то система определяет возможность подключиться к ней по этому интерфейсу. Если все известные маршруты не подходят,  у системы остается маршрут "default", в поле флагов он всегда помечен как "G"  (в выводе ip route "С" будет означать прямое подключение , данная сеть is directly connected).  Для хостов локальной сети этот сетевой шлюз указывает на машину, имеющую прямое подключение к внешнему миру, с тем самым "специфичным интерфейсом" (неважно, используется ли связь по протоколу PPP, канал DSL, кабельный модем, T1 или какой-то другой сетевой интерфейс).

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

Как одно из достоинств статические маршруты, по сравнению с динамическими, характеризуются более высоким приоритетом, поскольку административное расстояние AD = 1., или "Административная дистанция" показатель определяющий степень доверия к источнику маршрутной информации. Еще один показатель это "Метрика" она определяет "стоимость маршрута" до сети назначения и формируется источником маршрутной информации. Если один источник маршрутной информации получит несколько маршрутов до сети назначения, то в таблицу маршрутизации будет занесен маршрут с наименьшей метрикой. Статические маршруты обладают преимуществом при передаче данных в каналах с узкой полосой пропускания,  например, в аналоговых коммутируемых соединениях (через модем) или соединениях типа «точка-точка»,  поэтому они могут использоваться для создания резервного канала в случае отказа основного. 

Степень надежности маршрута определяется значением так называемой "административной дистанции (как писалось выше)". Для статического маршрута оно равно 1 и это естественно поскольку маршрут задан одной записью в таблице маршрутиризации, что ставит его на второе место по надежности, на первом  прямое соединение источника и получателя. Для того чтобы обеспечить резервный канал, достаточно изменить значение административной дистанции для определенного статического маршрута, тогда при «падении» основного канала весь трафик заданной сети пойдет через резервный до восстановления основного.  Этот вид маршрутизации называется плавающей статической маршрутизацией. К статическим маршрутам также относится маршрут по умолчанию (default route), а для динамической маршрутиризации  не доступна "тонкая, детальная" настройка маршрутиризации.

    Таблица маршрутизации — таблица, состоящая из сетевых маршрутов и предназначенная для определения наилучшего пути передачи сетевого пакета, на практике это файл(электронная таблица), а точнее "база данных" хранящаяся на устройстве занимающимся маршрутиризацией. Маршрутизатор может быть реализован либо полностью программным способом (в этом случае он представляет собой модуль операционной системы, установленной на компьютере общего назначения, выполняющем функции сервера), либо аппаратно-программным способом (является специализированным вычислительным устройством, в котором часть функций выполняется нестандартной аппаратурой, а часть — программными модулями, работающими под управлением специализированной операционной системы, например Cisco, называемой монитором). Основное достоинство подобных устройств это скорость и надежность при выполнении стоящих задач.

    Основное преимущество программных маршрутизаторов перед аппаратными — гибкость, интеллектуальность и простота модификации алгоритмов и именно по этому "большая" часть современных программных маршрутизаторов функционирует под управлением BSD и Linux, все *nix системы хорошо подходят под роль сетевого устройства с названием "Маршрутиризатор" , основная функциональность подобных устройств обеспечивается ядром операционной системы как в BSD, изначально рожденной для подобных задач, так и в Linux который начиная с версии ядра 2.2, содержит обновлённую сетевую подсистему, результат програмных маршрутиризаторов это высокая  функциональность (что естественно), превосходящая возможности аппаратно-программных маршрутизаторов, функциональность позволяет реализовывать разнообразное управление сетевым трафиком, в частности, накладывать ограничения на транзитный трафик и осуществлять маршрутизацию на основе как идентификатора пользователя, адреса назначения, номера порта соединения, типа сервиса и других полей сетевых заголовков, так и непосредственного содержания передаваемых в пакетах данных, хорошим примером будет BRAS server "любого" провайдера. (Однако под эту стройную классификацию маршрутиризаторов не "совсем" подходит компания с "не замысловатым" названием Cisco)

    Таблица маршрутиризации описывает соответствие между адресами назначения сетей (Destination) куда должен попасть пакет  и интерфейсами (Iface ), через которые следует отправить пакет данных до следующего маршрутизатора и это суть таблицы, таблица  опосредованно включает правила по которым маршрутизируются пакеты (PBR), которые редактируются, чем достигается более гибкая маршрутиризация,  в конечном итоге таблица представляет из себя набор этих соответствий и правил, таблица может быть одна в простейшем случае, но обычно их несколько, сформированных "тематически" по умолчанию ядром операционной системы, изначально предопределены таблицы local, main и default

  В итоге, после определения адреса назначения (передачи) выбирается определённый выходной физический порт маршрутизатора (если устройство специализировано под задачи маршрутиризации и имеет несколько сетевых интерфейсов) и этот процесс называется определением маршрута перемещения пакета, можно даже сказать "детерминацией".  

 Таблица как простейшая форма правил маршрутизации, состоит, из полей:


Так или иначе, в той или иной степени рабочая станция, компютер в сети является "сетевым устройством" и участвует в маршрутиризации, проще комутации по скольку маршрутиризатор выполняет функции комутации в IP сетях на сетевом уровне, участвует в маршрутиризации по средствам таблиц ядра операционной системы и следовательно эти таблици можно и должно соответствуеще конфигурировать, В момент начальной загрузки системы таблица маршрутизации пуста, и пополняется потом, по мере загрузки системы и её дальнейшей работы.

В конце концов, что такое "роутер" (маршрутиризатор) - это сетевое устройсво имеющее минимум два сетевых интерфейса смотрящие в разные сети и осуществляющее пересылку пакетов (роутинг) между этими сетями, инструментом конфигурации этого "роутинга" является команда, утилита ядра route , для задания  маршрута (добавления записи в таблицу маршрутов) используется таже команда route с ключом add, как и  

ip route , (ip для Linux),  в этом и кроется вся "сермяжная правда", а все остальное от "лукавого".

https://www.cisco.com/c/ru_ru/floating-static-route

Синтаксис (Cisco):

ip route [IP сети назначения] [маска] [IP интерфейса(шлюза, просто интерфейс например: fa 0/0), на которые надо перенаправить пакеты, чтобы попасть в данную сеть]

    Типа: ip route 192.168.1.0 255.255.255.0 192.168.100.1

Маршрут с IP 0.0.0.0 и маской 0.0.0.0 становится маршрутом по-умолчанию, на который уйдут все пакеты адреса назначения которых прямо отсутствуют в таблице маршрутизации (ip route 0.0.0.0 0.0.0.0 [интерфейс,IP- адрес]).

    Типа: ip route 0.0.0.0 0.0.0.0 192.168.100.1

Команда: show ip route   покажет результаты (если речь идет о маршрутиризаторе)


Просмотр таблицы маршрутизации

netstat -rn   

route -n  (просто route; routel - даст подробный вывод

ip route (ip r s)

cat /proc/net/route     непосредственно просмотреть файл (в зависимости от системы)


routel;    ip route;

default - вариант по умолчанию, иначе должен быть ip адрес цели(сети) и маска подсети (192.168.1.0/ 24)

via 192.168.1.1 - через какой шлюз мы можем добраться до этой цели;

dev enp2s0 - сетевой интерфейс, с помощью которого будет доступен этот шлюз;

proto static - маршрут был установлен администратором;

proto kernel - маршрут был установлен ядром;

metric - это приоритет маршрута, чем меньше значение - тем выше приоритет.

scope - область действия (scope link - запись действительна только для этого интерфейса, scope host - запись действительна только для хоста)

target - ip адрес цели

src (source - источник)

Если не учитывать безусловно "функциональную" и "удобную" утилиту ip в Linux, то существует две основные утилиты для просмотра таблиц это netstat (netstat -rn) и route (route -n) как для Unix так и для Linux, разница в выводе команд будет заключаться в представлении маршрута по умолчанию, (netstat выводит адрес 0.0.0.0, а route — метку default) и разницей в названии полей самой таблицы маршрутизации. 

Ключи -rn в команде netstat запрещает поиск доменных имен в DNS, поэтому все адреса будут представлены в числовом виде (подобно команде route без параметров), то есть скажем прямо разницы нет, до тех пор пока не придет пора изменить таблицу, то есть добавить или удалить маршрут и в этом случае придется использовать route.

netstat -rn

Kernel IP routing table

Destination         Gateway         Genmask             Flags         MSS           Window         irtt  Iface

0.0.0.0             192.168.1.1     0.0.0.0             UG            0             0              0     wlan0

172.16.11.0         0.0.0.0         255.255.255.0       U             0             0              0     vmnet8

172.16.193.0        0.0.0.0         255.255.255.0       U             0             0              0     vmnet1

192.168.0.0         0.0.0.0         255.255.255.0       U             0             0              0     eth0

192.168.1.0         0.0.0.0         255.255.255.0       U             0             0              0     wlan0 


route

Kernel IP routing table

Destination         Gateway         Genmask         Flags     Metric     Ref          Use   Iface

default             _gateway        0.0.0.0         UG        600        0            0     wlan0

172.16.11.0         0.0.0.0         255.255.255.0   U         0          0            0     vmnet8

172.16.193.0        0.0.0.0         255.255.255.0   U         0          0            0     vmnet1

192.168.0.0         0.0.0.0         255.255.255.0   U         0          0            0     eth0

192.168.1.0         0.0.0.0         255.255.255.0   U         600        0            0     wlan0


route -n

Kernel IP routing table

Destination         Gateway         Genmask             Flags     Metric     Ref      Use   Iface

0.0.0.0             192.168.1.1     0.0.0.0             UG        600        0        0     wlan0

172.16.11.0         0.0.0.0         255.255.255.0       U         0          0        0     vmnet8

172.16.193.0        0.0.0.0         255.255.255.0       U         0          0        0     vmnet1

192.168.0.0         0.0.0.0         255.255.255.0       U         0          0        0     eth0

192.168.1.0         0.0.0.0         255.255.255.0       U         600        0        0     wlan0

cat /proc/net/route 

Iface   Destination  Gateway   Flags  RefCnt   Use     Metric     Mask        MTU     Window     IRTT 

wlan0   00000000     0101A8C0  0003   0        0         600      00000000     0      0          0 

vmnet8  000B10AC     00000000  0001   0        0         0        00FFFFFF     0      0          0 

vmnet1  00C110AC     00000000  0001   0        0         0        00FFFFFF     0      0          0 

eth0    0000A8C0     00000000  0001   0        0         0        00FFFFFF     0      0          0 

wlan0   0001A8C0     00000000  0001   0        0         600      00FFFFFF     0      0          0

Примеры создания и удаления статических маршрутов

Добавление маршрута через шлюз: 

route add -net 192.168.0.0/24 gw 10.0.0.1

Добавление маршрута через интерфейс: 

route add -net 192.168.0.0/24 dev eth1

route add -net 10.0.3.0/24 dev wlan0

Маршрут до отдельного хоста: 

route add -host 192.168.0.1 gw 172.16.0.1

Удаление маршрута: 

route del ...

Создание статического маршрута в Linux:

# route add -net 192.168.1.0/24 gw 192.168.2.2

Удаление статического маршрута в Linux:

# route del -net 192.168.1.0/24 gw 192.168.2.2

Создание статическиого маршрута в FreeBSD:

# route add -net 192.168.1.0/24 192.168.2.2

Добавить маршрут:

route add net 192.168.1.0 192.168.1.1

    где: add net 192.168.1.0: gateway 192.168.1.1

route add 192.168.1.0 host 192.168.1.1

    где: add net 192.168.1.0: gateway 192.168.1.1

route add 192.168.1.0 192.168.1.1

    где: add net 192.168.1.0: gateway 192.168.1.1

Как правило на узле несколько сетевых интерфейсов, и возможно разрешить или запретить пересылку пакетов между интерфейсами (forwarding).  За этот параметр для IPv4 отвечает переменная net.ipv4.ip_forward (1 = «разрешить», 0 = «запретить»).  cat /proc/sys/net/ipv4/ip_forward;    echo 1 > /proc/sys/net/ipv4/ip_forward

Пример для BSD

В примере RouterA это FreeBSD, который выступает в качестве маршрутизатора в сеть Интернет. Его "маршрут по умолчанию" настроен на 10.0.0.1, что позволяет ему соединяться с внешним миром. 

Мы будем предполагать, что RouterB уже правильно настроен и знает все необходимые маршруты, то есть на RouterB "маршрут по умолчанию" использует 192.168.1.1 в качестве шлюза. Если мы посмотрим на таблицу маршрутизации RouterA, то увидим примерно следующее:

netstat -nr

Internet:

Destination    Gateway   Flags    Refs    Use     Netif  Expire

default        10.0.0.1  UGS      0       49378         xl0

127.0.0.1      127.0.0.1 UH       0       6             lo0

10.0.0/24      link#1    UC       0       0             xl0

192.168.1/24   link#2    UC       0       0             xl1


С текущей таблицей маршрутизации RouterA не сможет достичь внутренней сети 2 (Internal Net 2 192.168.2.0/24). Один из способов обхода этой проблемы - добавление маршрута вручную. Следующая команда выполненная на BSD - RouterA добавляет внутреннюю сеть 2 к таблице маршрутизации RouterA с адресом  192.168.1.2 в качестве следующего узла, или сеть :    192.168.2.0/24  через  192.168.1.2   

# route add -net 192.168.2.0/24 192.168.1.2

https://www.freebsd.org/doc/ru_RU.network-routing.html

PBR и команда ip route 

Далее про Linux и про iproute2 <ip route и ip rule>: 

Таблиц маршрутизации несколько, также можно создавать свои таблицы маршрутизации. Изначально предопределены таблицы local, main и default.

ip route show table main

ip route show table local

ip route show table default

ip route show table [all;  unspec;  0;] - просмотр всех таблиц

Кроме редактирования стандартных таблиц созданных средствами ядра есть возмохность создания собственных таблиц и правил, называется это policy-routing, он же PBR

Policy Based Routing это механизм реализации пересылки/маршрутизации (forwarding/routing) пакетов данных, основанный на наборе правил, определенных администратором сети. Это более гибкий механизм для обработки пакетов, дополняющий существующие механизмы.

Можно определить два вида правил: 

– правила таблиц то есть соответствие между адресами назначения и интерфейсами , через которые следует отправить пакет данных до следующего маршрутизатора, 

– правила через какие таблицы надо проводиь пакеты, как со всех, так и с отдельных адресов по средствам проверки отправителя пакета (from), их можно смотреть так;

ip rule    -  просмотреть все правила или ip rule list

92.168.1.20 table 120    -   добавить правило в таблицу №120

# ip rule

0: from all lookup local

32765: from 192.168.1.20 lookup 120 

(пакеты с хоста 192.168.1.20 будут маршрутизироваться по  правилам таблицы №120)

32766: from all lookup main

32767: from all lookup default

# ip rule del prio [индификатор правила]   -  удалить правило (# ip rule del pref [selector])

32766: – идентификатор правила

lookup  – в какую таблицу направлять пакет

Поскольку это "правила" они должны соответствовать  некоторым условиям:

from all       – условие, означает пакеты с любых адресов, 

0: from all lookup local

32766: from all lookup main

32767: from all lookup default

# ip rule add from 1

from            – это проверка отправителя пакета.

to                 – получатель пакета.

iif                 – имя интерфейса, на который пришел пакет.

oif                – имя интерфейса, с которого уходит пакет. Это условие действует только для пакетов, исходящих из локальных сокетов, привязанных к конкретному интерфейсу.

tos               – значение поля TOS IP-пакета.

fwmark        – проверка значения FWMARK пакета(маркировки пакета). При помощи правил iptables можно отфильтровать пакеты по огромному количеству признаков и установить определенные значения  FWMARK, затем эти значения учитывать при роутинге.

Условия можно комбинировать, например from 192.168.1.0/24  to  10.0.0.0/8, а также можно использовать префикc not, который указывает, что пакет не должен соответствовать условию, чтобы подпадать под это правило.

Таблицы имеют цифровые идентификаторы  их символьные имена задаются в файле /etc/iproute2/rt_tables  и используются лишь для удобства.

$ cat /etc/iproute2/rt_tables

#

# reserved values

#

255 local

254 main

253 default

0 unspec

#

# local

#

#1 inr.ruhep

broadcast – означает, что пакеты соответствующие этой записи будут отправлены как broadcast-пакеты, в соответствии с настройками интерфейса.

local – пакеты будут отправлены локально.

scope host – указывает, что эта запись действительная только для этого хоста. (обладает такой областью действия "host")

Пример Policy Based Routing: 

Есть некий шлюз, на него приходят пакеты с IP 192.168.1.20.  Пакеты с этого IP требуется отправлять на шлюз 10.1.0.1.  Чтобы это реализовать делаем следующее:

– Создаем таблицу с единственным правилом: 

(то есть добавляем номер таблицы к команде  ip route , иначе правило будет в таблице main , есть правило есть таблица, – нет правила нет таблицы)

# ip route add default via 10.1.0.1 table 120

– Создаем правило, отправляющее нужные пакеты в нужную таблицу:

# ip rule add from 192.168.1.20 table 120

Таблица может быть любой если ее правила соответствуют задаче которую надо выполнить.

ip route show table nnn - отобразить все маршруты из таблицы 255

ip route get 10.10.20.0/24 - отобразить маршрут к этой сети

ip route get 10.10.20.0/24 from 192.168.12.9 - отобразить маршрут к этой сети от указного интерфейса.

ip route add 10.10.20.0/24 via 192.168.50.100 - создать маршрут

ip route delete 10.10.20.0/24 - удалить маршрут.

ip route del 10.10.20.0/24 via 192.168.50.100 - удалить маршрут.

ip route add default via 192.168.50.100 - создать маршрут по умолчанию.

ip route add 10.10.20.0/24 dev eth0 - создать маршрут к указной сети.

ip route add table nnn 10.10.20.0/24 dev eth0 - создать маршрут в специальной таблице роутинга.

ip route add blackhole 10.10.20.0/24 dev eth0 - создать blackhole маршрут.

ip route add unreachable 10.10.20.0/24 dev eth0 - создать unreachable маршрут.

ip route change 128.50.0.0 128.50.1.5         - Сменить маршрут

ip route flush - Очистить таблицу маршрутов. Удаляются все записи

ip route get [hostname] (mtr - так же подойдет, как и traceroute

Определить интерфейс, используемый для доступа к удаленному хосту       

ip route get 8.8.8.8:  8.8.8.8 via 192.168.1.1 dev ens33 src 192.168.1.160 uid 0   cache

route [-dnqtv] команда [[модификаторы] аргументы]

-n – сообщать IP-адреса, вместо имен компьютеров. Для вывода имени его еще нужно

определить по адресу, это занимает время и окажется невозможным при сбое настроек или недоступности сервера имен;

-v – сообщить дополнительные детали;

-q – выполнять "молча", т.е не выдавая никаких сообщений.

Команда route также способна выполнять следующие действия в зависимости от внутренних

команд, переданных ей в качестве аргументов:

add – добавить маршрут;

change – изменить маршрут (например, шлюз для сети);

flush – удалить все маршруты;

delete – удалить один указанный маршрут;

get – найти и показать маршрут до определенного места назначения;

monitor – следить за маршрутом и сообщать об изменении информации в таблице.

http://xgu.ru/wiki/

https://losst.ru/marshrutizatsiya-v-linux

https://www.ibm.com/developerworks/ru/  <-----------

Поиск 

egrep "patterna|patternb"             Поиск нескольких шаблонов в одном файле

find -name "" -exec rm -rf {} \;     Рекурсивный поиск файлов по имени и их удаление

find . -type f -print | xargs grep -i [PATTERN] Рекурсивный grep в файле

find . ! -mtime - | /usr/bin/xargs rm -rf         Найти и удалить файлы старше

find . -exec egrep -li "str" {} \;              Поиск строк в файлах, начинающихся с cwd

find . -mtime -1 -type f                         Поиск недавно измененных файлов

find . -type f -exec grep "" {} \; -print Искать файлы, содержащие в пределах дерева каталогов

find ./ \! -type f -exec ls -l {} \;|grep -v '^[l|p|s|-]'|grep -v 'total' | wc -l Посчитать число подкаталогов в каталоге

find / -fstype nfs -prune -o fstype autofs -prune -o -name filename -print Поиск вне файловых систем nfs

find / -mtime <# of days> Найти файлы, модифицированные # дней назад

find / -perm -2 -a ! -type l                     Найти файлы, доступные на запись 'others'

find / -type f |xargs ls -s | sort -rn |more Список файлов, занимающих много дискового пространства

find / -user                            Найти все файлы, принадлежащие

find / | grep [file mask]     Быстрый способ найти файл

find /proc/*/fd -links 0 -type f -size +2000 -ls Поиск больших файлов, которые были удалены или перемещены, но остались открыты каким-либо процессом

grep /var/sadm/install/contents| awk '{ print $1 ' ' $10 }' Найти какому пакету принадлежит файл

ls -lR | grep Быстрая альтернатива find

Пространство swap 

swap -a /export/disk1/swapfile         – Добавить своп-файл

swap -d /dev/dsk/c0t0d0s4              – Удалить своп-устройство

swap -l                                     – Вывести список текущих своп-устройств            

swap -s                                    – Вывод доступного пространства                           

Файлы swap: 

mkfile -nv 10m /export/disk1/myswap – Создает пустой 10-и мегабайтный свап-файл в /export/disk1

mkfile -v 10m /export/disk1/myswap –Создает файл подкачки на 10 мегабайтов в /export/disk1

Конфигурация системы 

/usr/sbin/eeprom auto-boot? false Изменить переменную autoboot? таким образом, чтобы система загружалась только после подтверждения

/usr/sbin/eeprom diag-switch? true Провести диагностику во время следующей       загрузки

/usr/sbin/eeprom local-mac-address?=true Настройка многопортовой сетевой карты

/usr/sbin/grpck                 Проверить синтаксис /etc/group

/usr/sbin/pwck                 Проверить синтаксис /etc/passwd

/usr/sbin/sys-unconfig Очистить сетевую конфигурацию

/usr/sbin/useradd         Добавить пользователя

drvconfig ; disks                 Добавить в систему диск горячей замены


Системная информация и мониторинг 

/bin/echo "0t${stamp}>Y\n       Перевод времени UNIX в удобоваримую форму

/usr/platform/`/bin/uname -i`/sbin/prtdiag -v Диагностика системы

/usr/sbin/eeprom                  Просмотр параметров eeprom

/usr/sbin/prtconf -vp Детальный просмотр системной конфигурации

coreadm -e log                          Отчет ядра

grep "\-root" /var/adm/sulog | grep -v \+ | tail -25 Перечислить все попытки     переключения на аккаунт root

isainfo -bv              Быстрая проверка режима 32 или 64 bit               

last                             Показать, кто и откуда входил в систему

logger -i

prtconf -pv | grep banner-name |awk -F\' ' { print $2 } ' | head -1   Показать модель сервера

prtpicl -v | grep wwn Команда поиска постоянно выделенной памяти (?)

psradm -f [processor id] Отключить процессор (?)

psrinfo | wc -l Показать число процессоров

sar -u                 Отчет о загрузке CPU

sar [ -aA ] [ -o filename ] t [ n ] Обобщенный отчет об активности системы

telnet 13 | grep ':' Получить время удаленной машины

uname -a Отобразить системную информацию

uname -X Отобразить системную информацию                          

vmstat 10 Отчет о основных системных параметрах в течении 10 секунд

who -b          Причина последней перезагрузки:   system boot  2021-11-19 08:50

ypcat hosts | sort -n -t. +0 -1 +1 -2 +2 -3 +3 -4 Взять вывод команд "ypcat hosts" или "cat /etc/inet/hosts" и сортировать по IP

memory – Report on usage of virtual and real memory.

swap – available swap space (Kbytes)

free – size of the free list (Kbytes)

page – Report information about page faults and paging activity. The information on each of the following activities is given in units per second.

re – page reclaims — but see the -S option for how this field is modified.

mf – minor faults — but see the -S option for how this field is modified.

pi – kilobytes paged in

po – kilobytes paged out

fr – kilobytes freed (освобожденные)

de – anticipated short-term memory shortfall (Kbytes)

sr – pages scanned by     алгоритм "часы"          clock algorithm

When executed in a zone and if the pools facility is active, all of the above (except for “de”) only report activity on the processors in the processor set of the zone's pool.

Если виртуальной памяти достаточно, но оперативной памяти хронически не хватает, система будет в значительной степени занята пейджингом и не будет нормально откликаться на запросы. В такой ситуации можно наблюдать невиданную дисковую активность, а сканер страниц будет занимать до 80% времени процессора.

Индикаторами нехватки памяти в системе являются активность сканирования страниц на предмет пометки для выгрузки и активная работа устройства, на котором расположен swap раздел. Повышенная частота сканирования страниц (scan rate) – главный показатель того, что в системе перестало хватать оперативной памяти. Для просмотра значения scan rate используйте команды: sar –g или vmstat

При анализе частоты сканирования с помощью vmstat имеет смысл запустить эту программу с параметром 60 для получения статистики каждые 60 секунд:

vmstat 60

kthr memory page disk faults cpu

r b w   swap   free re mf pi po fr de sr cd f0 s0 -- in sy cs us sy id

0 0 0  482100  7288 23 63 126 31 46 8 54 28 0 0 0 333 1519 327 5 11 84

0 1 0  470816  2060 0  26 1  51 103 0 123 240 0 0 0 960 969 649 4 92 4

Первую строку (суммарную статистику) можно игнорировать. Если показатель page/sr остается выше 200 страниц в секунду в течение длительного времени, это говорит о вероятной нехватке оперативной памяти в системе.

Безопасность 

crypt abc && rm abc.cr                         Дешифрация файла с помощью crypt

crypt abc.cr && rm abc                         Шифрация файла с помощью crypt

echo 'Please go away' > /etc/nologin Прекратить вход пользователей в систему

find / -perm -0777 -type d -ls                 Найти все каталоги на запись

find / -type f -perm -2000 -print         Найти все SGID файлы

find / -type f -perm -4000 -print         Найти все SUID файлы

trap 'exit 0' 1 2 3 9 15                              Перехват специального сигнала и выход

vi -x [filename]                                       Зашифровать файл с помощью vi

Установки терминала 

stty erase ^?     Для удаления символа использовать клавишу delete

stty erase ^H     Для удаления символа использовать клавишу backspace

stty sane             Перезапустить терминал после просмотра бинарного файла

tput rmacs             Перезагрузить стандартный набор символов


Snoop 

snoop -d pcelx0                                           Просматривать все пакеты на устройстве

snoop -i /tmp/mylog -o /tmp/newlog host1   Все пакеты с host1 записывать в лог

snoop -i /tmp/mylog -v -p101         Показать отладочную информацию по пакету 101 из лога

snoop -i /tmp/mylog host1 host2    Просмотреть лог на предмет пакетов между hosts1 и host2

snoop -o /tmp/mylog pcelx0             Сохранить все пакеты с устройства в лог

snoop -s 120                                    Отобразить первые 120 байт заголовка пакета

snoop -v arp                                     Захват широковещательных пакетов arp в вашей сети

snoop port [port-number]                  Монитроинг конкретного порта

ZFS

root@solaris:~# swap -l

swapfile    dev   swaplo           blocks            free

/dev/zvol/dsk/rpool/swap   231,1                      8       2097144      770520

https://docs.oracle.com/cd/index.html

=================Проекты====================

cat /etc/user_attr    либо     cat /etc/project

default – к нему относятся все пользователи, группы и процессы,для которых явным образом не указано иное.

===========Приоритеты процессов, настройка таблиц диспетчера=============

dispadmin -c TS -g > prior

cat prior

ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait PRIORITY LEVEL     модифицировать

===================NFS========================

В Solaris файл списка "экспорта" каталогов находится в файле – /etc/dfs/dfstab

rpcinfo -p      Проверки готовности всех служб NFS к работе через rpcbind

При запуске системы в многопользовательском режиме -3, rpcbind запускается автоматически, а службы NFS – в случае, если существует файл /etc/dfs/dfstab

В Solaris10 служба NFS запускается и останавливается также, как и другие службы командой:   svcadm enable nfs/server и svcadm disable nfs/server соответственно

rpcinfo -p      Проверка, что mountd и nfsd запущены правильно  (если список то все в порядке)

nfsstat -s | more      Статистика о работе сервера NFS

 The fields of  vmstat's  display are

kthr -- Report the number of kernel threads in each of the three following states:

r

the number of kernel threads in ru n queue

(количество потоков ядра в очереди выполнения)

b

the number of blocked kernel threads that are waiting for resources I/O, paging, and so forth

(количество заблокированных потоков ядра, ожидающих I/O ресурсов, подкачки и т. д.)

w

the number of swapped out lightweight processes (LWPs) that are waiting for processing resources to finish. (количество замененных lwp процессов, которые ждут завершения обработки ресурсов.)

Если программа vmstat сообщает о постоянной активности устройства свопинга, а частота сканирования страниц высока (а в Solaris 8 и более новых версиях она вообще должна быть близка к нулю в обычной ситуации), то следует подумать об уменьшении числа одновременно запущенных процессов или увеличении объема оперативной памяти.

disk --Report the number of disk operations per second. There are slots for up to four disks, labeled with a single letter and number. The letter indicates the type of disk (s = SCSI, i = IPI, and so forth); the number is the logical unit number.

 faults -- Report the trap/interrupt rates (per second ~~ прерываний в секунду).

in interrupts

sy system calls

cs CPU context switches

When executed in a zone and if the pools facility is active, all of the above only report actitivity on the processors in the processor set of the zone's pool.

cpu -- Give a breakdown of percentage usage of CPU time. On MP systems, this is an average across all processors.

us user time

sy system time

id idle time

When executed in a zone and if the pools facility is active, all of the above only report actitivity on the processors in the processor set of the zone's pool.

Демон ограничения ресурсов rcapd занимается ограничением потребления физической памяти для процессов, относящихся к проектам с установленными ограничениями.

rcapstat, rcapadm, предостаавляют возможность управления работой rcapd и получения статистики.

Полезные команды для работы с файловыми системами в solaris.

/usr/sbin/devnm  name [name...]

выводит устройство, на котором смонтирована файловая система, указанная в аргументе.

$ devnm / /var

/dev/md/dsk/d10 /

/dev/md/dsk/d30 /var

/usr/sbin/fstyp [-v] special

выводит тип файловой системы устройства special. Полезная команда, чтобы узнать метод оптимизации файловой системы, какой процент места зарезервирован и может быть использован только root-ом.

# fstyp -v /dev/md/dsk/d30 | grep minfree

minfree 10%      maxbpg  2048    optim   time

Исправить метод оптимизации файловой системы и процент резервированного места можно командой /usr/sbin/tunefs:

# tunefs -o space /dev/md/rdsk/d10

# tunefs -m 1 ; # оставить 1% зарезервированным для root-а

Например, следующая команда проверяет состояние службы ssh.

# svcs -l svc:/network/ssh:default

fmri         svc:/network/ssh:default

name         SSH server

enabled      true

state        offline

next_state   none

state_time   22 января 2020 г.  9:16:25 MSK

restarter    svc:/system/svc/restarter:default

dependency   require_all/none svc:/system/filesystem/local (online)

dependency   optional_all/none svc:/system/filesystem/autofs (online)

dependency   require_all/none svc:/network/loopback (online)

dependency   require_all/none svc:/network/physical (maintenance)

dependency   require_all/none svc:/system/cryptosvc (online)

dependency   require_all/none svc:/system/utmp (online)

dependency   require_all/restart file://localhost/etc/ssh/sshd_config (online)

https://blog.strangeman.info/disable-strict-ssh.html    

https://docs.oracle.com

Solaris-introdution       <-----------------PDF

Эви Немет - Unix и Linux.  <---------PDF

----------------------------------------

http://www.unixpin.com/wordpress/category/solaris/

https://docs.oracle.com/cd/E19253-01/820-2979/index.html    <-----Сю-да

Solaris-10_Руководство по установке         <-------------- PDF

Solaris Guide 1-3  <--------- PDF

Solaris Guide 4-6           <--------- PDF

Solaris Guide 7-9           <--------- PDF

Solaris Guide 10-12       <--------- PDF

Solaris Guide 13-16        <--------- PDF

Solaris9_Sun-Guide      <--------- PDF

----------------------------------------

https://www.opennet.ru/opennews

http://theinfradiary.install-gui-desktop

https://www.theurbanpenguin.com

#pkg info -r solaris-desktop

#pkg install solaris-desktop

export PATH=/usr/bin:/usr/sbin:/opt/csw/bin:/opt/csw/sbin

pkgadd по умолчанию недоступен в Solaris 11 (zones), но его можно установить: # pkg install SUNWpkgcmds

-----------------Figlet------------

pkgadd -d http://get.opencsw.org/now

/opt/csw/bin/pkgutil -U

/opt/csw/bin/pkgutil -y -i figlet

/usr/sbin/pkgchk -L CSWfiglet # list files

------------------------------------

Прописать в   .profile (выполнить  . .profile):


PATH=$PATH:/usr/bin:/usr/sbin:/opt/csw/bin;export PATH

PS1='[\A@\h]\w \$ '

Предопределенные переменные содержатся в среде окружения командного процессора независимо от установок, которые может сделать пользователь в стартовых скриптах.

==Install sudo on Solaris 10 and 11===

pkgadd -d http://get.opencsw.org/now

    /opt/csw/bin/pkgutil -U

    /opt/csw/bin/pkgutil -y -i sudo 

    /usr/sbin/pkgchk -L CSWsudo         # list files

**Отредактировать /etc/opt/csw/sudoers (как у root)

=====Install vim on Solaris 10 and 11:=====

pkgadd -d http://get.opencsw.org/now

/opt/csw/bin/pkgutil -U

/opt/csw/bin/pkgutil -y -i vim 

/usr/sbin/pkgchk -L CSWvim # list files

......и т.д

===== Install mutt on Solaris 10 and 11: =====

pkgadd -d http://get.opencsw.org/now

/opt/csw/bin/pkgutil -U

/opt/csw/bin/pkgutil -y -i mutt 

/usr/sbin/pkgchk -L CSWmutt # list files

==== Install bash Version 4.3.33,REV======

pkgadd -d http://get.opencsw.org/now

/opt/csw/bin/pkgutil -U

/opt/csw/bin/pkgutil -y -i bash 

/usr/sbin/pkgchk -L CSWbash # list files

===== Install mc on Solaris 10 and 11: =====

pkgadd -d http://get.opencsw.org/now

/opt/csw/bin/pkgutil -U

/opt/csw/bin/pkgutil -y -i mc 

/usr/sbin/pkgchk -L CSWmc # list files

POSIX.2 Командная оболочка и утилиты

Стандарт: IEEE Std 1003.2-1992; ISO/IEC 9945-2:1993.

Стандарт вышел в 1992 году в двух томах общим размером около 1300 страниц. Заголовок гласил: "Part 2: Shell And Utilities": "Часть 2: Командный интерпретатор и утилиты".

Стандарт описывал следующие разделы:

командный интерпретатор (на основе System V Bourne shell);

около сотни утилит командной строки (включая basename, awk, vi, yacc и многие другие).

Путь к интерпретаторам в разных системах отличается (/usr/bin;/usr/local/bin;/opt ...), а путь к env одинаковый в большинстве операционных систем.  Solaris:  /usr/bin/env, поскольку env ясно дело не поместится на экране, то объеденить с постраничным редактором: # env | more

PAM          MAKE

     Solaris Memory Architecture ст.125

 С Solaris 10 присутствует новое понятие "этап" (milestone - веха, мильный камень)- это определенное состояние системы, этап ее состояния в котором запущены присущие этому этапу службы, например single-user, multi-user, multi-user-server, all(запуск всех служб, которые должны быть запущены при старте системы) и non (временный запрет всех служб кроме svc:/system/svc/restarted:default)

Role-based access control       

https://docs.oracle.com/cd/E23824

     Некоторые виды "административных" операций трудно выполнить, имея право запуска только отдельных программ, в чем и есть недостаток таких утилит как sudo, useradd, смысл ролей в том,  что любому пользователю может быть назначена роль на право выполнения части (комплекса) администраторских функций, и пользователь имеет право ее играть, то есть имеет право выполнения не отдельных программ, а их комплекса и обладает привелегиями их  исполнения. 

  Роль представляет собой учетную запись специального типа, пользователь не может зайти в систему, указав имя роли, но может "переключиться в роль", выполнив команду:  su имя_роли Роль – это псевдопользователь, который обладает правами, большими, чем обычный пользователь, но меньшими, чем root. В Solaris 11  пользователь root является ролью, а не обычным пользователем . Это означает, что пользователи не входят непосредственно в эту учетную запись.

https://docs.oracle.com/cd/E23824

https://docs.oracle.com/cd/E23824 

Role – Специальный идентификатор для запуска привилегированных приложений.

Специальная идентификация может быть принята только назначенными пользователями. В системе, управляемой ролями, включая root, суперпользователь не нужен. Возможности суперпользователя распределены по разным ролям. Например, в системе с двумя ролями задачи безопасности будут обрабатываться ролью безопасности. Вторая роль будет выполнять задачи системного администрирования, которые не связаны с безопасностью. 

Роли могут быть определены более детально.  Например, система может включать в себя отдельные административные роли для обработки Cryptographic Framework, принтеров, системного времени, файловых систем и аудита. https://docs.oracle.com/cd/E23824_01/html/821-1456/rbac 

В обычных системах UNIX пользователь root, также называемый суперпользователем, и обладает полными правами, что является проблемой в плане безопасности/отказоустойчивости. Программы, которые запускаются от имени root, или программы setuid, являются всесильными.  Пользователь root может читать и писать в любой файл, запускать все программы и отправлять сигналы уничтожения любому процессу. По сути, любой, кто может стать суперпользователем, может изменить брандмауэр сайта, изменить контрольный журнал, прочитать конфиденциальные записи и закрыть всю сеть. Взломанная программа setuid может делать что угодно в системе. Управление доступом на основе ролей (RBAC) обеспечивает более безопасную альтернативу модели суперпользователя "все или ничего". 

С помощью RBAC вы можете применять политику безопасности на более детальном уровне. RBAC использует принцип безопасности с наименьшими привилегиями. Наименьшая привилегия означает, что у пользователя есть именно тот уровень привилегий, который необходим для выполнения работы. Обычные пользователи имеют достаточные права для использования своих приложений, проверки статуса своих заданий, печати файлов, создания новых файлов и т. Д. Возможности сверх возможностей обычного пользователя сгруппированы в профили прав. Пользователи, которые должны выполнять задания, требующие некоторых возможностей суперпользователя, принимают на себя роль, включающую соответствующий профиль прав. 

RBAC собирает возможности суперпользователя в профилях прав. Эти профили прав назначаются специальным учетным записям пользователей, которые называются ролями. Затем пользователь может взять на себя роль для выполнения работы, которая требует некоторых возможностей суперпользователя.  Предопределенные профили прав поставляются с программным обеспечением Oracle Solaris. 

Вы создаете роли и назначаете профили. Профили прав могут предоставлять широкие возможности.  Например, профиль прав системного администратора позволяет учетной записи выполнять задачи, не связанные с безопасностью, такие как управление принтером и задания cron. 

Профили прав также могут быть узко определены. Например, профиль прав Cron Management управляет заданиями at и cron. При создании ролей ролям могут быть назначены широкие возможности или узкие возможности или оба. 

Ниже показано, как RBAC может распространять права доверенным сторонам.

В итоге: В модели RBAC Superuser создает одну или несколько ролей. Роли основаны на профилях прав. 

Затем Superuser назначает роли пользователям, которым доверяют выполнение задач роли. Пользователи входят в систему со своим именем пользователя. После входа в систему пользователи принимают роли, которые могут запускать ограниченные административные команды и инструменты графического интерфейса пользователя (GUI). Предполагается, что системный администратор создает свои специфичные, для организации, роли и назначает их пользователям, гибкость в настройке ролей позволяет использовать различные политики безопасности.  Oracle Solaris поставляется с несколькими ролями, можно легко настроить различные роли основывая  роли на предопределенных омолчанием: 

Соответствие ролей и пользователей (т.е. разрешение пользователю играть ту или иную роль) описывается в файле /etc/user_attr:

user@solaris:~$ cat /etc/user_attr

................................

# The system provided entries are stored in different files

# under "/etc/security/auth_attr.d".  They should not be

root::::type=role

user::::lock_after_retries=no;roles=root;clearance=ADMIN_HIGH;min_label=ADMIN_LOW;

auth_profiles=System Administrator

user@solaris:/etc/security/auth_attr.d$ ls

core-os      network-dhcp-client           system-fault-management

cups         ntp                                          system:library:dbus

firewall                      package:pkg                          system:pkcs11:metaslot

fontconfig  security-compliance            

system:pkcs11:softtoken

install%2Farchiveadm   sendmail  trousers

install%2Finstalladm   service%2Fnetwork%2Fisc-dhcp      web:server:apache-24

local-entries         service-network-ftpd

user@solaris:/etc/security/auth_attr.d$

Формат записей в /etc/user_attr следующий:

user:qualifier:res1:res2:attr

где:

    • user – имя пользователя, такое, как в /etc/passwd ;

    • qualifier – зарезервировано на будущее;

    • res1 – зарезервировано на будущее;

    • res2 – зарезервировано на будущее;

    • attr – атрибуты, разделенные точкой с запятой, вида имя=значение ; допустимые атрибуты: это auths, profiles, roles, type, и project.




Для конкретной роли можно воспользоваться командой:

user@solaris:~$ getent user_attr root

root::::type=role;auths=solaris.*;profiles=All;audit_flags=lo\:no;

lock_after_retries=no;min_label=admin_low;clearance=admin_high

user@solaris:~$

user@solaris:~$ getent user_attr user

user::::lock_after_retries=no;roles=root;clearance=ADMIN_HIGH;min_label=ADMIN_LOW; auth_profiles=System Administrator

user@solaris:~$

Если ключевое слово type отсутствует в выводе или равно нормальному, учетная запись не является ролью. И не смотря на то, что фактически пользователя root нет, однако в /etc/passwd, есть такая запись:

user@solaris:~$ cat /etc/passwd

root:x:0:0:Super-User:/root:/usr/bin/bash

...........................................

user:x:100:10:igor:/export/home/user:/usr/bin/bash

user@solaris:~$

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

 Authorization – (права, полномочия) Разрешение, право включенное в профиль или данное пользователю которое позволяет пользователю или роли выполнять класс действий, требующих дополнительных прав. Например, политика безопасности при установке дает постоянным пользователям авторизацию solaris.device.cdrw. Эта авторизация позволяет пользователям читать и записывать на устройство CD-ROM. В Solaris доступны только предопределенные полномочия, добавить новое нельзя.


Listing Authorizations

auths – Lists the current user's authorizations

auths list – Lists the current user's authorizations

auths list -u username – Lists the authorizations for username

auths list -x – Lists the current user's authorizations that require authentication

auths list -xu username – Lists the username's authorizations that require authentication

auths info – Lists all authorization names in the naming service

getent auth_attr – Lists the full definition of all authorizations in the naming service

Список авторизаций приведен в файле /etc/security/auth_attr.

            List all authorizations:     getent auth_attr | more

            List your authorizations:     auths

    Значения полей в этом файле таковы: name:res1:res2:short_desc:long_desc:attr  name 

name обязательное поле, имя набора прав (полномочия). Это уникальное имя, которое

получается из комбинации префикса и суффикса, где префикс – это часть имени до самой правой точки.

    Префикс наборов прав, придуманных компанией Sun, всегда начинается со слова solaris. Все остальные разработчики должны ради соблюдения уникальности имени указывать в качестве начала префикса имя своего домена в Интернете в обратном порядке (например, com.intel.)

После имени компании идет дополнительная часть префикса, содержание которой зависит от смысла набора прав. Компоненты дополнительной части разделяются символом "точка"( .)

    Суффикс – это слово, определяющее детальный смысл авторизации. Слово grant

предполагает право обладающего этой авторизацией пользователя делегировать свои

наборы прав (авторизации) другим.       All authorization    <PDF

Rights Profile 

Профиль – это набор свойств, который можно назначить той или иной роли. Профиль прав объединяет различные авторизации, чтобы можно было назначить той или иной роли, логически связанный набор авторизаций, профили прав могут включать авторизации, напрямую назначенные привилегии, команды с атрибутами безопасности и другие профили прав. Профили,которые находятся в другом профиле, называются профилями дополнительных прав.

Профили прав предлагают удобный способ группировки атрибутов безопасности.

Как существует aut_attr Database так существует и prof_attr Database просмотреть которые можно с помощью утилиты getent   ---> getent auth_attr и  getent prof_attr соответственно, текущие авторицации и профили отражены в файлах: 

/etc/security/auth_attr  и  /etc/security/prof_attr.


Просмотреть все профили прав и профили назначенные можно так:

        List all rights profiles:               – getent prof_attr | more

        List your rights profiles:            – profiles

Можно и так:

    awk '{print $1,$2,$3}' /etc/security/prof_attr | less

    awk '{print $1,$2,$3,$4}' /etc/security/auth_attr | less

    cat /etc/security/prof_attr | grep ".........."

    All rights profiles   <PDF

Privilege 

Отдельное право, которое может быть предоставлено команде, пользователю, роли или системе. Например, привилегия proc_exec позволяет процессу вызывать execve (). Обычные пользователи имеют основные привилегии.   Listing Privileges

man privileges – Lists privilege definitions and their names as they are used by developers

ppriv -vl – Lists privilege definitions and their names as they are used by administrators

ppriv -vl basic – Lists names and definitions of privileges in the basic set of privileges

ppriv $$ – Lists the privileges in the current shell ($$)

getent exec_attr – Lists all commands that have security attributes (setuid or privileges) by                                         rights profile name

Чтобы увидеть свои основные привилегии, выполните команду ppriv -vl basic.

user@solaris:~$ ppriv -vl basic

dax_access

        Allows a process to perform all operations supported by the DAX

        hardware.

file_link_any

        Allows a process to create hardlinks to files owned by a uid

        different from the process' effective uid.

file_read

        Allows a process to read objects in the filesystem.

file_write

        Allows a process to modify objects in the filesystem.

net_access

        Allows a process to open a TCP, UDP, SDP or SCTP network endpoint.

proc_exec

        Allows a process to call execve()/spawn().

proc_fork

        Allows a process to call fork1()/forkall()/vfork()/spawn().

.................................................

    ppriv   <PDF

 Как просмотреть все определенные атрибуты безопасности

1.List all authorizations        getent auth_attr | more

        1.1List your authorizations          auths

2.List all rights profiles        getent prof_attr | more

        2.1List your rights profiles          profiles

3.List all commands with security attributes.    getent exec_attr | more

Как просмотреть ваши назначенные права

1.List your authorizations                    auths

2.List your rights profiles                     profiles

Просмотреть все профили             profiles -a | more

3.List ваших назначенных ролей    roles

4.List the привилегии в вашей оболочке по умолчанию    ppriv $$

5.List Привилегии для команд в ваших профилях прав    profiles -l

Как принять роль

1.В окне терминала определите, какие роли вы можете взять на себя    roles

2.Используйте команду su для принятия роли    su - rolename

3.(Необязательно) Убедитесь, что вы сейчас находитесь в роли.     /usr/ bin/whoami

                                            Listing Qualified Attributes

man user_attr – Defines qualifiers of security attributes

getent – Lists qualified security attributes of a user or role on the system where the command is run

ldapaddent – Lists all qualified security attributes of a user or role

 Чтобы создать роль, используйте команду roleadd

# roleadd [-e expire] [-f inactive] [-s shell] [-m] [-S repository] [-A authorization-list] [-K key=value] rolename

-e (expire)

    Дата окончания роли. Используйте эту опцию для создания временных ролей.

-f (inactive)

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

    неактивное значение превышено, роль не может быть использована. Значение по

    умолчанию 0 , срок годности отсутствует. 

-m

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

-s (shell)

    Является ли логин оболочкой для rolename . Эта оболочка должна быть

    профильной оболочкой. Список оболочек профиля см. На справочной странице

    pfexec (1) .

-S (repository)

    Это один из файлов или ldap . По умолчанию это локальные файлы.

-A (authorization-list)

    Является ли одна или несколько авторизаций, разделенных запятыми. Список

    авторизаций приведен в файле /etc/security/auth_attr .

-K (key=value)

    Это пара ключ=значение . Эта опция может быть повторена. Следующие ключи

    доступны:

    audit_flags, auths, profiles, project, defaultpriv, limitpriv, lock_after_retries, и

    roleauth . Для получения информации о ключах, их значениях и полномочиях,

    необходимых для установки значений, см. Справочную страницу user_attr (4) .

-P profile

    один или несколько профилей прав, перечисленных через запятую. Список профилей прав приведен в файле /etc/security/prof_attr (profiles -a | more) prof_attr

rolename

    Это имя новой роли. Ограничения на допустимые строки см. На справочной странице

...............................................................................

    roleadd (1M) .

Команда pfexec создает процесс, который запускается с правами администратора:

Запустите команду pfexec с именем привилегированной команды из вашего профиля прав. Например, следующая команда позволяет вам проверять сетевые пакеты: $ pfexec snoop

Те же ограничения , привилегии распространяются на pfbash равно как и на pfexec , то есть чтобы запустить другую привилегированную команду, вы должны снова ввести pfexec, прежде чем вводить привилегированную команду.

Создание/назначение роли:

Role – Специальный идентификатор для запуска привилегированных приложений. Создание роли заключается в создании и назначении этому псевдо-пользователю (специальному идентификатору), профилей-прав Rights Profile (авторизации, привелегии, команды с атрибутами безопасности и другие профили прав.), которые в последствии могут брать нормальные пользователи для чего существуют команды:  roleadd, rolemod, roledel.

Так же есть возможность создание и изменение Rights Profile

# profile [-S repository ] имя существующего профиля, как и добавление привелегий в команду.

*** От администратора требуется: создать роль, возможно редактировать ее свойства, назначить роль соответствующим пользователям.

Обычно вы проходите аутентификацию в роли, используя пароль роли. Если мы не хотим сообщать пользователям пароль роли, мы можем установить аутентификацию для запроса собственного пароля пользователя, аналогичнотому, как можно использовать sudo.

#rolemod -K roleauth=user root

#rolemod -K roleauth=role root

Первый пример потребует от пользователя собственного пароля при переключении 

на root роль.  Второй  потребует пароль самой роли.

Просмотреть роли пользователя:   Listing Roles

roles – Lists the current user's roles

roles username – Lists the roles for username

logins -r – Lists all available roles

root@solaris:~# roles user

root

root@solaris:~# id user

uid=100(user) gid=10(staff)

root@solaris:~#

Профили в RBAC Solaris 11 позволяют группировать полномочия и привилегированные команды и назначать их пользователям или ролям. При назначении profiles пользователю пользователь может выполнять эти задачи напрямую, в то время как если profiles назначена роли, пользователь будет «присваивать» ее роли для получения привилегий. Для просмотра всех профилей мы можем использовать команду:

Listing Rights Profiles

profiles – Lists the current user's rights profiles

profiles -a – Lists all rights profiles names

profiles -l – Lists the full definition of the current user's rights profiles

profiles username – Lists the rights profiles for username

profiles -x – Lists the current user's rights profiles that require authentication

profiles -x username – Lists the username's rights profiles that require authentication

profiles -p profile-name info – Pretty prints the contents of specified rights profile

getent prof_attr – Lists the full definition of all rights profiles in the naming service

#root@solaris:~# profiles -a | more

..............................

ZFS Cloud Management

ZFS File System Management

ZFS Storage Management

Zone Security

Zone Configuration

Zone Management

Zone Migration

Zone Cold Migration

Project Management

..............................

root@solaris:~#

Просмотреть информацию о профиле можно так:

root@solaris:~# profiles -p "Zone Management" info

        name=Zone Management

        desc=Zones Virtual Application Environment Administration

        cmd=/usr/sbin/zoneadm

        cmd=/usr/sbin/zlogin

        cmd=/usr/lib/rad/module/mod_zonemgr.so.1

root@solaris:~#

Дальше создаем "роль-пользователь" с именем zonemng, в которой нам требуется пароль пользователя, а не пароль роли в качестве аутентификации, roleauth = user, и мы используем упомянутый профиль -P "Zone Management"

(мы не можем установить пароль роли, если у нас установлена аутентификация пользователя)

root@solaris:~# roleadd -m -P "Zone Management" -K roleauth=user  zonemng

80 blocks

root@solaris:~# ls /export/home/zonemng

local.cshrc    local.login    local.profile

root@solaris:~# id zonemng

uid=102(zonemng) gid=10(staff)

root@solaris:~#

Тем самым создается стандартный псевдо-пользователь с добавленным профилем прав 

"Zone Management", без своего пароля.

user@solaris:~$ cat /etc/passwd

....................................................

mzone:x:101:10::/export/home/mzone:/bin/bash

zonemng:x:102:10::/export/home/zonemng:/usr/bin/pfbash              Working with profile shells

root@solaris:~# su zonemng

zonemng@solaris:~$ roles

No roles

zonemng@solaris:~$ profiles

Zone Management

Basic Solaris User

All

zonemng@solaris:~$

root@solaris:~# profiles zonemng

zonemng:

Zone Management

Basic Solaris User

All

root@solaris:~#

Назначим роль пользователю(настоящему) mzone

root@solaris:~# usermod -R +zonemng mzone

root@solaris:~# roles mzone

zonemng

root@solaris:~#

user@solaris:~$ getent user_attr zonemng

zonemng::::type=role;profiles=Zone Management;roleauth=user

user@solaris:~$ getent user_attr mzone

mzone::::roles=zonemng

user@solaris:~$

Чтобы изменения вступили в силу, перезапустите демон кэширования службы имен.

# svcadm restart system/name-service-cache

Дальше все при помощи: usermod,rolemod, useradd.userdel,roleadd,roledel,userdel...... 

root@solaris:~# rolemod -P +"Zone Migration","Zone Cold Migration","Zone Configuration",

"Zone Security"  zonemng

root@solaris:~# profiles zonemng

zonemng:

Zone Migration

Zone Cold Migration

Zone Configuration

Zone Security

Zone Management

Basic Solaris User

All

root@solaris:~# svcadm restart system/name-service-cache

root@solaris:~# su mzone

mzone@solaris:~$ roles

zonemng

mzone@solaris:~$ su zonemng

Password:

zonemng@solaris:~$ zoneadm list -iv

ID NAME    STATUS    PATH                 BRAND      IP

0 global   running     /                  solaris    shared

- zone1    installed   /export/home/zone1 solaris    shared

- zone2    installed   /export/home/zone2 solaris    shared

zonemng@solaris:~$ zoneadm -z zone1 boot

zonemng@solaris:~$ zlogin zone1

[Connected to zone 'zone1' pts/2]

Last login: Mon Feb 10 18:48:03 2020 on pts/2

Oracle Corporation      SunOS 5.11      11.4    Aug 2018

root@zone1:~# 

В Solaris_10 все то же самое с небольшим различием в синтаксисе:

Solaris_10_security_essentials    PDF ст.73

awk '{print $1,$2,$3}' /etc/security/prof_attr | less

добавим роль:

#roleadd -m -d /export/home/zzz zzz

добавим профиль прав #rolemod  -P "Zone Management"  zzz

Назначим роль пользователю(настоящему) user   #usermod -R zzz user

создадим пароль для роли

#passwd zzz

...........................

#profiles zzz

    Zone Management

    Basic Solaris User

    All

#svcadm restart system/name-service-cache

user$ roles

    zzz

user$ su zzz

Password: ...........

$ profiles

    Zone Management

    Basic Solaris User

    All

user$ getent passwd

..............

zonemng:x:103:14::/home/zonemng:/bin/pfsh

user:x:100:10::/home/user:/bin/bash

xxx:x:104:1::/export/home:/bin/pfsh

zzz:x:105:1::/export/home/zzz:/bin/pfsh

user$    https://www.securitylab.ru/analytics/272673.php


# rolemod -s /bin/bash zzz

# getent passwd

..............

user:x:100:10::/home/user:/bin/bash

xxx:x:104:1::/export/home:/bin/pfsh

zzz:x:105:1::/export/home/zzz:/bin/bash

#    .........и тд