ЗАМЕТКИ Linux

Консольный режим

командный интерпретатор — интерпретация ввода, запуск программ и передача им параметров… (основа консольного режима)
bash — linux
csh — freeBSD
+ «пробел» — символ экранирования в командной строке, если пробел в имени, также
()
»

$
| — конвеер команд
> — перенаправление
>> — добавление данных без перезаписи файла, в конец кода
advanced bash guide — описание языка
man, info — справка
which — выдаёт расположение конкретного программного файла (полные пути)
ls — dir
clear — очистить экран
cat — вывод

Пользователи

1. uid — номер пользователя
2. gid — номер группы
3. логин
4. домашний каталог
5. любой интерпретатор командной строки
или
1. gid — номер группы
2. название группы
3. список пользователей, которые принадлежат к этой группе
вся информация, кроме паролей — /etc/passwd
пароли, хэш-суммы — /etc/shadow (зависит от дистрибутива)
группы — /etc/group
аутентификация — операция подтверждения подлинности пользователя, ввод пароля (пароль хэшируется при вводе + сравнивается с сохранённым хэшем)
авторизация — процедура определения рамок доступного для этого пользователя
PAM — подключение модуля аутентификации, база пользователей может хранится в базе данных (не путать с файлом shadow)
login (программа начала сеанса в системе) — PAM — MySQL
NIS+ — система для использования централизованной базы пользователей (Yellow Pages), уникальные идентификаторы пользователей, разграничение прав на ресуры + файловые ресурсы
LDAP — для гетерогенных конфигураций
su — утилита переключает сессию в режим супер-пользователя
su имя — права конкретного пользователя
who — кто я
who -all — кто есть в системе
w — аналог
id — выводит идентификатор текущего пользователя и группы (uid и gid) + все группы в которых состоит пользователь
sudo — без переключения в режим супер-пользователя, для выполнения команд, требует ввести собственный пароль (того под кем работаем)
/etc/sudoers — файл настроек команды sudo

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

Linux FHS — стандарт иерархии файловой системы Linux
/ — корневой каталог
каталоги второго уровня вложенности от корневого
/bin — каталог с прикладными утилитами
/boot — файлы, относящиеся к процессу загрузки системы, файл-образ ядра + вспомогательные файлы
/dev — файлы устройств
/etc — конфигурационные файлы системного уровня
/home — домашние каталоги непривилегированных пользователей
/lib — файлы программных библиотек
/mnt — точка монтирования других файловых систем
/opt — опциональные, необязательные компоненты программного обеспечения
/proc — информация о процессах
/root — домашний каталог супер-пользователя
/sbin — файлы системного программного обеспечения (для администраторов)
/sys — файлы ассоциированные с подсистемами ядра
/tmp — временные файлы
/usr — не только бинарные файлы, файлы ресурсов, документация
/var — для хранения часто изменяемой информации, файлы журналов, почтовый спул (очередь)…

Монтирование и демонтирование

в системе один корень и нет понятия дисков
всё содержимое переносного носителя монтируется в точку монтирования /mnt/xxx
все файлы на диске будут иметь префик /mnt/cdrom/мои_файлы
часто /var выносится на отдельный раздел диска, но монтируется в единую файловую структуру
mount/umount
mount /dev/cdrom /mnt/cdrom — что монтируем и куда
umount /mnt/cdrom
/etc/fstab — правила для автоматического монтирования
/etc/mtab — список уже примонтированных файловых систем
sda1 — sata disk a(первый) 1(первый раздел)
смена кодировки при монтировании под конкретную файловую систему
windows linux
cp 866 | koi8-r
cp 1251 | utf-8
ext3 — журналируемая файловая система, все операции с файлами записываются в специальный файл журнала
inod — индексные дескрипторы
единичный объект файловой системы (win клайстер)
stat — информация о inod, который ассоциирован с конкретным файлом
можно узнать врямя последнего доступа, время модификации (время создания — не хранится в nix)
1
fdisk — разбиение диска
за mbr и boot-сектор — отвечает загрузчик (grub, lilo)
2
после разбиения на разделах ещё нет файловой системы
mkfs — форматирование + make fs/фс
fdisk только помечает, что раздел будет типа ext3 и т.п. (назначает тип)
swap — традиционно раздел, а не файл
но можно использовать файл, форматировать его и через fstab подключить его как файл подкачки
проще менять размер

Типы файлов

8 базовых типов
— обычные файлы
— каталоги
— файлы устройств /dev (различие связанно с работой драйвера с этими устройствами)
— байт-ориентированные файлы
префикс c
— блок-ориентированные файлы
префикс b
— сокеты (unix-сокеты, не сетевые)
розетки — специальные объекты файловой системы, через которые объмениваются 2 процесса, средство для взаимодействия между процессами
— именованные каналы (ufo)
инструмент для межпроцессного ввзаимодействия
— жёсткие ссылки
нет win аналогов, другое имя того же самого файла, работают в рамках только одного логического диска
файл считается существующим, пока у него существует хотя бы одна жёсткая ссылка
— символические ссылки
альтернативное имя объекта, ссылаются только на имя файла
может указывать даже на несуществующие файлы на любом логическом диске

Работа с файлами

dir — ls
cd
cp — копировать
mv — переместить/переименовать
rm — удаление
mkdir — создать каталог
touch — самый простой способ создать файл (не по назначению)
cat — вывод содержимого файла в консоль (не по назначению)
find — поиск файла и не только
locate — поиск по базе (только индексированные объекты, раз в сутки или updatedb)
tar — создание контейнера для файлов (для массива файлов) + может сжать своими ключами
gzip — gnu zip (*.gz)
gzip2 — сильнее, но дольше сжимает
gunzip — обратно
chroot — изменить корень, чтобы программа считала корневым каталогом любой другой
pwd — текущий каталог (путь)
vdir — текущий католог (файлы каталога и их права)
dirname — из строки выводит только имя каталога
basename — из строки выводит только имя файла

Права на файлы

drwxr-xr-x root root
d — тип файла
1 тройка — права доступа для владельца файла (uid)
2 тройка — права доступа для группы владельца файла (gid)
3 тройка — права доступа для всех остальных
у каждого файла есть владелец
1 root — имя владельца
2 root — имя группы владельца
rwx
read — права на чтение
write — права на запись
execute — права на запуск
файлы с флагом x могут выполняться как программы,
могут быть 2 типов (бинарный файл или файл сценария)
если нет флага x то скрипт воспринимается просто как текст
бинарный файл (внутри нечитабелен)
скриптовы файл (внутри читабелен) сверху прописан интерпретатор,
если не прописан, но стоит флаг x, то по-умолчанию считается фалом shell (например bash)
каталоги с флагом x — разрешение на поиск внутри каталога
суперпользователь игнорирует все права доступа
можно пройти в каталог с флагом поиска, но нельзя просмотреть содержимое если нет прав на чтение
набор бинарных флагов (либо есть, либо нет)
rwx r-x r-x
111 101 101
принято записывать права доступа в восьмиричном виде
7 5 5
типовые для каталогов
755 rwxr-xr-x если будет стоять запись, то каталог и файлы в нём можно удалить
705 rwx—r-x суперпользователь или владелец объекта cможет изменить права,
представитель группы — нет
711 rwx—x—x
770 rwxrwx— открытый каталог для совместной работы только пользователей группы
типовые для файлов
644 rw-r—r— только владелец может читать и записывать, остальные только читать
600 rw——- единоличная работа с файлом
664 доступ на запись группе
755 запускаемые файлы
chmod — изменить режим
chmod 644 filename
chmod -r 664 dirname для всех файлов в каталоге + сам каталог потеряет флаг x (не гибко)
chmod -r g+w dirname
u — user (u+rwx)
o — other (o-x)

sticky bit (1000)
устаревший
стоит на /tmp
удалить каталог с таким флагом может только владелец или суперпользователь
suid (2000)
будет запускаться под правами владельца файла
нельзя поставить на скрипты (bash сбрасывает этот флаг), только для бинарных файлов
sguid (4000)
работать будет и для группы владельца
chown — сменить владельца и группу владельца объекта
chown -r user ./dir
chown -r user.group ./dir
chgrp — сменить группу
dir — каталог имеет 2 жёсткие ссылки: на родительский каталог .. и на себя .
текущий каталог — ./file
если текущий каталог не внесён в переменную path (иногда так у root)
access control lists (acl) — аналогична win-системе прав доступа
более сложные конфигурации разграничения доступа до файловых объектов
chattr — расширенный набор атрибутов
chattr -i — управляет флагом иммунитета (даже суперпользователь не имеет доступ)
+ ограничить использование этой команды можно на уровне ядра в стадии загрузки
umask — ?
если umask=002 то все новые каталоги по дефолту будут 775, а файлы 664
777-002=775 | 777-022=755
666-002=664 | 666-022=644

Процессы

операции производимые над данными в определённое время по определённому алгоритму
PID — id процесса (уникальный)
PPID — id родительского процесса
UID/GID — id пользователя/группы (от лица которых запускается)
EUID/ECID
права доступа процесса до файлов (до всего) = правам пользователя/группы
состояние процессов: активное, ожидания, завершения + зависшие (неактивные) и
zombie (процесс висит в таблице процессов до перезагрузки — не умер, но и не занимает ресурсов)
fork() — системный вызов, который используют многие программы/процессы при своём запуске,
создаёт новые процессы (процесс создаёт процессы)
init — pid1 рождается в системе первым, предок всех процессов
top — список процессов
ps — только активные процессы
ps axx — все процессы
ctr+z — останавливает процесс интеррактивного приложения, но не убивает процесс
fg — вывести на передний план
bg — отправить на задний фон
jobs — просмотреть остановленные процессы
взаимодействие с процессами — система сигналов посылается в процесс
kill -1 pid процесса
killall -9 имя процесса (если их несколько)
1 — sighup (процесс должен пересканировать свои конфиги и принять изменения)
9 — sigkill (убить процесс)
killall -1 httpd
приоритет выполнения процессов в системе
nice -20 — процесс может потребляет ресурсы безгранично
nice 20 — процесс запросит ресурсы в последнюю очередь
изменять значения — влиять на приоритет
nice — для запуска программы изначально
renice — по ходу работы
типы процессов
1 обычные процессы
2 daemons
эти процессы постоянно присутствуют в памяти (в win сервисы)
работают в режиме сна, активизируются при запросе, засыпают после выполнения
именуют с postfix d (khubd, httpd)
init — основной демон (вернее всегда присутствует в системе) pid1
/etc/inittab управляет поведением init
режимы (обычно, по-умолчанию стоит 3 — многопользовательский)
инструкции какие скрипты запускать на каком runlevel + терминалы
сразу после инициализации (загрузки) ядра и начинает создавать рабочее окружение, загружает демоны и т.п.
/proc/modules — загруженные модули ядра
/proc/version — версия ядра
своя файловая система procfs
3 периодические процессы
раз в сутки обновление
crond — умеет по расписанию запускать задачи
at — альтернатива
crontab — и файл, и программа управления
можно указать файл расписания
syslogd — демон журнала
/etc/syslog.conf
логи можно перенаправлять на сервер, архивировать, ротировать и т.п.
разграничение прав на системные ресурсы
/etc/limits — в файле можно выставить ограничения на выделение памяти процессам и т.п.
злая программа может выесть всю память даже работая с низким приоритетом
форматы файлов
elf бинарники
a out бинарники (фряха)
в системе поддерживается динамическое использование библиотек
не dll как в win, а файлы с постфиксом .so
если установка нестандартного по
ldconfig — переиндексирует все библиотеки и обновит кэш файл,
необходимый для функцион+3

0,и41

рования бинарных файлов, которые требуют эти библиотекиэ
/etc/ld.so.conf — куда ставить библиотеки
/etc/ld.so.cache — кэш библиотек

Графичеcкая подсистема

называют x window system, x11, x windows, x
система отвечает за отрисовку базовых графических примитивов
в основе лежит клиент-серверный протокол x11
keyboard + mouse
| — ввод информации
x server
|
x app
удалённое x app приложение использующее сервер x, может взаимодействовать с ним по сети
только без шифрования, но если через туннель ssh то нет проблем
x сервер1 — x app (клиент) — x сервер2
терминал1 терминал2
один клиент и много серверов (обратная клиент-серверная система)
терминалы в такой схеме — могут быть слабыми машинами,
только обрабатывают ввод и отрисовывают картинку
в win — cygwin/x — реализация х
можно через win запускать графические nix-приложения на удалённых nix-машинах и просматривать
но на stand alone машине клиент-серверная архитектура x — избыточность и ресурсопотребляемость
x.org — работает с правами суперпользователя по дефолту
/etc/x11/xorg.conf

Графический интерфейс

системы высокого уровня
window manager — менеджер окон (wm)
создаёт обрамление окон, управление, настройки внешнего вида среды — базовые средства
всё остальное делают сами приложения
desctop environment — рабочее окружение (DE)
полноценная среда как ms windows — всё едино и для входящих в состав среды программ
единообразный интерфейс = сложность системы = меньше скорость работы
wm —
blackbox/fluxbox/openbox — аскетичный интерфейс с контекстным меню
wmaker — гибкий и лёгкий (самый популярный)
icewm — win-подобный
ealightment dr16/17 — красочный
xfce — переходная форма между wm и de
de —
gnome и kde — не совместимы даже на урорвне буфера обмена
*kde
много модулей
основе лежит toolkit qt3/4 — набор программного инструментария для создания приложений с графическим интерфейсом
кроссплатформенная мощная среда разработки — gui модули, net, xml и т.п.
средство быстрой обработки интерфейсов + c++
хорошая среда для обучения программированию
в составе kde
arts
kdelibs
kdebase
kdeadmin
kdenetwork
kdepim
kde_i18n
kdemultimedia
kdeedu
koffice (openoffice работает лучше с win doc)
и т.д.
kde сопоставим с windows xp по требовательности
все конфиги в формате xml, в ручную конфигурировать сложно
графические конфигураторы покрывают все настройки среды и программ входящих в неё
программа управления терминалом konsole
*gnome
кроссплатформенная графическая библиотека gtk+2 чуть более убогий аналок qt
язык c, без ооп (c++)
можно использовать приложения kde при наличии библиотек (чуть больше расход памяти)
ограниченные возможности визуального конфигурирования (в отличие от kde)
система предохраняет от ошибок (не всё можно модифицировать)
архитектурно — много библиотек (даже слишком в сравнении с kde)
gstreamer
caira
keyring
vfs
и т.д.
приложения
gconf — конфигурационная утилита системного уровня
abiword — редактор, поддерживающий win doc, но уступающий openoffice
evolution — мощная система
/etc/x11/xinitrc — инициализация системы x
стартовые скрипты различных инсталлированных графических систем
/usr/x11r6/bin/startx — действия при запуске x window

kupereal