banner banner banner
Cуперкомпьютеры: администрирование
Cуперкомпьютеры: администрирование
Оценить:
Рейтинг: 0

Полная версия:

Cуперкомпьютеры: администрирование

скачать книгу бесплатно


В символьном виде для chmod указывается один или более символов 'u/g/o/a' (владелец, группа, остальные, все три группы вместе), затем символ '+' или '-' для установки или сброса прав, и затем один или более символов 'r/w/x' – какие права затрагиваются. Например, chmod go+rx myfile добавит права на чтение и исполнение для группы и остальных файлу myfile.

Описанная выше система покрывает множество потребностей, но не все. В попытках улучшить её были созданы различные расширения, реализованные в файловых системах Linux. Одно из них – расширенные атрибуты файлов. Они включены по умолчанию, и их можно смотреть и изменять командами lsattr и chattr. Самые важные для нас:

Таблица 4: некоторые расширенные атрибуты

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

Другое расширение, как правило требующее активации на файловой системе, – ACL (Access Control List), списки контроля доступа. Посмотреть и изменить их можно командами getfacl и setfacl. Они работают аналогично традиционным правам доступа, рассмотренным выше, однако права на чтение/запись/исполнение теперь можно устанавливать отдельным пользователям и/или группам, а также ограничивать эти права маской. Маска – набор «максимальных» прав из правил acl (традиционные к ним не относятся), которые будут работать. Например, разрешим пользователю vasya чтение файла и запись в файл test.txt:

Здесь ключ '-m' указывает модифицировать правила acl. Указав ключ '--set', можно заменить правила, т. е. удалить старые и заменить новыми (в setfacl можно указать несколько правил одновременно). Ключом '-x' правила можно удалять. Строка 'u:vasya;rw' указывает на то, что правило относится к пользователю (u = user, g = group, o = others), его и<я vasya, и устанавливаются права на чтение и запись. Теперь установим маску – разрешим пользователю vasya (и другим, имеющим доступ через правила acl) «не более чем» чтение:

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

Ещё одно полезное свойство acl – наследование правил. На каталог можно установить acl «по умолчанию», они могут не совпадать с acl на сам каталог, и они будут автоматически применяться ко всем создаваемым файлам и каталогам.

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

Понятие сервиса, ключевые сервисы

Выше мы уже не раз использовали термины «сервис», «демон», «служба». Все они обозначают одно и то же: процесс или группу процессов, которые работают постоянно или автоматически запускаются по запросу. Их задача – обслуживать определённые запросы от пользователей, других процессов, других компьютеров в сети. Например, web-сервер apache – сервис, обслуживающий запросы по http-протоколу. SMTP-сервер отвечает за запросы на передачу почтовых сообщений и т. д. Рассмотрим сервисы, часто используемые в суперкомпьютерах. О некоторых из них мы уже говорили выше и здесь только перечислим их.

Некоторые сервисы запускаются через «супердемон» inetd или более новую его реализацию – xinetd. В этом случае в конфигурационном файле inetd/xinetd описываются необходимые сервисы: команда запуска, на каком порту слушать, от имени какого пользователя запускать и т. п. После запуска inetd/xinetd начинает слушать на указанных портах и при получении запроса запускает соответствующую команду, которой на стандартный поток ввода направляется установленное сетевое соединение. Такой принцип облегчает написание сервиса, а также позволяет более гибко настраивать политику доступа к нему. Например, xinetd позволяет задать диапазон адресов, с которых разрешён доступ, максимальное число одновременных запросов к сервису и т. п.

Чтобы узнать, работает ли конкретный сервис, можно проверить, запущен ли соответствующий процесс (за исключением сервисов, запускаемых через inetd/xinetd), слушает ли какой-либо процесс нужный порт (если сервис привязан к порту) командой netstat -lpn.

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

Таблица 5: некоторые стандартные сервисы и их порты

Более полный список можно найти в файле /etc/services – он содержит соответствие номера порта традиционно используемому сервису. Некоторые сервисы в нём не представлены ввиду не очень широкого распространения, и, конечно, ничто не мешает запустить какой-либо сервис на нестандартном порту, не забывайте об этом. Через супердемон inetd/xinetd часто запускаются такие сервисы, как tftp, echo, ftp.

Справка

В системе UNIX несколько тысяч команд, однако в обычной работе пользователю достаточно хорошо знать несколько десятков команд. В этом пособии мы кратко рассмотрим небольшой набор наиболее употребительных команд. В первую очередь потребуются команды для работы с каталогами и файлами. Как и ранее, в квадратных скобках будем указывать необязательные параметры.

Самая главная команда, которая вам потребуется, – man. Её имя происходит совсем не от английского «человек» (man), а от «руководство, учебник» (manual). Это – основной источник справочной информации по командам, пакетам и многому другому в UNIX и Linux. Вся информация в man разделена по разделам, исторически им присвоены номера. Как правило, для получения справки по какой-то команде достаточно набрать man имя_команды. Man найдёт первую страницу с заданным именем и отобразит её.

Таблица 6: разделы справки man

Так как в разных разделах могут быть страницы с одинаковыми именами, то иногда надо явно указать номер раздела. Например, по команде man crontab отобразится информация по команде crontab из раздела 1. Чтобы показать справку по формату файла crontab, надо набрать man 5 crontab, отобразить список файлов, в которых упомянуто нужное слово – man -k слово. И конечно, не забудьте выполнить man man.

Кроме man, есть ещё команда info, которая была призвана заменить man, но, несмотря на массу новых возможностей, так и не стала популярной. Но многие аспекты стандартных программ и сервисов описаны в info намного подробнее, чем в man.

Соглашения об именах файлов

В именах файлов и каталогов можно использовать любые символы, кроме '/' и '\0'. Одним из самых распространённых средств работы для UNIX является оболочка – shell. В shell некоторые символы имеют специальное значение (которое можно отменить) – это облегчает работу с файлами. Ниже приведён список спецсимволов shell:

Таблица 7: спецсимволы shell

UNIX не запрещает использовать эти символы в именах файлов, но необходимо экранировать их специальное назначение символом '\' или заключать их в одинарные кавычки '…'.

Соглашения о расширениях

Расширение файла – часть имени после последней точки; например, файл 'text.cc' имеет расширение '.cc'. Для большинства программ расширение не имеет принципиального значения, но его наличие облегчает понимание назначения файла. Ниже – наиболее часто встречающиеся расширения:

Таблица 8: распространённые расширения файлов

Важно понимать, что расширение файла не имеет принципиального значения для ОС и большинства программ. Поменяв расширение файла на '.exe' или '.sh', вы не сделаете его исполняемым. А вот скрипт с именем 'do_it_now' можно сделать исполняемым, выполнив 'chmod a+x do_it_now'. Расширения всего лишь упрощают восприятие файлов, давая понять, что это.

Имена, начинающиеся с точки (.), часто присваиваются служебным файлам и каталогам. Эти файлы и каталоги обычно игнорируются программами и файловыми менеджерами по умолчанию. Например, команда ls не показывает их, если не указать ключ '-a'.

Многие команды допускают в качестве аргумента использование списков имён файлов. Эти списки удобно формировать с помощью шаблонов shell. Рассмотрим их ниже.

Шаблоны

Стандартная оболочка (shell) в UNIX – очень мощный инструмент и кроме запуска команд имеет массу возможностей, упрощающих работу в консоли. Самое простое средство – шаблоны имён файлов. Например, написав команду 'ls *.c', мы получим список всех файлов с расширением '.c' в текущем каталоге.

Важно понимать, что '*.c' – не один аргумент, вместо него сам shell подставит нужный список. Если в каталоге только два файла – 1.c и 2.с, то будет выполнена команда 'ls 1.c 2.c'. Если ни одного файла с подходящим под шаблон именем нет, то будет подставлен сам шаблон (т. е. будет выполнена команда 'ls *.c').

Таблица 9: шаблоны в shell

Все шаблоны, кроме '{}', применяются к реальному списку файлов и выбирают из него только те, которые попадают под шаблон. С помощью скобок '{}' можно конструировать более сложные шаблоны.

Например, 'ls *.{cxx,h,la}' превратится в ls *.cxx *.h *.la. Более интересный приём – 'cp config{,.bak}', который превратится в cp config config.bak. Второй файл не существует, он явно задан шаблоном.

Если задан шаблон символами '*', '?' или '[]', но под него не попадает ни один файл, то команде будет передан сам шаблон. Например, если каталог пуст, а мы выполняем в нём команду 'ls *.abc', то выполнится команда 'ls *.abc', т. е. текст шаблона будет дан команде в качестве аргумента. Будьте осторожны со случайно или намеренно созданными файлами, начинающимися с тире, так как их имена после раскрытия шаблона могут быть восприняты командой как имя управляющего ключа команды!

Чтобы отменить действие спецсимвола, достаточно поставить перед ним обратную косую черту '\' или заключить весь аргумент в одинарные кавычки. Например, если мы хотим удалить файл с именем «--rf *.?», то можно использовать команду:

rm – –rf\ \*.\?

или

rm – '–rf *.?'

Обратите внимание на первый аргумент '--' – он нередко используется в командах Linux и обозначает «здесь закончились ключи, далее только имена файлов». В данном случае он не обязателен, но, к примеру, если потребуется удалить файл с именем '-f', то команда 'rm -f' не сработает, так как '-f' – это ключ команды rm. Сработает команда 'rm – -f'.

Команды для работы с деревом каталогов

pwd – напечатать полное имя текущего каталога.

cd [ dirname ] – перейти в указанный каталог (в домашний каталог, если dirname не задано); dirname здесь – имя каталога, которое может состоять из собственно имени и пути к нему. Путь может быть абсолютным, если он начинается с символа /, и относительным, если начинается с любого другого символа.

Примеры перемещения по дереву каталогов:

сd /export/home/user1 – переход в домашний каталог пользователя user1;

cd / – переход в корневой каталог файловой системы;

cd prog/cc – переход из текущего каталога в каталог cc, находящийся в каталоге prog;

cd ../gosha/bin – возврат на шаг назад и переход в каталог bin пользователя gosha;

cd – переход в свой домашний каталог.

Специальные имена каталогов:

. (точка) – текущий каталог;

.. (две точки) – родительский каталог по отношению к текущему.

В bash или zsh можно использовать спецсимволы, которые shell преобразует в имена каталогов:

~ (тильда) – домашний каталог;

~name – домашний каталог пользователя name;

– (тире) – возврат в предыдущий каталог (опция встроенной команды cd).

Команды для работы с каталогами

mkdir [опции] имя_каталога … – создать новые каталоги.

Опции:

-m mode – задать права доступа;

-p – создавать при необходимости родительские каталоги.

rmdir имя_каталога … – удалить каталоги (каталоги должны быть пустыми).

ls [опции/имена] – выводит содержимое каталога или атрибутов файлов.

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

Наиболее часто используются опции:

-a – вывести все файлы (даже если имена начинаются с точки);

-l – вывести подробную информацию о файлах и папках (права доступа, имя владельца и группы, размер в блоках по 512 байт, время последней модификации, имя файла или каталога);

-t – имена файлов сортируются не по алфавиту, а по времени последнего изменения;

-R – рекурсивно пройти по всем подкаталогам, выводя по ним информацию.

Команды для работы с файлами

touch [опции] имя_файла – создать файл, если он не существовал, или изменить время последнего изменения файла.

rm [опции] имя_файла … — удаление файлов

опции

-i – интерактивное удаление (с требованием подтверждения);

-f – без выдачи сообщений;

-r – рекурсивное удаление каталогов вместе с содержимым.

Примеры:

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

rm test* удалит все файлы с именами, начинающимися на test;

rm test * (после test стоит пробел) удалит вообще все файлы в каталоге (кроме начинающихся на точку).

mv [опции] источник назначение – перемещение файлов и каталогов.

Опции:

-i – интерактивное перемещение (с требованием подтверждения);

-f – без выдачи сообщений.

Команда mv выполняет множество функций в зависимости от типа аргументов.

1) Переименовывает файлы и каталоги, если оба аргумента являются либо файлами, либо каталогами:

mv file1 file2 – в рабочем каталоге файл file1 получит имя file2;

mv dir1 dir2 – если dir2 не существовал в рабочем каталоге, то каталог dir1 получит имя dir2; если dir2 существовал, то каталог dir1 будет перемещён в него.

2) Перемещает файл или каталог в другой каталог с тем же именем или другим:

mv file1 dir2 – перемещает file1 из рабочего каталога в каталог dir2 с тем же именем;

mv file1 dir2/file2 – перемещает file1 из рабочего каталога в каталог dir2 с именем file2.

Если источником является список файлов, а назначением – каталог, то можно использовать шаблоны:

mv file* ../dir2 – перемещает все файлы, имена которых начинаются со строки file, в каталог одного уровня с рабочим.

Во всех операциях объекты, выступающие в качестве источника, исчезают: меняют имя или расположение.

cp [опции] источник назначение – копирование файлов и каталогов.

Опции: