https://www.thegeekdiary.com/category/solaris
======================
https://compress.ru/article.aspx
https://www.oracle.com/sun/index.html
http://www.sunfreeware.com/introduction.html
http://citforum.ru/database/skbd
https://wiki.colobridge.net/solaris/ <-----------------------------
https://wiki.colobridge.net/ <-----------------------NFS
https://ru.wikipedia.org/wiki/Network_File_System <-----------------------NFS
https://ru.bmstu.wiki/NFS_Network_File_System <-----------------------NFS
https://sites.google.com/site/kfgnb0101/zfs-zettabyte-file-system <--------ZFS
https://www.tadviser.ru/index. <----------- Oracle Linux Enterpris
https://stepbystep.ucoz.ru/publ/solaris/7 <--------
https://ru.bmstu.wiki/Oracle_Solaris <------- Bauman National Library
Sun Microsystems и современные технологии сетевых вычислений <----------
http://www.opennet.ru/docs/RUS/solos/index.html
Solaris. Руководство системного администратора.
unix-administration/solaris-11/* <----------------------------------
User Commands <------сюда и только сюда
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://www.google.com/images/icons/product/drive-32.png)
Файловая система
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
Для более детального изучения оборудования компьютера могут пригодиться программы:
scanpci ( /usr/X11/bin/scanpci – опросустройств на шине PCI),
psrinfo (информация о процессорах компьютера),
isainfo (описание аппаратной архитектуры с точки зрения набора команд).
Все это применяется (естественно) в сочетании с 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 работает в предположении, что определенные каталоги находятся в определенных местах, и эти каталоги должны содержать конкретные типы модулей:
/k e r n e l — общие модули для компьютеров, которые совместно используют набор команд;
/platform/ имя_платформы/kernel — модули, специфичные для одного типа компьютеров (например, Sun Fire Т200);
/p la t f o r m / имя_класса_ оборудования/kernel — модули, специфичные для одного класса оборудования (например, все компьютеры sun4u);
/u s r /k e r n e l — аналогично каталогу /k e r n e l.
Во время загрузки Solaris, чтобы найти ядро, проверяет путь:
/platform / и м я _ платформы/ k e r n e l: /k e r n e l: /u s r/k e r n e l
Сначала находятся файлы с именами 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 <--------- Службы и управление ими
По умолчанию в 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-адресу следующего шлюза, связанного с данным маршрутом.
Но есть два особых случая:
Во-первых, пакет может быть адресован компьютеру, включенному в ту же сеть, что и узел-отправитель. В этом случае адрес следующего шлюза соответствует одному из интерфейсов локального компьютера, и пакет посылается прямо в пункт назначения. Маршруты такого типа добавляются командой ifconfig при конфигурировании интерфейса.
Во-вторых, может вообще не оказаться маршрута, совпадающего с адресом пункта назначения. В этом случае применяется маршрут по умолчанию (default route) маршрут до шлюза перехода в другую/следующую сеть(если таковой имеется), иначе отправителю посылается ICMP-сообщение “network unreachable” или “host unreachable”
Чтобы некоторая машина могла найти в сети другую, должен иметься механизм (набор правил) описывающий то, как добраться от одной машине к другой, из точки А в точку В. Такой механизм называется маршрутизацией, реализованный так или иначе в виде таблиц, стандартном способе сопоставления данных в вычислительных системах. Цель маршрутизации – это выбор оптимального маршрута доставки данных из одной сети в другую, проще говоря правила маршрутизации определяют, куда отправлять IP-пакеты, цель маршрутизатора состоит в том, чтобы соединять несколько сетей и передавать пакеты от одной сети к следующей.
PS: Табличное задание данных, функции отличается от аналитического, тем что любой "закон" линейный, не линейный в таблице реализуем и реализуем более оптимально чем аналитический (последовательный), что очевидно, поэтому в какую сторону вычислительной техники мы непосмотрим, везде найдем таблицы.
Это означает, что у маршрутизатора есть несколько интерфейсов. Каждый интерфейс является элементом или узлом в различной сети
У маршрутизатора есть таблица маршрутизации, которая является списком сетей, известных маршрутизатору.
Таблица маршрутизации включает сетевые адреса для своих собственных интерфейсов, которые являются непосредственно соединенными сетями, так же как и сетевые адреса для удаленных сетей.
Удаленная сеть является сетью, которая может быть достигнута, только передавая пакет к другому маршрутизатору, маршрутиризаторы могут быть устройства как специальнно предназначенные для задач маршрутиризации, так и обычными рабочими станциями, таблицы маршрутиризации если вести разговор о локальной операционной системе, хранятся в одной из таблиц ядра (Kernel IP routing table).
Решение возникших проблем маршрутиризации на локальной машине начинается с анализа таблиц маршрутиризации этой машины. Вести таблицы маршрутизации можно статически или динамически как и маршрутиризация может быть статической и динамической. Статический маршрут это маршрут, который задается явно с помощью команды route. Динамическая маршрутизация выполняется процессом-демоном (routed или gated), который ведет и модифицирует таблицу маршрутизации на основе сообщений от других компьютеров сети. Динамическая маршрутизациия выполняется по средством специальных протоколов: RIP(L3), OSPF(L3), IGRP(L3), EGP(L7), BGP (L7) и т. д.
"Маршрут" строго говоря это пара адресов, маршрут из точки А в точку В, и это один маршрут, маршрут из точки В в точку А это другой маршрут и в случае статической маршрутиризации для двухстороннего взаимодействия статический маршрут должен быть настроен в обоих направлениях.
Маршруты могут быть прямыми и обратными "не посредственными" и проходящими через шлюз.
Сеть сама по себе "замкнута" , то есть самостоятельно пакет из сети ни куда не убежит и если маршрут лежит в другую сеть, то он задается "адресом назначения" (адресом точки В) и сетевым шлюзом (gateway - "специфичным интерфейсом" в отличии от других хостов сети) это еще одна пара (из таблицы) указывающая на то, что если вы пытаетесь соединиться с адресом назначения лежащим за пределами вашей сети, то вам нужно устанавливать связь через "сетевой шлюз".
Существует три типа адресов назначения:
отдельные хосты
подсети
"маршрут по умолчанию" (default).
"Маршрут по умолчанию" (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
PBR и команда ip route
Далее про Linux и про iproute2 <ip route и ip rule>:
Таблиц маршрутизации несколько, также можно создавать свои таблицы маршрутизации. Изначально предопределены таблицы local, main и default.
В таблицу local ядро заносит записи для локальных IP адресов (чтобы трафик на эти IP-адреса оставался локальным и не пытался уходить во внешнюю сеть), а также для бродкастов.
Таблица 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
Таблица может быть любой если ее правила соответствуют задаче которую надо выполнить.
https://www.thegeekdiary.com/examples-of-adding-static-routes
https://losst.ru/marshrutizatsiya-v-linux
https://habr.com/ru/Роутинг и policy-routing
ip r sh показать все маршруты в таблице маршрутизации
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 – следить за маршрутом и сообщать об изменении информации в таблице.
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
=================Проекты====================
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
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
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
Solaris Memory Architecture ст.125
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
С Solaris 10 присутствует новое понятие "этап" (milestone - веха, мильный камень)- это определенное состояние системы, этап ее состояния в котором запущены присущие этому этапу службы, например single-user, multi-user, multi-user-server, all(запуск всех служб, которые должны быть запущены при старте системы) и non (временный запрет всех служб кроме svc:/system/svc/restarted:default)
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
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 поставляется с несколькими ролями, можно легко настроить различные роли основывая роли на предопределенных омолчанием:
root - powerfull роль, эквивалентная пользователю root. Однако этот root не может войти в систему. Обычный пользователь должен войти в систему, а затем принять назначенную роль root. Эта роль настроена по умолчанию.
Системный администратор - роль с меньшими полномочиями, роль для администрирования, не связанного с безопасностью. Эта роль может управлять файловыми системами, почтой и установкой программного обеспечения. Однако эта роль не может устанавливать пароли.
Оператор - роль младшего администратора для таких операций, как резервное копирование и управление принтером.
Соответствие ролей и пользователей (т.е. разрешение пользователю играть ту или иную роль) описывается в файле /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.
Атрибут auths предназначен для перечисления предопределенных прав (authorizations), в томчисле и групп прав, где значение "все возможные" это символ "звездочка" ( * ), например: auths=solaris.printer.* обозначает все возможные права набора прав solaris.printer.
Атрибут roles позволяет разрешить пользователю играть различные роли, здесь они перечисляются через запятую. Если в строке, описывающей пользователя, не указан атрибут roles, пользователю запрещается играть какие бы то ни было роли. Например, запись о ролях может быть такой: roles=printmgrs, useradmin
Атрибут type служит для определения того, относится ли текущая запись к обычному пользователю или описывает роль. Для обычного пользователя следует указывать атрибут type=normal и для роли type=role Аналогичным образом может быть назначен проект ( project ) и профиль прав ( profiles ) для пользователя или роли.
Для конкретной роли можно воспользоваться командой:
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 доступны только предопределенные полномочия, добавить новое нельзя.
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
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 . Эта оболочка должна быть
профильной оболочкой. Список оболочек профиля см. На справочной странице
-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
Это имя новой роли. Ограничения на допустимые строки см. На справочной странице
...............................................................................
Команда 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 назначена роли, пользователь будет «присваивать» ее роли для получения привилегий. Для просмотра всех профилей мы можем использовать команду:
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
# .........и тд
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)