В і о

ф е с с и о н а л о в

Т"—

^

И » - м

i-г —‘T01 с i

/ >о

і а

Щ # о г* г

О

,-**Ѵ пЯіЬіО^Ч

|

\

І Ж1 w fc « B1

j

«r-нзі т о ю pio

1 01 щ 0

’ 1 0 1 C

)

«

(

А ПРАКТИКЕ

Кристин БРЕСНАХЭН, Ричард БЛУМ

^

Ш П П Т Е Р '

LINUX ESSENTIALS

Second Edition

Christine Bresnahan Richard Blum

CdStfBBC

A Wiley Brand

для профессионалов

Кристин БРЕСНАХЭН, Ричард БЛУМ

НА ПРАКТИКЕ

Санкт-Петербург • Москва • Екатеринбург • Воронеж Нижний Новгород • Ростов-на-Дону Самара • Минск

2017

ББК 32.973.2-018.2 УДК 004.451 Б87

Бреснахэн К., Блум Р.

Б87 Linux на практике. — СПб.: Питер, 2017. — 384 с.: ил. — (Серия «Для про­

фессионалов»), ISBN 978-5-4Ѳ6-02519-5

Книга специально предназначена для обучения сотрудников работе с Linux. Основные достоинства

книги: • содержит тематически сгруппированные уроки, что быстро поможет вам найти самое нужное и перейти

к конкретной главе, где эта тема подробно рассматривается;

• описывает основы операционной системы Linux, в том числе ее дистрибутивы, типы приложений с от­

крытым исходным кодом, свободное ПО, лицензирование, навигацию и многое другое;

• исследует работу с командной строкой, в том числе навигацию в ней, превращение команд в сценарии

ит. п .;

• учит создавать типы пользователей и пользовательские группы.

12+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.)

ББК 32.973.2-018.2 УДК 004.451

Права на издание получены по соглашению с Sybex Inc. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

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

ISBN 978-1119092063 англ. ISBN 978-5-496-02519-5

© 2015 by John Wiley & Sons, Inc., Indianapolis, Indiana © Перевод на русский язык ООО Издательство «Питер», 2017 ©Издание на русском языке, оформление ООО Издательство «Питер». 2017 ©С ерия «Для профессионалов», 2017

Краткое содержание

Благодарности…………………………………………………………………………………………………… 15

Об авторах…………………………………………………………………………………………………………..16

В ведение……………………………………………………………………………………………………………. 17

Глава 1. Выбор операционной системы………………………………………………………………24 Глава 2. Лицензирование программного обеспечения……………………………………….47

Глава 3. Принципы и философия Linux……………………………………………………………….. 64 Глава 4. Популярные программы Linux……………………………………………………………….. 78

Глава 5. Управление аппаратными средствами…………………………………………………. 110

Глава 6. Знакомство с командной строкой………………………………………………………..137

Глава 7. Работа с файлами и каталогами………………………………………………………….. 168

Глава 8. Поиск, извлечение и архивация данных…………………………………………………194

Глава 9. Процессы и их данные…………………………………………………………………………..220

Глава 10. Редактирование файлов……………………………………………………………………. 239

Глава 11. Создание сценариев…………………………………………………………………………..258

Глава 12. Основы безопасности……………………………………………………………………….. 274

Глава 13. Создание пользователей и групп………………………………………………………..293

Глава 14. Настройка владения и прав доступа……………………………………………………317

Глава 15. Управление сетевыми подключениями……………………………………………… 337

Приложение. Ответы на контрольные вопросы………………………………………………….361

Оглавление

Б лагодарности……………………………………………………………………………………………………15

Об авторах…………………………………………………………………………………………………………. 16

В ведение…………………………………………………………………………………………………………….17

Что такое Linux……………………………………………………………………………………………………..17

Кому нужно прочитать эту книгу……………………………………………………………………………18

Системные требования……………………………………………………………………………………….. 19

Структура кни ги ………………………………………………………………………………………………….. 20

Условные обозначения, используемые в книге……………………………………………………..22

Глава 1. Выбор операционной системы………………………………………………………………. 24

Что такое операционная система………………………………………………………………………… 24

Ядро……………………………………………………………………………………………………………….25 Компоненты операционной системы……………………………………………………………… 26 Исследование пользовательских интерфейсов…………………………………………………….27

Текстовый пользовательский интерфейс……………………………………………………….. 28 Графический пользовательский интерфейс……………………………………………………29 Место Linux среди операционных систем……………………………………………………………..32

Linux и Unix……………………………………………………………………………………………………. 32

Linux и macOS……………………………………………………………………………………………….. 34 Linux и Windows………………………………………………………………………………………………36 Дистрибутивы………………………………………………………………………………………………………38

Создание полноценной ОС на базе Linux……………………………………………………….. 39 Распространенные дистрибутивы Linux…………………………………………………………. 40

Циклы выпуска……………………………………………………………………………………………….44

Оглавление

7

Глава 2. Лицензирование программного обеспечения……………………………………….. 47

Исследование лицензий на программное обеспечение……………………………………….. 48

Защита авторских прав и программное обеспечение …………………………………….48 Использование лицензий для изменения условий охраны авторского права …. 49

Фонд свободного программного обеспечения…………………………………………………….. 51

Философия фонда………………………………………………………………………………………… 51

Свободное программное обеспечение и лицензия GPL…………………………………..52 Инициатива открытого исходного к о д а ……………………………………………………………….. 54

Философия ПО с открытым исходным кодом………………………………………………….54

Определение программного обеспечения с открытым исходным кодом……….. 56

Корпорация Creative Commons…………………………………………………………………………….. 57

Лицензии на программное обеспечение с открытым исходным кодом………………….58

Описание лицензий……………………………………………………………………………………….. 58

Бизнес-модели на базе ПО с открытым исходным кодом………………………………. 60

Глава 3. Принципы и философия Linux………………………………………………………………… 64

История Linux………………………………………………………………………………………………………. 64

Происхождение Linux……………………………………………………………………………………..65 Мир Linux сегодня…………………………………………………………………………………………. 67

Программное обеспечение с открытым исходным кодом…………………………………….. 68

Основные принципы………………………………………………………………………………………. 68

Linux как интегратор программного обеспечения …………………………………………..71

Роли операционной системы……………………………………………………………………………….. 72

Встроенные компьютеры………………………………………………………………………………. 72 Настольные и портативные компьютеры……………………………………………………….. 73 Серверные компьютеры………………………………………………………………………………… 74

Глава 4. Популярные программы Linux……………………………………………………………….. 78

Среда рабочего стола Linux…………………………………………………………………………………. 79

Выбор среды рабочего стола………………………………………………………………………… 79

Запуск программ…………………………………………………………………………………………….81

Файловый менеджер………………………………………………………………………………………84 Работа с прикладными программами……………………………………………………………………86

Как найти правильный инструмент для работы………………………………………………. 88

Браузер…………………………………………………………………………………………………………. 89 Клиенты электронной почты……………………………………………………………………………90

Офисные инструменты………………………………………………………………………………….. 91

ѳ

Оглавление

Мультимедийные приложения……………………………………………………………………….. 92 Использование Linux в сфере облачных вычислений………………………………………93 Мобильные приложения………………………………………………………………………………… 95 Серверные программы…………………………………………………………………………………………95

Распространенные серверные протоколы и программы………………………………… 95 Веб-серверы……………………………………………………………………………………………….. 100

Установка и запуск серверов ………………………………………………………………………. 100 Защита серверов ……………………………………………………………………………………….. 101

Управление языками программирования…………………………………………………………… 102

Сравнение компилируемого и интерпретируемого языка……………………………. ЮЗ Распространенные языки программирования …………………………………………….. 104

Управление пакетами программ………………………………………………………………………….106

Что такое пакеты программ…………………………………………………………………………..106 Распространенные инструменты управления пакетами…………………………………107

Глава 5. Управление аппаратными средствами………………………………………………….ПО

Центральный процессор…………………………………………………………………………………….И 1

Семейства ЦП……………………………………………………………………………………………… И 1 Определение типа процессора……………………………………………………………………. ИЗ Определение возможностей материнской платы………………………………………………. И 4

Калибровка источника питания…………………………………………………………………………..116

Диски ……………………………………………………………………………………………………………….. 117

Дисковые интерфейсы ………………………………………………………………………………..117 Разбиение дисков……………………………………………………………………………………….. 118

Файловые системы……………………………………………………………………………………… 122 Съемные и оптические диски………………………………………………………………………. 126

Управление дисплеями……………………………………………………………………………………… 127

Понимание роли X ……………………………………………………………………………………….. 128 Популярное аппаратное обеспечение дисплеев…………………………………………… 129

Работа с USB-устройствами………………………………………………………………………………. 132

Управление драйверами……………………………………………………………………………………. 133

Типы драйверов……………………………………………………………………………………………133

Поиск и установка драйверов………………………………………………………………………. 134

Глава 6. Знакомство с командной строкой…………………………………………………………137

Запуск командной строки……………………………………………………………………………………138

Запуск терминала……………………………………………………………………………………….. 138 Вход в текстовую консоль…………………………………………………………………………….. 142

Оглавление

9

Запуск программ…………………………………………………………………………………………………143

Консольные программы………………………………………………………………………………..143

Программы с графическим интерфейсом……………………………………………………. 145

Программы в фоновом режиме……………………………………………………………………. 145

Функции оболочки……………………………………………………………………………………………… 146

Функция завершения команды…………………………………………………………………….. 147 История команд…………………………………………………………………………………………… 148 Получение справки с использованием страниц man…………………………………………… 149

Предназначение страниц m an……………………………………………………………………… 149

Поиск страниц man по номеру раздела…………………………………………………………150

Поиск нужной страницы m an…………………………………………………………………………151 Чтение страниц man…………………………………………………………………………………….. 152

Использование less……………………………………………………………………………………… 154

Получение справки с использованием страниц info……………………………………………. 156

Предназначение страниц info………………………………………………………………………..157

Чтение страниц info……………………………………………………………………………………… 158

Поиск дополнительной документации…………………………………………………………………159

Поиск документации к программам на вашем компьютере………………………….. 160

Поиск программной документации в режиме онлайн…………………………………… 163

Консультация экспертов………………………………………………………………………………. 163

Глава 7. Работа с файлами и каталогами…………………………………………………………… 168

Основы………………………………………………………………………………………………………………. 168

Пользовательские и системные файлы…………………………………………………………169

Стандарт иерархии файловой системы…………………………………………………………171

Важные каталоги и их содержимое………………………………………………………………..172 Навигация по файлам и каталогам…………………………………………………………………….. 175

Получение списков файлов………………………………………………………………………….. 175 Изменение каталогов…………………………………………………………………………………… 177

Абсолютные и относительные ссылки на файлы…………………………………………… 178

Операции с файлами…………………………………………………………………………………………..180

Создание файлов………………………………………………………………………………………….180 Копирование файлов…………………………………………………………………………………… 182 Перемещение и переименование файлов …………………………………………………… 184 Использование ссылок………………………………………………………………………………….184

Удаление файлов………………………………………………………………………………………….186 Подстановочные знаки………………………………………………………………………………….187

Чувствительность к регистру…………………………………………………………………………188

10

Оглавление

Работа с каталогами……………………………………………………………………………………………189

Создание каталогов…………………………………………………………………………………….. 189

Удаление каталогов……………………………………………………………………………………… 190 Управление каталогами…………………………………………………………………………………191

Глава 8. Поиск, извлечение и архивация данных…………………………………………………194

Регулярные выражения……………………………………………………………………………………… 194

Поиск и извлечение данных…………………………………………………………………………………197

Команда g re p ………………………………………………………………………………………………. 197 Команда find………………………………………………………………………………………………….199

Команда w c …………………………………………………………………………………………………. 200

Команда c u t………………………………………………………………………………………………… 201 Команда s o rt……………………………………………………………………………………………….. 202 Команда cat…………………………………………………………………………………………………. 204 Перенаправление ввода и вывода……………………………………………………………………… 205

Основные операторы перенаправления………………………………………………………. 205

Конвейеры………………………………………………………………………………………………….. 208

Генерирование командных строк…………………………………………………………………..208 Архивация данных………………………………………………………………………………………………210

Команда ta r …………………………………………………………………………………………………. 210

Сжатие………………………………………………………………………………………………………… 213 Команда zip…………………………………………………………………………………………………. 214

Глава 9. Процессы и их данные…………………………………………………………………………. 220

Управление пакетами………………………………………………………………………………………… 220

Принципы управления пакетами в Linux……………………………………………………….. 221 Как устроены системы управления пакетами………………………………………………. 222

Управление системами на базе Red H at………………………………………………………. 224 Управление системами на базе Debian………………………………………………………… 225 Иерархия процессов…………………………………………………………………………………………. 226

Обнаружение запущенных процессов……………………………………………………………….. 227

Идентификация процессов с помощью утилиты ps………………………………………. 228

Идентификация процессов с помощью утилиты to p …………………………………….. 229

Измерение потребления памяти…………………………………………………………………..231 Лог-файлы………………………………………………………………………………………………………… 233

Расположение лог-файлов……………………………………………………………………………233 Генерирование более подробных записей для лог-файлов……………………………235

Буфер уровня ядра………………………………………………………………………………………. 236

Оглавление

11

Глава 10. Редактирование файлов……………………………………………………………………. 239

Текстовые файлы………………………………………………………………………………………………. 239

Выбор редактора………………………………………………………………………………………………. 241

Запуск редактора………………………………………………………………………………………………. 243

Редактирование файлов в программах рісо и папо…………………………………………….. 245

Соглашения, принятые в текстовых редакторах……………………………………………. 245

Основные операции редактирования текста в программе nano……………………. 246

Сохранение внесенных изменений в редакторе папо…………………………………… 248

Редактирование файлов с помощью программы ѵі…………………………………………….. 249

Режимы редактора ѵі……………………………………………………………………………………. 250

Основные процедуры редактирования текста в программе ѵ і ……………………… 252

Сохранение внесенных изменений в редакторе ѵ і…………………………………………255

Глава 11. Создание сценариев…………………………………………………………………………..258

С чего начинается сценарий………………………………………………………………………………. 259

Команды…………………………………………………………………………………………………………….260

Аргументы…………………………………………………………………………………………………………..262

Переменные………………………………………………………………………………………………………. 264

Условные выражения…………………………………………………………………………………………..267

Циклы ……………………………………………………………………………………………………………….. 269

Функции…………………………………………………………………………………………………………….. 270

Значение завершения сценария………………………………………………………………………….271

Глава 12. Основы безопасности…………………………………………………………………………274

Знакомство с учетными записями……………………………………………………………………… 274

Свойства учетных записей……………………………………………………………………………275

Определение учетных записей…………………………………………………………………….. 278

Группы………………………………………………………………………………………………………… 281

Инструменты для работы с учетными записями………………………………………………….282

Получение данных о себе самом…………………………………………………………………..282

Как узнать, кто сейчас в системе…………………………………………………………………..283

Работа от имени суперпользователя…………………………………………………………………..286

Типы пользователей…………………………………………………………………………………….. 286

Получение привилегий администратора……………………………………………………… 287

Безопасное использование привилегий администратора……………………………. 289

12

Оглавление

Глава 13. Создание пользователей и групп………………………………………………………. 293

Создание новых учетных записей………………………………………………………………………. 293

Выбор стратегии использования групп…………………………………………………………294

Выбор хорошего пароля………………………………………………………………………………. 294 Создание учетных записей с помощью ГПИ-инструментов………………………….. 297 Создание учетных записей из командной оболочки………………………………………299

Изменение учетных записей……………………………………………………………………………….302

Когда приходится изменять учетные записи………………………………………………… 302

Как узнать, кто находится в системе……………………………………………………………. 303

Изменение учетных записей с помощью ГПИ-инструментов………………………..304 Изменение учетных записей из командной строки………………………………………. 305

Удаление учетных записей………………………………………………………………………………… 308

Как избежать проблем при удалении учетных записей………………………………… 309

Удаление учетных записей с помощью ГПИ-инструментов……………………………310

Удаление учетных записей в командной строке……………………………………………. 310 Управление группами………………………………………………………………………………………… 312

Управление группами с помощью ГПИ-инструментов…………………………………. 312

Управление группами в командной строке……………………………………………………313

Глава 14. Настройка владения и прав доступа……………………………………………………317

Настройка владения……………………………………………………………………………………………317

Основные сведения о владении……………………………………………………………………318

Настройка владения в файловом менеджере………………………………………………. 319 Настройка владения в оболочке………………………………………………………………….. 321 Настройка прав доступа……………………………………………………………………………………..322

Основные сведения о правах доступа…………………………………………………………. 322

Настройка прав доступа в файловом менеджере………………………………………….326 Настройка прав доступа в оболочке…………………………………………………………….. 327

Настройка маски пользователя…………………………………………………………………….328

Биты особых прав доступа и функции файлов…………………………………………………….329

Биты закрепления в памяти…………………………………………………………………………. 329 Особые права выполнения………………………………………………………………………….. 331

Скрытие файлов………………………………………………………………………………………….. 333 Просмотр каталогов……………………………………………………………………………………..334

Глава 15. Управление сетевыми подключениями……………………………………………… 337

Основные сведения о сетевых функциях…………………………………………………………….337

Настройка сетевого подключения……………………………………………………………………… 340

Оглавление

13

Принятие решения об использовании DHCP……………………………………………….. 340 Создание Wi-Fi-подключения………………………………………………………………………. 341

Настройка сети с помощью графического интерфейса……………………………….. 345 Инструменты текстового пользовательского интерфейса……………………………. 348

Тестирование сетевого подключения………………………………………………………………… 352

Проверка таблицы маршрутизации……………………………………………………………… 352

Тестирование возможности подключения…………………………………………………….353 Поиск разрывов при подключении………………………………………………………………. 353

Тестирование DN S………………………………………………………………………………………. 355 Проверка состояния сети…………………………………………………………………………….. 356

Защита системы от злоумышленников………………………………………………………………. 357

Приложение. Ответы на контрольные вопросы………………………………………………….361

Глава 1……………………………………………………………………………………………………………….. 361

Глава 2……………………………………………………………………………………………………………….. 362

Глава 3 ……………………………………………………………………………………………………………….. 364

Глава 4 ……………………………………………………………………………………………………………….. 365

Глава 5 ……………………………………………………………………………………………………………….. 367

Глава 6 ………………………………………………………………………………………………………………..368

Глава 7 ……………………………………………………………………………………………………………….. 369

Глава 8……………………………………………………………………………………………………………….. 371

Глава 9 ……………………………………………………………………………………………………………….. 372

Глава 10……………………………………………………………………………………………………………… 373

Глава 11………………………………………………………………………………………………………………374

Глава 12………………………………………………………………………………………………………………376

Глава 13………………………………………………………………………………………………………………377

Глава 14………………………………………………………………………………………………………………379

Глава 15………………………………………………………………………………………………………………380

Для тех, кто хочет узнать больше об операционной системе Linux. Начнем наше путешествие!

Мудрый человек — силен, и тот, кто сведущ, увеличивает свою силу.

Притчи 24:5 (новый русский перевод)

Благодарности

Большое спасибо команде издательства Sybex за отличную работу над этим про­ ектом. Благодарим рецензента издательства Кениона Брауна. Кроме того, выража­ ем благодарность выпускающему редактору Гэри Шварцу за то, что курировал процесс написания книги и сделал ее более презентабельной. Мы очень призна­ тельны Гэри за усердие. Научный редактор Кевин Е. Райан дважды проверил текст книги и внес несколько предложений по его улучшению. Выражаем благодарность молодому талантливому художнику Даниэлу Анезу (theanez.com) за создание иллюстраций и обложки. Кроме того, мы хотим сказать спасибо Кэрол Джелен из Waterside Productions за то, что помогала нам строить писательскую карьеру.

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

Ричард выражает благодарность жене Барбаре за любовь и поддержку в про­

цессе написания книги, а также Кристин и Тимоти — за многолетнюю дружбу.

Об авторах

Кристин Бреснахэн, CompTIA Linux+, LPIC-1, Linux Essentials, начала работать с компьютерами более 30 лет назад в качестве системного администратора. Кристин является адъюнкт-профессором в колледже Ivy Tech Community, где преподает курсы подготовки к сертификации Linux, а также курсы программирования на языке Python. Она пишет книги и создает обучающие программы.

Ричард Блум, CompTIA Linux+, LPIC-1, Linux Essentials, проработал в ИТ- индустрии более 25 лет в качестве системного и сетевого администратора и опу­ бликовал множество книг, посвященных Linux и открытому исходному коду. Рич — онлайн-инструктор на курсах по Linux и веб-программированию, которые проводятся в колледжах и университетах США. Свободное время Рич проводит с женой Барбарой и двумя дочерьми — Кэти Джейн и Джессикой.

Введение

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

На следующих страницах объясняется, почему вам стоит обратить внимание на Linux, поясняется, кому адресована книга, подробно рассказывается, как она струк­ турирована и какие условные обозначения в ней используются.

Что такое Linux Операционная система Linux представляет собой клон Unix, которая на протяже­ нии многих лет пользовалась популярностью в академической и деловой среде. Linux состоит из ядра (kernel) и многочисленных библиотек и утилит, опирающих­ ся на это ядро для обеспечения функций, с которыми взаимодействуют пользова­ тели. Эта ОС предусматривает множество дистрибутивов, которые представляют собой коллекции, содержащие специфическое ядро и конкретные поддерживаемые им программы. К популярным дистрибутивам Linux относятся Arch, CentOS, Debian, Fedora, Gentoo, Mandriva, openSUSE, Red Hat, Slackware, SUSE Enterprise и Ubuntu, однако существуют сотни, если не тысячи, других дистрибутивов Linux. Данная книга посвящена инструментам и методам, использующимся в большинстве (если не во всех) дистрибутивов, хотя в ней вы также найдете описания инстру­ ментов, специфических для некоторых дистрибутивов.

Определенные характеристики Linux делают ее достойной изучения и исполь­

зования.

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

18

Введение

в свободном доступе, и их можно модифицировать и распространять. Если вам не нравится что-то в том, как работает ОС, вы можете это самостоятельно из­ менить! (Однако для этого вам потребуются навыки программирования.)

□ Linux является бесплатным программным обеспечением. Несмотря на то что некоторые дистрибутивы требуют оплаты, большинство из них можно загрузить из Всемирной паутины и использовать, не потратив ни копейки. Это большое подспорье для студентов, владельцев бизнесов с ограниченным бюджетом и для тех, кто хочет сэкономить. Если вы готовы платить за расширенную поддержку, можете нанять консультантов или приобрести контракты на обслуживание.

□ Linux (как клон Unix) унаследовала большую часть программного обеспечения Unix, включая многие важные программы веб-серверов, базы данных, языки программирования и многое другое.

□ Linux — высокомасштабируемая операционная система: работает на всем, на­ чиная с мобильных устройств и заканчивая суперкомпьютерами. Версии Linux, подробно описанные в этой книге, работают на более ограниченном диапазоне аппаратных средств, однако они поддерживаются системами, выпущенными несколько лет назад, а также новейшим аппаратным обеспечением. Linux может эффективно использовать системы, которые слишком стары для последней версии Windows или macOS.

□ Многие предприятия и некоммерческие организации используют Linux. Несмотря на то что большая часть настольных систем до сих пор полагается на Windows, Linux часто используется для обслуживания сайтов организаций, маршрутизации их интернет-трафика и решения других важных фоновых задач. В некоторых случаях Linux также применяется в качестве настольной операционной системы. Таким образом, изучение Linux улучшит ваши пер­ спективы трудоустройства.

Вы можете установить Linux практически на любой системе. Вы можете уста­ новить ее отдельно или вместе с другой операционной системой, чтобы изучать ее без потери возможности выполнять работу в привычной ОС.

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

Системные требования

19

никогда раньше не использовали Linux. Если вы уже имеете некоторое представ­ ление об этой системе, то многие из описанных здесь тем будут вам знакомы.

Предполагается, что вы в целом умеете работать за компьютером, например знае­ те, как пользоваться клавиатурой, как вставить диск в привод и т. д. Скорее всего, вы уже имеете значительный опыт работы за компьютером, возможно, вам даже при­ ходилось использовать Linux, а может быть, только Windows или macOS. Однако мы не рассчитываем, что вы обладаете навыками администрирования системы Linux.

Системные требования Вам потребуется система Linux, в которой вы будете отрабатывать практические навыки. Ее можно установить:

□ в качестве единственной ОС на компьютере;

□ наряду с другой ОС;

□ в эмулированной компьютерной среде, предоставляемой такими программами виртуализации, как VMware (www.vmware.com) и VirtualBox (www.virtualbox.org).

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

Изучая материал, вы можете использовать любой популярный дистрибутив Linux, однако если эта тема нова для вас, то лучше всего подойдет один из самых дружественных пользователю дистрибутивов, например CentOS, Fedora, openSUSE или Ubuntu. Эта книга не содержит инструкций по установке Linux. Для решения данной задачи придется обратиться к документации конкретных дистрибутивов.

Чтобы можно было установить Linux и использовать все инструменты ее графи­

ческого интерфейса, ваш компьютер должен соответствовать таким требованиям:

□ процессор — 400 МГц Pentium Pro или лучше;

□ минимальный объем оперативной памяти — 640 Мбайт;

□ рекомендуемый объем оперативной памяти — минимум 1152 Мбайт;

□ пространство на жестком диске — минимум 9 Гбайт нераспределенного про­

странства.

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

20

Введение

Структура книги Эта книга состоит из введения и 15 глав.

□ Глава 1. Выбор операционной системы. Приводится обзор операционных си­ стем. Материал главы поможет вам понять, что представляет собой Linux и в ка­ ких ситуациях она может вам пригодиться.

□ Глава 2. Лицензирование программного обеспечения. Описываются закон об авторском праве и лицензии, используемые Linux и другими операционными системами для расширения или ограничения права пользователей на примене­ ние и копирование программного обеспечения.

□ Глава 3. Принципы и философия Linux. Дается история Linux, а также описы­

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

□ Глава 4. Популярные программы Linux. Рассматриваются основные категории программного обеспечения Linux и наиболее популярные программы данной операционной системы.

□ Глава 5. Управление аппаратными средствами. Приводятся рекомендации по выбору и использованию оборудования в Linux. Рассматриваются всевозможные темы, начиная с центрального процессора (ЦП) и заканчивая драйверами устройств.

□ Глава 6. Знакомство с командной строкой. Описываются способы управления Linux с помощью вводимых команд. Хотя многим новым пользователям эта тема кажется сложной, управление Linux с помощью командной строки имеет большое значение.

□ Глава 7. Работа с файлами и каталогами. Объясняется, как перемещать, пере­ именовывать, удалять и редактировать файлы. Каталоги представляют собой особый тип файлов, поэтому они также описываются в этой главе.

□ Глава 8. Поиск, извлечение и архивация данных. Рассматриваются инстру­ менты, которые можно использовать для поиска данных на вашем компьютере, а также способы управления архивными файлами для передачи и резервного копирования данных.

□ Глава 9. Процессы и их данные. Описываются способы установки программ в Linux, а также изменения приоритета запуска или остановки выполнения от­ дельных программ.

□ Глава 10. Редактирование файлов. Посвящена редактированию текстовых файлов. Описываются основные текстовые редакторы pico, nano и ѵі, а также некоторые распространенные соглашения для конфигурационных файлов и форматирования текстовых файлов.

Структура книги

21

□ Глава 11. Создание сценариев. Описывается процесс создания простых сце­ нариев, представляющих собой программы, способные запускать другие про­ граммы. Вы можете использовать сценариидля автоматизации утомительных заданий, выполняемых в ручном режиме, тем самым повышая свою произво­ дительность.

□ Глава 12. Основы безопасности. Объясняются концепции, которые имеют решающее значение для понимания многопользовательской природы Linux. Кроме того, описывается учетная запись суперпользователя, используемая ОС для решения большинства административных задач.

□ Глава 13. Создание пользователей и групп. Рассматриваются программное обеспечение и процедуры, которые можно использовать для создания, измене­ ния и удаления учетных записей и групп, определяющих того, кто может рабо­ тать на компьютере.

□ Глава 14. Настройка владения и прав доступа. Описываются способы контро­ ля: какие пользователи могут получить доступ к файлам и каким образом они могут это сделать. Наряду с пользователями и группами владение и права до­ ступа позволяют контролировать безопасность компьютера.

□ Глава 15. Управление сетевыми подключениями. Посвящена важному вопро­ су сообщения Linux о том, как использовать сеть (в том числе тестированию подключения и основным мерам обеспечения сетевой безопасности).

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

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

□ Основы и не только. Это краткий обзор рассмотренного в главе материала. Если в процессе прочтения данного абзаца что-то покажется вам незнакомым, вер­ нитесь к соответствующему разделу главы!

□ Упражнения. Каждая глава содержит от двух до четырех упражнений, которые вам следует выполнить для получения практического опыта работы с Linux. Упражнения не обязательно предполагают «правильные» ответы — они моти­ вируют вас самостоятельно исследовать ОС.

2 2

Введение

□ Контрольные вопросы. Каждая глава завершается серией из десяти вопросов, подразумевающих выбор одного из нескольких вариантов ответов, определение истинности/ложности утверждения или заполнение пропусков. (Ответы на вопросы приведены в приложении.) Контрольные вопросы помогут вам про­ верить и закрепить свои знания.

Чтобы получить максимальную пользу от книги, вы должны прочитать каждую главу от начала до конца, выполнить упражнения и ответить на контрольные во­ просы. Даже если вы уже знакомы с какой-либо темой, все равно прочитайте соот­ ветствующую главу. Linux — достаточно сложная система, одну и ту же задачу в ней часто можно решить несколькими способами. Даже если вы неплохо разбираетесь в той или иной области, всегда есть шанс узнать что-то новое.

Условные обозначения, используемые в книге В этой книге используются разные способы оформления текста, помогающие бы­ стро найти важную информацию. В частности, обратите внимание на следующие стили форматирования:

□ курсивом выделены ключевые термины, которые впервые встречаются в главе. Кроме того, курсивом выделяются слова, на которые нужно обратить особое внимание;

□ таким шрифтом выделяются URL-адреса, сообщения, которые отображаются в текстовом интерфейсе оболочки командной строки Linux, названия клавиш, названия пунктов меню, окон и т. д.;

□ моноширинным шрифтом выделяются листинги, содержимое конфигурационных файлов, имена файлов и имена консольных команд, имена папок, а также и пути к ним;

□ курсивный моноширинный текст указывает на переменные — информацию, кото­ рая отличается от одной системы или запускаемой команды к другой, например

имя клиентского компьютера или имя файла пользователя;

□ жирным моноширинным шрифтом выделяется информация, которую вам нужно ввести, как правило, в оболочке командной строки Linux. Этот текст также может быть выделен курсивом, чтобы указать на необходимость заменить соответству­ ющее значение для вашей системы. Команды, которые должны быть выведены отдельной строкой, предваряются моноширинным символом $ или # (определя­ ет обычного пользователя или системного администратора соответственно).

Условные обозначения, используемые в книге

23

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

следует читать после абзацев,

к которым они относятся.

Как правило, примечания на полях

ВРЕЗКИ ———————————————————————————-

Врезка содержит расширенное описание темы, которое связано с основным текстом; это может быть дополнительный подробный материал или описание способа решения за­ дачи, отличающегося от рассматриваемого в основном тексте.

Во многих главах описываются методы решения задач как средствами графи­ ческого интерфейса, так и с помощью текстового интерфейса. Поскольку инстру­ менты графического интерфейса вам, вероятно, знакомы лучше, большинство глав начинается именно с них. Тем не менее во многих случаях более мощными инстру­ ментами являются текстовые команды. По мере накопления опыта работы в Linux вы, вероятно, обнаружите, что используете текстовые команды чаще, чем инстру­ менты графического интерфейса, из-за дополнительной гибкости, которую они обеспечивают. Кроме того, инструменты графического интерфейса, как правило, значительно различаются в зависимости от дистрибутива, чего нельзя сказать об инструментах текстового режима.

Глава 1 Выбор операционной системы

Тот факт, что вы читаете эту книгу, говорит о том, что вы хотите изучить Linux. Перед тем как начать это путешествие, вы должны понять, что такое операционная система и к какому типу систем относится Linux, поэтому текущая глава посвяще­ на этим базовым вопросам.

Мы разберемся, что такое операционная система и пользовательские интерфей­ сы, сравним Linux с другими операционными системами, а также рассмотрим раз­ личия между ее разными реализациями. Понимание этих вопросов поможет вам ориентироваться в процессе изучения Linux.

□ Что такое операционная система.

□ Исследование пользовательских интерфейсов.

□ Место Linux среди операционных систем.

□ Дистрибутивы.

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

Что такое операционная система

25

Я дро

Ядро ОС представляет собой программный компонент, который отвечает за управ­ ление различными низкоуровневыми функциями компьютера, в том числе:

□ взаимодействие с аппаратными средствами (сетевые адаптеры, жесткие диски и пр.);

□ выделение памяти для отдельных программ;

□ выделение времени процессора для отдельных программ;

□ взаимодействие программ друг с другом.

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

Коротко говоря, ядро является своеобразным клеем, который удерживает ком­

поненты ОС вместе. Без ядра она мало что может сделать. Ядра не являются взаимозаменяемыми. Ядро Linux отличается от ядра macOS или Windows. Каждое ядро имеет свой внутренний дизайн и предоставляет различ­ ные интерфейсы для использования программами. Та­ ким образом, каждая ОС строится начиная с ядра и ис­ пользует собственный набор программ, определяющих каждую функцию системы.

Многие программы работают

на различных ядрах, однако

большинству из них требуются

специфические для ОС настройки.

Программисты создают бинарные

программные файлы, предназна­

ченные для конкретного процессора

В Linux используется ядро под названием Linux (сло­ во Linux относится только к ядру). Не имеющие отно­ шения к ядру программы обеспечивают другие функции, которые вы можете ассоциировать с Linux. Большинство из них доступны на дру­ гих платформах (см. раздел «Компоненты операционной системы» далее).

и ядра (для каждой ОС).

Студент Линус Торвальдс создал ядро Linux в 1991 году. С тех пор оно значи­ тельно изменилось. Сегодня эта операционная система работает на большом коли­ честве процессоров и другого оборудования. Самый простой способ изучить Linux — установить ее на настольном компьютере или ноутбуке, поэтому в издании основное внимание уделяется именно такому типу конфигурации. Однако ядро Linux работает на всех устройствах, начинал с крошечных сотовых телефонов и за­ канчивая мощными суперкомпьютерами.

26

Глава 1. Выбор операционной системы

К ом поненты о п е р а ц и о н н о й с и с те м ы

Ядро — основа любой операционной системы, однако большинство пользователей не могут воздействовать на него. Пользователи взаимодействуют с рядом про­ граммных компонентов, к которым относятся следующие.

□ Оболочки командной строки. Несколько лет назад пользователи работали за компьютерами исключительно путем ввода команд в программе, известной как оболочка, которая принимала эти команды. С помощью команд можно было переименовывать файлы, запускать программы и т. д. Хотя сегодня многие текстовые оболочки почти не используются, они по-прежнему важны для опыт­ ных и продвинутых пользователей Linux, поэтому мы более подробно опишем их в главе 6 (изучение последующих глав в значительной степени зависит от вашего умения работать в текстовой оболочке). Сегодня существует множество оболочек, и их доступность и популярность варьируются от одной операционной системы к другой. В Linux часто используется оболочка под названием Bourne Again Shell (bash или Bash).

□ Графические пользовательские интерфейсы. Графический пользовательский интерфейс (ГПИ, graphical user interface, GUI), по крайней мере с точки зрения начинающего пользователя, является усовершенствованием оболочки, работа­ ющей в текстовом режиме (так называемого текстового пользовательского интерфейса, ТП И ). Вместо ввода команд ГПИ опирается на значки, меню и указатель мыши. В Windows и macOS предусмотрен собственный ГПИ. В Linux поддерживается графический интерфвейс под названием X Window System или X. Интерфейс X является базовым ГПИ, поэтому Linux также ис­ пользует такие среды рабочего стола\ как GNOME или К Desktop Environment (KDE) для обеспечения более полноценной работы. Когда вы начнете работать с Linux, вероятно, именно различия между средой рабочего стола Linux и ГПИ Windows или macOS поразят вас больше всего.

□ Утилиты. Современные операционные системы включают широкий диапазон простых служебных программ, к которым относятся калькуляторы, кален­ дари, текстовые редакторы, инструменты для обслу­ живания диска и т. д. Эти программы варьируются в зависимости от ОС. Даже их имена и способы за­ пуска могут различаться в разных операционных 1

Вы можете найти Lin ux-эквиваленты

популярных программ для macOS

или Windows на сайтах

www.linuxrsp.ru/win-lin-soft/table-

епд или www.linuxalt.com.

1 Среда рабочего стола (также графическое окружение рабочего стола) — это разновид­ ность графических интерфейсов пользователя, основанная на метафоре рабочего стола. Источник: «Википедия».

Исследование пользовательских интерфейсов

27

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

Операционные системы м огут раз­

личаться не только работающими

в них программ ами, но и другими

дисковых файлов, а также техниче­

особенностями, например деталя­

м и учетных записей пользова­

телей, правилами именования

□ Библиотеки. Если вы не программист, вам вряд ли придется напрямую работать с библиотеками. Тем не менее мы включили их в этот список, поскольку они очень важны для программ. Библиотеки пред­ ставляют собой наборы функций программирова­ ния, которые могут использоваться различными программами. В Linux, например, большинство программ основываются на библиотеке ПЬс. Дру­ гие библиотеки предоставляют функции, связанные с графическим пользовательским интерфейсом, или помогают разобраться в параметрах, передаваемых в командной строке. Для Linux существует множе­ ство библиотек, обогащающих программный ландшафт этой операционной системы.

которое является частью опера­

скими особенностями запуска

ционной системы, иногда ядром

компьютера. Все зто контролиру­

программами.

или имеющ ими к нему отношение

ется программ ны м обеспечением,

□ Прикладные программы. На компьютере мы в основном работаем с такими прикладными программами, как браузеры, текстовые редакторы, графические редакторы и пр. Несмотря на то что такие программы часто технически отделе­ ны от операционных систем, иногда они ассоциируются с определенными ОС. Даже когда программа доступна во многих операционных системах, из-за раз­ личий графических интерфейсов и специфических функций особенности рабо­ ты с ней в каждой системе могут различаться.

Исследование пользовательских интерфейсов Ранее в книге мы уже упоминали о различиях работы в текстовом и графическом пользовательском интерфейсе. Хотя большинство пользователей предпочитают ГПИ из-за простоты использования, ОС Linux продолжает традицию применения ТПИ. В главе 6 более подробно описываются различные инструменты Linux, ра­ ботающие в текстовом режиме, а глава 4 посвящена основным принципам операций ГПИ Linux. Важно, чтобы вы уже немного разбирались в основных принципах работы как графических, так и текстовых пользовательских интерфейсов, посколь­ ку в последующих главах рассматриваются проблемы, связанные с пользователь­ ским интерфейсом.

28

Глава 1. Выбор операционной системы

Т екстовы й п о л ь зо в а те л ь ски й и н те р ф е й с

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

Fedora release 21 (Twenty One) Kernel 3.18.6-200.fc21.x86_64 on an x86_64 (ttyl)

essentials login:

Приведенный пример содержит следующую информацию:

□ название и версию операционной системы — Fedora Linux 21;

□ имя компьютера — essentials;

□ имя аппаратного устройства, которое используется для входа в систему, — ttyl;

□ само приглашение для входа в систему— login:.

Детали приглашения для входа различаются в разных системах. Для входа в систему вы должны ввести имя пользо­ вателя, затем система предложит ввести пароль. Если вы ввели правильные данные, компьютер, скорее всего, отобразит сообщение, за которым будет следовать при­ глашение оболочки:

Чтобы попробовать войти в систему

в текстовом режиме, сначала

вы должны установить Linux на

свой компьютер. Наша книга

[rich@essentials:~]$

В этой книге мы опустили в примерах команд боль­ шую часть приглашений, располагающихся в отдельных строках. Тем не менее мы оставили приглашение с сим­ волом доллара ($) для обычных пользовательских ко­ манд. Некоторые команды должны вводиться от имени root, который является суперпользователем Linux. Для таких команд мы заменяем приглашение символом ре­ шетки (#), поскольку большинство дистрибутивов Linux производит аналогичное изменение в приглашениях для суперпользователя.

не охватывает тему установки Linux.

Обратитесь к документации вашего

дистрибутива, чтобы подробнее

узнать об зтом процессе.

Если вы видите приглашение для

входа, предусмотренное графи­

ческим интерфейсом, то можете

вызвать приглашение текстового

режима, нажав сочетание клавиш

Ctrl+Alt+F1 или Ctrl+Alt+F2. Для

возврата к приглашению графиче­

ского интерфейса нажмите сочета­

ние клавиш AIH-F1 или AK+F7.

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

Исследование пользовательских интерфейсов

29

манды. К сожалению, при этом многие команды стано­ вятся менее понятными.

Некоторые команды не отображают никакой инфор­

мации, однако большинство выдает результат.

Например, команда Is выдает список файлов:

В главе 13 более подробно описыва­

ются учетные записи пользователей

Linux, в том числе суперпользова­

теля.

$ Is I06792c01.doc f 0 1 0 1 .t if

Этот пример показывает, что в текущ ем каталоге содерж атся два файла:

106792c01.doc и f 0 1 0 1 .t i f . Вы можете использовать дополнительные команды для работы с этими файлами, например ср (сору), чтобы скопировать их, или ип (rem ove), чтобы удалить. В главах 6, 7 описываются распространенные команды для работы с файлами.

Некоторые ТПИ-программы занимают весь экран, чтобы обеспечить постоянные обновления или гибкий способ взаимодействия с данными. На рис. 1.1 показан ТПИ-редактор пало, который более подробно описан в главе 10. В редакторе nano

вы можете использовать клавиши со стрелками для перемещения курсора, добав­ ления текста (путем его ввода) и т. д.

Д аж е если вы входите в систему в графическом режиме, вы можете исполь­

зовать оболочку в текстовом реж име внутри окна, известного под названием «терминал». Распространенны е ГПИ Linux обеспечивают возможность запуска терминала, который предоставляет командную строку и средства для запуска ТПИ-программ.

Р и с . 1 . 1 . Н е к о т о р ы е Т П И - п р о г р а м м ы з а н и м а ю т в е с ь э к р а н

Граф ический п о л ь зо в а те л ь ски й и н те р ф е й с

Большинству пользователей удобнее работать с ГПИ, чем с командами в текстовом режиме. Поэтому многие современные системы Linux по умолчанию запускаются в графическом режиме (экран для входа в систему аналогичен изображенному на

30

Глава 1. Выбор операционной системы

рис. 1.2). Чтобы войти в систему, вы можете выбрать свое имя пользователя из списка или ввести его, а затем указать пароль.

О *• 0

del3 АМ О

Mikhail R>ghtman

Госіевой сеанс

u b un tu ® 16.04

Рис. 1.2. Графические экраны для входа в систему Linux аналогичны экранам в Windows или macOS

Некоторые экраны для входа

в систему ГПИ Linux не запраши­

В отличие от Windows и macOS, Linux предоставляет несколько сред рабочего стола. Какую из них выбрать, зависит от используемой версии ОС, от параметров про­ граммного обеспечения, указанных вами на этапе уста­ новки, а также от ваших личных предпочтений. Чаще всего пользователи выбирают GNOME, KDE, Xfce и Unity. Многочисленные рабочие столы ГПИ обладают встроенными вспомогательными функциями. Показанный на рис. 1.2 значок с изо­ бражением человека в правом верхнем углу окна входа в систему Ubuntu позволя­ ет выбрать такие вспомогательные функции, как чтение с экрана или экранная клавиатура, помогающие ввести учетные данные.

вают парольдо тех пор, пока вы

не введете действительное имя

пользователя.

Среды рабочего стола Linux могут выглядеть совершенно по-разному, но все они обеспечивают идентичные функции. На рис. 1.3 изображен вид среды KDE по умолчанию с несколькими запущ енными программами в системе openSUSE 13.2.

Исследование пользовательских интерфейсов

31

Рис. 1.3. Рабочая среда Linux содержит элементы управления, привычные для большинства пользователей

В главе 4 более подробно описаны распространенные среды и их функциональность. Все они обеспечивают следующие функции.

□ Лаунчеры. Вы можете запускать программы, выбирая их из меню или списков. Как правило, вдоль верхней, нижней или боковой части экрана располагается одно или несколько меню. На рис. 1.3 изображен значок в виде хамелеона в ниж­ нем левом углу экрана, на котором вы можете щелкнуть, чтобы открыть соот­ ветствующее меню openSUSE.

□ Файловые менеджеры. Linux предусматривает файловые менеджеры ГПИ, аналогичные тем, которые используются в Windows и macOS. На рис. 1.3, в центре, вы можете увидеть открытое окно одного из них.

□ Элементы управления окном. Вы можете переместить окно, перетащив его

мышью за заголовок, изменить его размер и т. д.

□ Несколько рабочих столов. Большая часть сред Linux позволяет иметь не­ сколько активных виртуальных рабочих столов, каждый из которых имеет собственный набор программ. Благодаря этой функции можно не перегружать экран при одновременной работе с несколькими программами. Как правило, вы можете переключаться между виртуальными рабочими столами с помощью значка в одном из меню.

32

Глава 1. Выбор операционной системы

□ Возможности выхода из системы. Вы можете вый­ ти из своего сеанса Linux, чтобы выключить ком­ пьютер или позволить войти в систему другому пользователю.

По мере освоения Linux вы обнаружите, что среды ее ГПИ весьма гибкие. Если вам не нравится среда вашего дистрибутива по умолчанию, можете ее изменить. Не­ смотря на то что все среды обеспечивают сходные функ­ ции, у некоторых пользователей свои предпочтения относительно среды рабочего стола. Linux предоставля­ ет вам выбор в этом вопросе, что недоступно в Windows и macOS, поэтому не стесняйтесь опробовать различные варианты рабочего стола.

Место Linux среди операционных систем

Сравним Linux с тремя другими операционными систе­ мами или семействами ОС: Unix, macOS и Microsoft Windows.

Linux и U nix

Если вы попытаетесь нарисовать «семейное древо» ОС, то столкнетесь с труд­ ностями. Это связано с тем, что дизайнеры операционных систем часто имити­ руют функции друг друга, а иногда даже используют идеи друг друга в своих разработках. В результате между операционными системами может сформиро­ ваться запутанный клубок сходств и заимствований кода. Разобраться с этим может быть сложно. Однако в случае Linux и Unix можно сделать громкое заявле­ ние: Linux была разработана после Unix.

с открытым м кодны м кодом, но

с программным обеспечением

Вы можете не только работать

Unix была создана в 1969 году в лаборатории Bell Labs компании AT&T. История Unix включает множе­ ство ветвей (расщепление кода на два или более само­ стоятельных проекта) и даже совершенно отдельных вариантов кода. Современные системы Linux по боль­ шому счету являются продуктами проектов с открытым

и самостоятельно модифицировать

и распространять его. Глава 3 посвя­

щена философским и правовым во­

просам, касающимся программного

обеспечения соткрытым исходным

кодом.

Место Linux среди операционных систем

33

исходным кодом, которые клонируют программы Unix, или оригинальных про­ ектов с открытым исходным кодом для Unix в целом.

К таким проектам относятся следующие.

□ Ядро Linux. Линус Торвальдс создал ядро Linux в качестве любительского про­ екта в 1991 году, однако вскоре оно превратилось в нечто гораздо большее. Ядро Linux разрабатывалось совместимым с другими ядрами Unix (оно использова­ ло те же программные интерфейсы в исходном коде). Это облегчило применение программ с открытым исходным кодом для других версий операционной систе­ мы Unix с ядром Linux.

□ Проект GNU. Проект GNU’s Not Unix («GNU — это не UNIX», GNU) является попыткой Фонда сво­ бодного программного обеспечения (Ф СПО , Free Software Foundation, FSF) разработать замену с от­ крытым исходным кодом для всех основных эле­ ментов Unix. В 1991 году ФСПО выпустил самые важные инструменты, за исключением ядра. (В на­ стоящее время доступно ядро GNU HURD, однако оно не так популярно, как ядро Linux.)

СЫиявляется примером рекурсив­

ного акроним у— аббревиатуры,

расшифровка которой включает

в себя саму аббревиатуру. Зто при­

мер компьютерного юмора.

Альтернативы инструментов GNU включают в себя проприетарные коммерче­ ские инструменты и инструменты с открытым исходным кодом, разработанные для версий Unix BSD (Berkeley Software Distribution)’. Инструменты, исполь­ зуемые в ОС типа Unix, могут повлиять на общее впечатление от системы, од­ нако все эти наборы инструментов достаточно похожи.

□ X org-X ll. Система X Window System является средой ГПИ для большинства операционных систем Unix. Большая часть дистрибутивов Linux сегодня ис­ пользует версию данной оконной системы Xorg-Xl 1. Как и в случае с основны­ ми ТПИ-инструментами, предусмотренными проектом GNU, выбор сервера X может повлиять на некоторые особенности ОС типа Unix, например на под­ держиваемые типы шрифтов.

□ Среды рабочего стола. GNOME, KDE, Unity, Xfce и другие популярные среды рабочего стола с открытым исходным кодом в основном вытеснили коммерче­ ские среды рабочего стола, даже в коммерческих версиях U піх. Поэтому в этом

BSD — система распространения программного обеспечения в исходных кодах, создан­ ная для обмена опытом между учебными заведениями. Особенностью пакетов ПО BSD была специальная лицензия BSD, которую кратко можно охарактеризовать так: весь исходный код — собственность BSD, все правки — собственность их авторов. Источник: «Википедия».

34

Глава 1. Выбор операционной системы

отношении вы не заметите большой разницы между операционными системами Linux и Unix.

□ Серверные программы. Unix и Linux — популяр­ ные серверные ОС: организации используют их для обслуживания веб-серверов, почтовых серверов, файловых серверов и т. д. Linux работает с теми же популярными серверными программами, что и ком­ мерческие версии Unix и дистрибутивы BSD с от­ крытым исходным кодом.

macOS (описана далее) является

коммерческой ОС на базе Unix; она

отказалась от системы X и среды

рабочего стола, которая на ней

работает, в пользу собственного

графического интерфейса компании

Apple.

□ Прикладные пользовательские программы. В данной области, как и в случае серверных программ, Linux использует то же программное обеспечение, что и другие операционные системы типа Unix. В некоторых случаях Linux задей­ ствует несколько программ, причем более эффективно. Главным образом это связано с популярностью Linux и огромным массивом аппаратных драйверов, предлагаемых этой ОС. Например, если программе требуется расширенная поддержка видеокарты, то более вероятно найти эту поддержку в Linux, чем в менее популярных ОС типа Unix.

В целом Linux можно рассматривать как члена семейства операционных систем типа Unix. Хотя технически Linux не является Unix, они достаточно по­ хожи между собой (их различия кажутся незначительными по сравнению с раз­ личиями между этим семейством и другими ОС, например W indows). Из-за своей популярности Linux обеспечивает лучшую ап­ паратную поддержку, по крайней мере в случае мас­ сового ПК-оборудования. Тем не менее в некоторых версиях Unix предусмотрены специфические ф унк­ ции, отсутствующие в Linux. Например, система Z etta­ byte File System (ZFS), которая доступна в дистри­ бутивах Solaris, FreeBSD и других ОС, предлагает расширенные возможности файловой системы, кото­ рые еще не в полной мере реализованы в Linux.

Надстройка ZFS для Linux доступна,

все большую популярность среди

различных дистрибутивов Linux.

ет многие функции ZF5 и завоевывает

но не полностью интегрирована в опе­

рационную систему. Файловая система

Linux под названием Btrfs предоставля­

Linux и m acOS

macOS является коммерческой операционной системой на базе Unix, которая многое позаимствовала из дистрибутивов BSD и отказалась от обычного ГПИ Unix (а именно — от системы X) в пользу собственного пользовательского ин­ терфейса. Это сделало macOS одновременно и похожей на Linux, и отличающей­ ся от нее.

Место Linux среди операционных систем

35

ТИПЫ КОДА——————————————————————————————————–

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

Понятие «открытый исходный код» говорит о доступности кода. В коммерческих про­ граммах и операционных системах код, как правило, скрытот общественности. С другой стороны, программист, имеющий доступ к исходному коду программного обеспечения, может исправлять ошибки, добавлять новые функции, в общем — менять принцип ра­ боты программы.

Вы можете открыть окно программы Terminal и ввести многие из описанных в этой книге команд для решения задач, аналогичных тем, что мы рассматриваем в книге. При отсутствии команды, описанной в этой книге, вы можете ее устано­ вить. ОС macOS поставляется вместе с некоторыми популярными серверными программами Unix, так что вы можете сконфигурировать ее, чтобы она работала так же, как Linux или другая операционная система ти п аи п іх ,в качестве сетево­ го компьютера.

Тем не менее macOS отличается от Linux пользова­ тельским интерфейсом. Пользовательский интерфейс macOS известен под названием Cocoa (с точки зрения программирования) или Aqua (с точки зрения пользова­ теля). Он содержит элементы, которые являются почти аналогичными элементам системы X и среды рабочего стола в Linux. Поскольку интерфейс Cocoa несовместим с системой X с точки зрения программирования, при­ ложения, разработанные для macOS, не запускаются непосредственно на Linux (или на других операционных системах типа Unix), а их портирование (изменение ис­ ходного кода и перекомпилирование) для Linux стано­ вится нетривиальной задачей. Поэтому родные для macOS приложения редко переходят на Linux.

X в «Х-сервер» — это буква X,

а X в названии 05 X — это римская

цифра 10, обозначающая десятую

версию операционной системы

компании Apple. В 2016 году

было объявлено, что OS X будет

переименована в macOS, чтобы

соответствовать общей стилистике

именования других платформ Apple:

tvOS, watchOS и iOS. macOS Sierra бу­

дет первой версией, использующей

новое название.

macOS включает в себя реализацию системы X, которая работает под интерфей­ сом Aqua. Это делает перенос ГПИ-программ среды Linux и Unix на macOS относи­ тельно простой задачей. Тем не менее полученные в результате программы не полно­ стью соответствуют пользовательскому интерфейсу Aqua. Они могут иметь кнопки,

36

Глава 1. Выбор операционной системы

меню и другие функции, которые выглядят неуместно по сравнению с обычными эквивалентными элементами macOS.

Компания Apple делает macOS доступной для своих компьютеров. Условия ее лицензии запрещают установку этой системы на аппаратные средства, разработан­ ные другими производителями, и сама установка macOS на оборудование, не про­ изведенное компанией Apple, — сложная задача. Версия macOS, известная как iOS, работает на устройствах iPad и iPhone от Apple и не портируется на другие устрой­ ства. Таким образом, система macOS в значительной степени ограничивается обо­ рудованием Apple. Linux, напротив, работает на самых разнообразных аппаратных средствах, включая большинство персональных компьютеров. Linux можно уста­ новить даже на компьютеры Мае.

Linux и W ind ow s

В настоящее время значительная часть настольных компьютеров и ноутбуков ра­ ботает под управлением Microsoft Windows. Если вы планируете работать с Linux, то более актуальным для вас, скорее всего, является ее сравнение с Windows. В целом Linux и Windows имеют схожие возможности. Тем не менее в деталях они значительно различаются.

□ Лицензирование. Linux является ОС с открытым исходным кодом, a Windows — коммерческой ОС. В главе 2 более подробно рассмотрены вопросы, касающиеся открытого исходного кода, однако сейчас вы должны понять, что программное обе­ спечение с открытым исходным кодом дает вам больший контроль над вашим компьютером по сравнению с коммерческим программным обеспечением, по край­ ней мере в теории. На практике вам, возможно, потребуется значительный опыт для того, чтобы воспользоваться преимуществами открытого исходного кода. Коммер­ ческое программное обеспечение может оказаться более предпочтительным, если вы работаете в организации, которой удобнее использовать платное ПО. (Кстати, некоторые версии Linux тоже продаются — вместе с контрактом на обслуживание.)

□ Стоимость. Многие версии Linux доступны бесплатно, поэтому они привлека­ тельны для тех, кто стремится сократить расходы. С другой стороны, установка и обслуживание Linux, вероятно, потребует больше опыта, чем установка и об­ служивание Windows. Многочисленные исследования, касающиеся стоимости использования Linux и Windows, показали различные результаты, но большая их часть, как правило, говорит в пользу Linux.

□ Совместимость аппаратных средств. Большая часть аппаратных компонентов требует поддержки ОС, как правило, в виде драйверов. Большинство произво­ дителей аппаратного обеспечения предоставляют драйверы для Windows для

Место Linux среди операционных систем

37

своих устройств или сотрудничают с компанией Microsoft, чтобы гарантировать включение в Windows соответствующих драйверов. Несмотря на то что неко­ торые производители также предоставляют драйверы для Linux, по большей части необходимые драйверы должны обеспечиваться сообществом Linux в целом. Это означает, что драйверы для Linux могут появиться спустя несколь­ ко недель или даже месяцев после выхода соответствующего устройства. С дру­ гой стороны, разработчики Linux, как правило, поддерживают драйверы для старого оборудования гораздо дольше по сравнению с продолжительностью поддержки другими производителями своего старого оборудования. Таким об­ разом, на старом оборудовании современная Linux может работать лучше, чем последняя версия Windows. Кроме того, Linux, как правило, потребляет меньше ресурсов, поэтому использование Linux на старом оборудовании может обе­ спечить вам большую продуктивность.

□ Доступность программного обеспечения. Некоторые популярные настольные приложения, такие как Microsoft Office, доступны в Windows, но не в Linux. Не­ смотря на свою доступность, альтернативные пакеты для Linux, такие к а к Apache OpenOffice.org или LibreOffice, не нашли широкого отклика среди пользователей. В других сферах наблюдается обратная ситуация. Популярные серверные про­ граммы, такие к а к веб-сервер Apache, сначала разрабатывались для Linux или U піх. Несмотря на то что многие такие серверы доступны для Windows, более эффек­ тивно они работают в Linux. Если вы рассматриваете конкретную программу для работы, стоит исследовать ее доступность и практичность использования на каж­ дой платформе, среди которых вы выбираете.

□ Пользовательские интерфейсы. Как и в macOS, в Windows используется собственный уникальный пользовательский интерфейс. Из-за этого портиро- вание программ с одной ОС на другую — задача не из легких. (Есть инструменты, помогающие преодо­ леть эту проблему; в настоящее время доступны ре­ ализации системы X Window System для Windows, а также инструменты для запуска программ Windows в Linux.) Одни пользователи предпочитают пользо­ вательский интерфейс Windows любой среде рабо­ чего стола Linux, однако другим нравится использо­ вать среду рабочего стола Linux.

Компания Microsoft внесла

серьезные изменения в свой поль­

зовательский интерфейс начиная

с версии Windows 8. Обновленный

пользовательский интерфейс, кото­

рый называется Metro, аналогично

работает на всех устройствах (на­

чиная со смартфонов и заканчивая

настольными компьютерами).

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

38

Глава 1. Выбор операционной системы

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

□ Безопасность. Поклонники каждой ОС утверждают, что она более безопасна по сравнению с другими системами. Это можно объяснить тем, что они сосре­ дотачиваются на разных вопросах безопасности. Большую угрозу для Windows представляют вирусы, их мишенью в основном является ее огромная пользова­ тельская база. Однако для Linux вирусы не представляют проблемы. В этой системе безопасности угрожают взломы, связанные с неправильно сконфигу­ рированными серверами или ненадежными локальными пользователями.

На протяжении более двух десятилетий Windows занимала лидирующие позиции на рынке программного обеспечения. Большинство пользователей дома и в офисах работают с Windows и с таким популярным ее приложением, как Microsoft Office. Несмотря на то что Linux может использоваться на тех же компьютерах, по различ­ ным причинам она менее популярна (ее новизна для пользователей; тот факт, что Windows является предустановленной системой на большинстве ПК; отсутствие каких-либо привлекательных для большинства пользователей приложений, выпу­ щенных только в Windows-версиях).

С другой стороны, Unix вообще и Linux в частности стали доминировать на рынке серверов. Под управлением Linux работают веб-серверы, почтовые серверы, файловые серверы, из которых состоит Интернет и на которые опираются многие поставщики местных сетевых услуг. Таким образом, большинство людей исполь­ зуют Linux ежедневно, просто не знают об этом.

В большинстве случаев приемлемым будет использование на компьютере либо Linux, либо Windows. Однако иногда возникают специфические потребности, диктующие выбор той или иной ОС. Возможно, вам потребуется запустить редкую программу или ваше оборудование может оказаться слишком старым для совре­ менных версий Windows или слишком новым для Linux. В других случаях выбор может быть продиктован вашим знакомством или знакомством ваших пользова­ телей с той или иной операционной системой.

Дистрибутивы До сих пор мы описывали Linux как одну ОС, однако на самом деле это не так. Существует множество различных дистрибутивов Linux, каждый из которых состоит из ядра Linux, набораутилит и конфигурационных файлов. Результатом является полноценная ОС. Два дистрибутива Linux могут отличаться друг от

Дистрибутивы

39

друга так же, как каждый из них отличается от macOS или Windows. Поэтому далее мы подробно опишем состав дистрибутивов, расскажем, какие из них более популярны, а также упомянем способы, с помощью которых разработчи­ ки, занимающиеся их сопровождением, поддерживают актуальность своих предложений.

С озд ание п о л н о ц е н н о й ОС на базе Linux

Мы уже описали некоторые компоненты Linux, однако кое-какие детали требуют повторного рассмотрения.

□ Ядро Linux. Ядро лежит в основе любой Linux. Оно постоянно развивается. Скорее всего, два разных дистрибутива будут использовать различные ядра. Разработчики, занимающиеся сопровождением дистрибутива, также предлага­ ют патчи для ядра, то есть они вносят небольшие изменения, чтобы исправить ошибки или добавить новые функции.

□ Основные инструменты Unix. Такие инструменты, как набор GNU, X Window System и утилиты, используемые для управления дисками, имеют решающее значение для нормального функционирования системы Linux. Большинство дистрибутивов Linux включают в себя более или менее идентичный набор по­ добных инструментов, но, как и в случае с ядром, они могут варьироваться в зависимости от версии и патчей.

□ Дополнительное программное обеспечение. Дополнительное ПО, например основные серверные программы, среды рабочего стола и прикладные програм­ мы, поставляется вместе с большинством дистрибутивов Linux. Как и в случае с базовым программным обеспечением Unix, большинство дистрибутивов Linux предусматривают аналогичные варианты программ. Тем не менее иногда дис­ трибутивы отличаются собственным «брендингом», что отражается, в частности, на графическом аспекте среды рабочего стола.

□ Сценарии запуска. «Индивидуальность» дистрибутива связана в том числе с тем, как он управляет процессом запуска. Linux использует сценарии и ути­ литы для запуска десятков программ, которые связывают компьютер с сетью, предоставляют приглашение для входа в систему и т. д. Сценарии и утилиты варьируются в зависимости от дистрибутива (это означает, что они имеют раз­ личные свойства и могут быть по-разному сконфигурированы).

□ Программа установки (инсталлятор). Чтобы программное обеспечение можно было использовать, его необходимо установить; большая часть дистрибутивов Linux обеспечивает уникальные программы установки. Таким образом, два дис­ трибутива могут устанавливаться по-разному, предоставляя вам различные

40

Глава 1. Выбор операционной системы

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

Инструмент UNetbootin

Обычно дистрибутивы Linux доступны для загрузки с соответствующих сайтов. Как правило, вы можете за­ грузить образ диска для CD-R или DVD, который затем можно будет записать на оптический диск. При откры­ тии диска запустится инсталлятор — и вы сможете уста­ новить ОС. Иногда есть возможность загрузить образ диска, который можно скопировать на flash-накопитель (если в компьютере отсутствует оптический привод). Кроме того, существуют также облачные версии многих дистрибутивов Linux, которые позволяют загрузить полноценную систему Linux для запуска либо на частной виртуальной машине, либо на коммерческом облачном сервисе вроде Amazon или Google.

накопитель с USB-интерфейсом.

установочного диска на flash-

ляет скопировать файлы с образа

(unetbootin.sourceforge.net) позво­

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

Р а сп р о стр а н е н н ы е д и с т р и б у т и в ы Linux

Существует около десятка основных дистрибутивов Linux для настольных ком­ пьютеров, ноутбуков и небольших серверных компьютеров, а также сотни других для решения конкретных задач. В табл. 1.1 приведены характеристики наиболее распространенных дистрибутивов.

Таблица 1.1. Особенности распространенных дистрибутивов Linux

Д и с т р и ­ бути в

Д о с т у п ­ ность

Ф о р м а т пакета

Ц икл вы п уска

Т р еб у ем ы й ур ов ен ь п од готов к и адм и н и стр атор а

Arch

Бесплатный

расшап

Плавающий (роллинг-релиз)

Эксперт

CentOS

Бесплатный RPM

Примерно два года

Средний уровень

Debian

Бесплатный Debian

Два года

Fedora

Бесплатный RPM

Примерно шесть месяцев

От среднего уровня до эксперта

Средний уровень

Дистрибутивы

41

Д и ст р и ­ бутив

Д о с т у п ­ н ость

Ф о р м а т пак ета

Ц и кл вы п уска

Т р еб у ем ы й у р о в ен ь п од готов к и ад м и н и стр ат ор а

Gentoo

Бесплатный

ebuiid

Плавающий

Эксперт

Mint

Бесплатный Debian

Шесть месяцев

От новичка до пользователя среднего уровня

openSUSE Бесплатный RPM

Восемь месяцев

Средний уровень

Red Hat Enterprise

Платный

RPM

Примерно два года

Средний уровень

Scientific

Бесплатный RPM

Примерно шесть месяцев

От среднего уровня до эксперта

Slackware

Бесплатный

tarballs

Нерегулярный

Эксперт

SUSE Enterprise

Платный

RPM

2 -3 года

Средний уровень

Ubuntu

Бесплатный Debian

Шесть месяцев

От новичка до пользователя среднего уровня

Эти особенности требуют пояснений.

□ Доступность. Большинство дистрибутивов Linux имеют открытый исходный код, то есть являются бесплатным ПО. Тем не менее некоторые включают запатенто­ ванные компоненты и предназначены только для продажи, как правило, с контрак­ том на обслуживание. Дистрибутивы Red Hat Enterprise Linux (RHEL) и SUSE Enterprise Linux — наиболее яркие примеры ПО такого типа. Оба дистрибутива имеют бесплатные родственные версии: CentOS является практически клоном RHEL (в ней отсутствуют запатентованные компоненты), a Fedora — версией с открытым исходным кодом, выступающей в качестве тестовой площадки для технологий, которые в конечном счете могут быть включены в дистрибутив RHEL. Бесплатной альтернативой для SUSE Enterprise является версия openSUSE.

□ Формат пакета. Большинство дистрибутивов Linux распространяют программ­ ное обеспечение пакетами, которые представляют собой множество объединен­ ных в набор файлов. Пакет программного обеспечения поддерживает локальную базу данных установленных файлов, что облегчает процесс обновления и удале­ ния. Менеджер пакетов RPM Package Manager (RPM ) является самым популяр­ ным в мире Linux, однако распространены также пакеты Debian. Другие системы упаковки работают хорошо, но они относятся к конкретным дистрибутивам.

Необычность Slackware заключается в том, что данный дистрибутив использу­ ет для своих пакетов тарболы (tarball). Это архивные файлы, созданные с по­ мощью стандартной утилиты tar, которая, помимо всего прочего, применяется

42

Глава 1. Выбор операционной системы

Тарболы похожи на архивы zip,

для создания резервных копий и распространения исходного кода. Тарболы, используемые дистрибути­ вом Slackware для своих пакетов, содержат спе­ цифическую для Slackware информацию, помогаю­ щую управлять пакетами. Необычность дистрибутива Gentoo заключается в том, что его система упаковки основана на компиляции большинства программ из исходного кода. Это отнимает много времени, но позволяет опытным админи­ страторам настроить параметры компиляции в целях оптимизации пакетов для своего собственного оборудования и программных сред.

которые широко распространены

в Windows. В главе 8 описывается

процесс создания и использования

тарболов.

□ Цикл выпуска. Циклы выпуска более подробно описаны далее в разделе «Циклы выпуска». Как правило, дистрибутивы с коротким циклом выпуска предостав­ ляют самую последнюю версию программного обеспечения, а как дистрибути­ вы с более длительным циклом выпуска стремятся обеспечить наиболее ста­ бильную среду. Некоторые пытаются сделать и то и другое. Например, Ubuntu выпускает версии с длительным периодом поддержки (LTS) в апреле каждого четного года. Другие релизы данного дистрибутива направлены на обеспечение последней версии программного обеспечения.

Пусть вас не пугает то, что

большинство дистрибутивов

□ Требуемый уровень подготовки администратора. В последнем столбце табл. 1.1 указана наша личная оценка уровня подготовки, необходимого для адми­ нистрирования дистрибутива. Как видите, мы указа­ ли, что для использования большинства дистрибу­ тивов Linux нужен средний уровень подготовки. Тем не менее некоторые дистрибутивы предусматривают менее дружественные пользователю административ­ ные инструменты с графическим интерфейсом и поэтому требуют более высо­ кого уровня подготовки. Дистрибутив Ubuntu особенно прост в использовании и управлении.

основными функциями таких дис­

уровнем подготовки. Цель данной

трибутивов.

книги — помочь вам в управлении

требуют администратора со средним

Большинство дистрибутивов Linux доступны по крайней мере для двух плат­ форм, то есть типов процессоров: х 86 (также известней как IА32,1386 и несколько вариаций) и х86-64 (известен как AMD64, ЕМ64Т и х64). Примерно до 2007 года компьютеры х86 были самыми распространенными, однако теперь стандартом стали компьютеры х86-64. Если вы используете компьютер х86-64, то вы можете запустить на нем дистрибутив х86 или х86-64, хотя скорость работы последнего несколько больше. Доступны и более экзотические платформы, такие как ARM (для планшетов), PowerPC, Alpha и SPARC. Эти платформы в основном предна­ значены для серверов и специализированных устройств (описанных ниже).

Дистрибутивы

43

В дополнение к популярным дистрибутивам для ПК также доступны версии, предназначенные для специализированных целей. Одни из них работают на обыч­ ных персональных компьютерах, а другие — на специализированном оборудовании.

□ Android. В настоящее время многие сотовые теле­ фоны используют операционную систему на базе Linux, также известную как Android. Ее пользователь­ ский интерфейс похож на интерфейс других смарт­ фонов, однако в основе лежит ядро Linux и значитель­ ная часть той же инфраструктуры Linux, которую можно найти на персональном компьютере. Тем не менее такие телефоны не используют систему X или типичные настольные приложения, вместо этого они задействуют специализированные приложения для мобильных телефонов.

Система Android лучше всего из­

вестна в качестве операционной

системы для мобильного телефона,

однако она может использоваться

и на других устройствах. Например,

некоторые планшеты и программы

для чтения электронных книг рабо­

тают по Д уп равнением Android.

□ Сетевые устройства. Многие широкополосные маршрутизаторы, серверы печа­ ти и другие устройства, которые подключаются к локальной сети для выполнения специализированных задач, используют Linux. Иногда при необходимости до­ бавить новые функции в устройство вы можете заменить стандартную операци­ онную систему кастомизированной. Tomato (www.polarctoud.comAomato) и OpenWrt (openwrt.org) — примеры специализированных дистрибутивов Linux. Тем не менее не стоит устанавливать данное программное обеспечение по наитию. Если это будет сделано неверно или система будет установлена на неправильном устройстве, устройство может оказаться бесполезным.

□ ТіѴо. Этот популярный цифровой видеомагнитофон (DVR) использует ядро Linux и большое количество стандартных поддерживающих программ наряду с патентованными драйверами и программным обеспечением DVR (многие пользователи этого не знают).

□ P arted Magic. Этот инструмент (partedmagic.com) является дистрибутивом Linux для персональных компьютеров, предназначен для проведения опера­ ций аварийного восстановления. Он запускается с CD-R, и вы можете использовать его для получения доступа к жесткому диску Linux или Windows, если основная установка не загрузится.

Мы рекомендуем загрузить Parted

Magic или другой подобный инстру­

мент, который можно использовать

при возникновении проблем

с основной установкой Linux.

Android, сетевые устройства на базе Linux и видеомагнитофон ТіѴо — это при­ меры встраиваемых систем, использующих Linux. Такие устройства практически не требуют от пользователей административной работы (по крайней мере не в том

44

Глава 1. Выбор операционной системы

смысле, как эта работа описывается в данной книге). Названные устройства преду­ сматривают фиксированные базовые конфигурации и управляемые инструменты настройки, которые помогают неопытным пользователям установить такие важные базовые параметры, как сетевые настройки и часовые пояса.

Ц иклы вы п уска

В табл. 1.1 указаны циклы выпуска распространенных дистрибутивов Linux. При­ веденные в таблице цифры означают период времени между релизами. Например, новые версии дистрибутива Ubuntu выходят каждые шесть месяцев. График вы­ пуска большинства других дистрибутивов имеет «пространство для маневра». Сдвиг даты выпуска на один месяц считается приемлемым.

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

У двух дистрибутивов из табл. 1.1 (Arch и Gentoo) плавающий цикл выпуска (роллинг-релиз). Такие дистрибутивы не имеют номеров версий — обновления происходят непрерывно. При использовании такого дистрибутива необходимости в полном обновлении не возникает, что избавляет от всех сопряженных с этим процессом неприятностей. Тем не менее время от времени вам придется обновлять какую-либо из конкретных подсистем, например среду рабочего стола.

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

Дистрибутивы

45

ОСНОВЫ И НЕ ТОЛЬКО

L in u x — м о щ н а я ОС, ко тор ую м о ж н о и с п о л ьзо в а ть на всех устр о й ства х, н а чин ая со смартф она

и з а ка н ч и в а я су п е р ко м п ь ю те р о м . О сновой Linux явл яется ее ядро, ко тор о е уп р а вл яе т аппа р а т­

н ы м и ср е д ства м и ко м п ь ю те р а . На о сн ове ядра п о стр о е ны р а зн о о б р а зн ы е утил иты (м н о ги е из

пр оекта GNU) и по л ь зо в а те л ь с ки е п р и л о ж е н и я . Linux является кл о н о м U nix, с ко тор о й она им е е т

м н о ж е ств о общ их п р о гр а м м . macOS — это ещ е одна U nix, хо тя и с у н и ка л ь н ы м п о л ь зо ва те л ь ­

с ки м интерф ейсом . Н есм отря на то что у W in d o w s м н о го о б щ е го с Unix, она пр е д ста вл яе т собой

со ве р ш е н н о и н ую о п е р а ц и о н н у ю систем у, по э то м у п р о гр а м м н а я с о в м е с т и м о с т ь м е ж д у L inux

и W in d o w s о гр а н и ч е н н а .

Существует м но ж е ств о вариаций Linux, так на зы ва е м ы х д истр иб утиво в, к а ж д ы й из которы х им еет

свои особенности. Благодаря т а ко м у разн оо б р а зи ю вы м о ж е т е вы брать версию Linux, которая наи­

л у ч ш и м о б ра зо м соответствует ва ш им потреб ностям (с уч е т о м простоты испо л ьзо ва ния, цикл а

вы пуска, а т а кж е д р уги х ун и ка л ь н ы х особенностей).

Упражнения

Составьте сп и со к п р о гр а м м , с ко тор ы м и вы о б ы ч но работаете, начиная с ка л ькул ято р а и за­

канчивая крупным офисным пакетом. П оищ ите их эквива л е нты на p e cy p c a xw w w .lin u x rs p .ru /

w in iin -s o ft/ta b le -e n g или w w w .lin u x a lt.c o m . Есть л и ка ка я -н и б у д ь пр о гр а м м а , д л я ко тор о й вы

не м о ж ете найти аналог? Если есть, поп робуйте п о иска ть в Интернете.

Узнайте под р о бн е е о д в у х ил и трех д и с тр и б ути в а х Linux, пр о см о тр ев по свя щ е н н ы е им веб­

страницы . К акой д и стр и б ути в вы вы брал и бы д ля об сл уж ива н ия гл а вно го веб-сервера? К акой

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

р е д акто р и эл е ктр о н н ую почту?

Контрольные вопросы

  1. Что и з пер е числ е нн о го н е я в л я е тся ф ункц ие й ядра Linux?

A. В ы деление па м яти д ля испо л ьзо в а ния п р о гр а м м а м и .

Б. В ы деление в р е м е н и процессора д ля испо л ьзо ва ния пр о гр а м м а м и .

B. С оздание м е н ю в п р о гр а м м а х ГПИ.

Г.

К онтроль д оступа к ж е с т ко м у диску.

Д . П редоставление п р о гр а м м а м в о зм о ж н о с ти испо л ьзо ва ть сеть.

  1. Что и з пер е числ е нн о го является п р и м е р о м встр о е нно й Linux?

A. A ndroid.

Б. SUSE.

B. CentOS.

46

Глава 1. Выбор операционной системы

ОСНОВЫ И НЕ ТОЛЬКО

Г. Debian.

Д. Fedora.

  1. Что из перечисл енного является з н а ч и м ы м разл ичие м м е ж д у Linux и macOS?

A.

Linux по зволяет зап ускать распространенны е п р о гр а м м ы GNU, в то врем я к а к macOS не по­

звол яет этого делать.

Б.

ГПИ Linux основан на о ко н н о й системе X W in d o w S ystem , а ГПИ macOS — нет.

B.

Linux не м о ж е т работать на оборуд овании A pple M acintosh, в то вр е м я ка к macOS м о ж е т

ф ункц ио н ир ова ть тол ько на оборуд овании A pple.

Г.

Linux в зна чите л ьно й степени опирается на п р о гр а м м н о е обеспечение BSD, в то вр е м я ка к

macOS не использует пр о гр а м м н о е обеспечение BSD.

Д .

Linux по д д е р ж и вае т ко м а нд ы текстового р е ж и м а , в то врем я к а к macOS предусм атривает

тол ько граф ический интерфейс.

  1. Истина или л о ж ь: ядро Linux является пр о и зв о д н ы м от ядра BSD.

  2. Истина или л о ж ь: если вы войдете в систему L in u x в граф ическом р е ж и м е , то не см ож ете ис­

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

  1. И стина или л о ж ь: CentOS является д и с тр и б ути во м Linux с д л и те л ь н ы м ц и кл о м вы пуска.

  2. П риглаш ение на вхо д в систем у Linux в текстово м р е ж и м е :_______________ (о д но слово).

  3. Основная проблема безопасности д ля W indow s, которая неактуальна д л я L in u x :_______________ .

  4. П редварительны е версии п р о гр а м м н о го о б еспечения, ко тор ы е с б о л ьш о й степенью вероят­

ности содерж ат о ш и б ки , на зы в а ю тся_______________ и _________________

  1. Д и стр и б ути вы Linux, ко тор ы е не и м е ю т но м е р а версии, но п р е д усм атр ива ю т не пр е р ы вн ы е

обновления, ха р а кте р и зу ю тс я _______________ ц и кл о м вы пуска.

Глава 2 Лицензирование программного обеспечения

Программное обеспечение является видом интеллектуальной собственности, ко­ торая защищена законом об авторском праве, а в отдельных странах — патентным законом. Как правило, копирование программного обеспечения незаконно, если вы не являетесь его автором. Однако программное обеспечение с открытым ис­ ходным кодом (open source) регулируется лицензиями (это документы, изменя­ ющие условия выпуска ПО). Лицензии, используемые производителями программ­ ного обеспечения с открытым исходным кодом, предоставляют пользователям этого ПО дополнительные права.

В целом программное обеспечение с открытым исходным кодом многим обя­ зано следующим трем организациям: Фонду свободного программного обеспе­ чения (Ф СП О ), организации «Инициатива открытого исходного кода» (Open Source Initiatve (O SI)) и корпорации Creative Commons. Каждая организация придерживается своей философии и играет свою роль в мире ПО с открытым исходным кодом. Крометого, существуют специфические лицензии open source, которые кратко описаны в конце этой главы наряду со способами их использо­ вания.

□ Исследование лицензий на программное обеспечение.

□ Фонд свободного программного обеспечения.

□ Инициатива открытого исходного кода.

□ Корпорация Creative Commons.

□ Лицензии на ПО с открытым исходным кодом.

Глава 2. Лицензирование программного обеспечения

Исследование лицензий на программное обеспечение

Закон об авторском праве распространяется в том числе на програмное обеспече­ ние. Лицензии, которые разработчики применяют к своему программному обе­ спечению, учитывают закон об авторском праве и определяют, какие права у вас есть (или каких прав нет) в плане использования, изменения и распростране­ ния ПО. Следовательно, вы должны знать основные требования закона об автор­ ском праве, а также понимать различия между проприетарным ПО и ПО с откры­ тым исходным кодом.

З а щ и та а в то р с к и х п рав и п р о гр а м м н о е о б е сп е ч е н и е

Авторское право — это юридически признанное право на создание копии чего-ли­ бо. В большинстве стран если вы напишете книгу, сделаете фотографии или соз­ дадите компьютерную программу, то вы (и только вы) будете иметь право делать копии этой книги, фотографий или компьютерной программы. В то же время вы можете предоставить право делать копии или даже передать контроль над авторским правом кому-то другому.

Закон об авторском праве в каждой стране имеет свои особенности, однако большинство государств подписали Бернскую конвенцию — международное со­ глашение, которое требует, чтобы страны признавали авторские права друг друга. То есть если Джейкоб напишет книгу (оперу или компьютерную программу) в Со­ единенных Штатах, его работа будет защищена авторским правом не только в Со­ единенных Штатах, но и в Исландии, Кении, Великобритании и других странах, которые ратифицировали эту конвенцию.

Поскольку большинство законов об авторском праве были приняты задолго до появления компьютеров, часто они не отражают потребности данной индустрии. Например, закон об авторском праве запрещает копирование произведения, одна­ ко без создания копий компьютерная программа бесполезна. К примерам копий, которые необходимы для запуска программы или желательны для обеспечения безопасности, относятся следующие:

□ копия программы с установочного носителя на жесткий диск или твердотельный

накопитель;

□ копия программы с жесткого диска или твердотельного накопителя в ОЗУ

компьютера;

Исследование лицензий на программное обеспечение

49

□ копия с ОЗУ в файл подкачки;

□ копия с ОЗУ в различные кэши материнской платы или центрального процессора для повышения про­ изводительности;

□ одна или несколько резервных копий на жестком диске или твердотельном накопителе для защиты от сбоев дисков.

В прошлом такие копии, как правило, игнорирова­

Файл подкачки — это пространство

на диске, являющееся дополнением

к оперативной памяти. Например,

если оперативная память исчер­

пывается, операционная система

начинает использовать в качестве

ОЗУ файл подкачки.

лись в соответствии с принципом добросовестного использования, то есть исклю­ чения, которое позволяет скопировать фрагмент материала, защищенного автор­ ским правом. К другим примерам добросовестного использования относятся цитаты, упоминаемые в обзорах или новостных репортажах, и материалы, приво­ димые в исследованиях или в процессе обучения. В настоящее время закон об ав­ торском праве признает необходимость копирования программного обеспечения для обеспечения возможности его использования, по крайней мере в Соединенных Штатах.

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

Несмотря на то что программное обеспечение является объектом авторского пра­ ва, большая часть ПО выпускается с лицензией, представляющей собой юридиче­ ский документ, который претендует на изменение прав, предоставленных законом. В большинстве случаев вы не подписываете такую лицензию, хотя иногда вам необходимо нажать соответствующую кнопку, чтобы принять условия лицензи­ онного соглашения. В прошлом лицензии иногда печатались на коробках, в кото­ рых распространялось программное обеспечение. Такие лицензии часто называ­ ются лицензионными соглашениями конечного пользователя (end-user license agreements, EULA) или оберточными лицензиями (click­ through, shrink-wrap, clickwrap). Программное обеспе­ чение с открытым исходным кодом обычно поставля­ ется с лицензией, находящейся в файле, который часто носит имя COPYING.

силу оберточных лицензий и по­

хожих соглашений.

Суды часто поддерживали исковую

ПАТЕНТЫ, ТОВАРНЫЕ ЗНАКИ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ________________

Авторское право — один из примеров интеллектуальной собственности, однако существу­ ет много других, например патент. Авторское право защищает одну творческую работу,

50

Глава 2. Лицензирование программного обеспечения

которая может считаться выражением идеи, в то время как патент защищает саму идею. Патенты, как правило, распространяются на изобретения вроде пресловутой более эффек­ тивной мышеловки.

В Соединенных Штатах на программное обеспечение можно получить патент. Несмотря на то что вы не можете запатентовать всю программу, есть возможность запатентовать алгоритмы, которые в ней используются. Такие патенты весьма распространены и одно­ временно противоречивы. Некоторые программы с открытым исходным кодом не при­ меняют определенный формат файлов, поскольку алгоритмы, необходимые для их ис­ пользования, защищены патентом, а патентообладатели пригрозили неавторизованным пользователям судом. Критики патентов на программное обеспечение утверждают, что большинство таких патентов являются тривиальными или очевидными, а запатентован­ ные изобретения такими быть не должны. Иногда одни компании используют патенты на программное обеспечение, чтобы помешать другой компании продавать продукт или чтобы потребовать плату с компании, которая его продает.

Во многих других странах программные алгоритмы не могут быть запатентованы. Пред­ принимаются попытки изменить это в тех странах, где право на ПО не обеспечивается патентом, также предпринимаются обратные попытки ограничить или отменить патен­ ты на ПО в тех странах, где в настоящее время ПО может быть запатентовано.

Товарные знаки — еще один тип интеллектуальной собственности. К ним относятся названия, логотипы и аналогичные идентифицирующие признаки конкретной компа­ нии или продукта. Программное обеспечение и компании, которые его производят, часто используют товарные знаки, как и поставщики оборудования. В 1994 году чело­ век, не отличавшийся значительным участием в сообществе Linux, зарегистрировал товарный знак Linux и попытался взимать за него лицензионные платежи. После су­ дебного процесса торговый знак был передан институту Linux Mark Institute (LMI) (www.linuxfoundation.org/programs/legal/trademark).

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

Лицензии на программное обеспечение могут изменить условия соблюдения авторских прав. Например, универсальная общественная лицензия (General Public License, GPL), условия которой распространяются на ядро Linux, предоставляет право распространять программное обеспечение, включая исходный код и двоич­ ные файлы. Это пример ослабления ограничений, предусмотренных законом об авторском праве.

Как правило, лицензии на проприетарное программное обеспечение ограничи­ вают ваши права, в то время как лицензии на ПО с открытым исходным кодом

Фонд свободного программного обеспечения

51

предоставляют вам дополнительные права. Тем не менее из этого правила могут быть исключения. Например, лицензия на использование системы (site license) — это документ на использование проприетарной программы, которая дает организации право на создание определенного количества копий программы, скажем 100 копий текстового процессора для всех компьютеров компании.

Фонд свободного программного обеспечения Фонд свободного программного обеспечения (Ф С П О ) обладает влиянием в области ПО с открытым исход­ ным кодом. Основанный в 1985 году Ричардом Столл- маном ФСПО — движущая сила проекта GNU’s Not Unix (GNU), который описан в предыдущей главе. ФСПО исповедует определенную философию, речь о которой пойдет в следующем разделе. Эта филосо­ фия отражена в лицензии GPL, которую поддержива­ ет этот фонд.

Ф и л о со ф и я ф онда

Свободное ПО (fiee software), как его

понимают в ФСПО, отличается от бес­

платного ПО (freeware). Этот термин

обычно указывает на то, что за

использование программного обес­

печения не нужно платить, однако

не всегда подразумевается, что оно

является свободным в значении

«свобода слова».

ФСПО выступает в защиту свободного программного обеспечения, что говорит о свободе действий в отношении программного обеспечения, а не о его стоимости. Часто для подчеркивания этого различия используется фраза Free as in speech, not free as in beer (свободное, как в случае свободы слова, а не относящееся к стоимости, как в случае с бесплатным пивом).

ФСПО определяет четыре конкретные свободы в отношении программного

обеспечения:

□ свобода использовать программное обеспечение для любых целей;

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

□ свобода распространять программное обеспечение;

□ свобода распространять свое модифицированное программное обеспечение.

Эти свободы аналогичны принципам, отстаиваемым организацией OSI, о кото­ рой речь пойдет чуть дальше. Тем не менее существуют важные различия в интер­ претации (также описаны далее). Детальное описание каждого принципа ФСПО можно найти на странице www.gnu.org/philosophy/free-sw.html.

52

Глава 2. Лицензирование программного обеспечения

В идеальном по меркам ФСПО мире все программное обеспечение было бы свободным, то есть распространялось бы с исходным кодом в соответствии с толь­ ко что описанными свободами. Некоторые отдельные дистрибутивы Linux от­ вечают этому идеалу, в то время как другие включают в себя проприетарное программное обеспечение. Иногда это программное обеспечение является бес­ платным. В других случаях небольшой объем проприетарного кода позволяет поставщику ограничить его распространение и продавать его за деньги. Посколь­ ку свободное программное обеспечение не обязательно бесплатное, его продажа не является проблемой с точки зрения ФСПО. Однако, учитывая другие свободы, стоимость свободного программного обеспечения стремится к нулю по мере его распространения.

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

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

С во б о д н о е п р о гр а м м н о е о б е с п е ч е н и е и л и ц е н зи я GPL

В юридических терминах принципы ФСПО сформули­ рованы в лицензии GPL (иногда называется GNU GPL). Распространены две версии лицензии GPL: версия 2 и версия 3. (Старая версия 1 используется редко.) Обе версии лицензии GPL применяют четыре свободы, предусмотренные философией ФСПО, к лицензионно­ му ПО. Кроме того, они подчеркивают, что производные работы также должны выпускаться под лицензией GPL. Эта оговорка не позволя­ ет компаниям полностью присвоить программу с открытым исходным кодом. На-

не имеет приоритета над другими.

использовать различные индивиду­

Дистрибутив Linux представляетсо-

бой набор программ, которые могут

альные лицензии. Ни одна лицензия

Фонд свободного программного обеспечения

53

пример, многие компании создают дистрибутивы Linux, а некоторые из них ис­ пользуют ядра Linux с исправляющими ошибки патчами. Эти ядра, как и главное ядро Linux, доступны под лицензией GPL. Ни одна компания не может на законных основаниях выпустить дистрибутив на базе исправленного ядра Linux, а затем от­ казаться предоставить патчи для этого ядра.

Лицензия GPL версии 2 (или GPLv2) была выпущена в 1991 году и господство­ вала на протяжении многих лет. В 2007 году появилась версия GPLv3, целью ко­ торой было закрыть лазейки в условиях GPLv2, особенно в отношении изменений в законодательстве и практике, введенных в период с 1991 года. Если говорить конкретно, то версия лицензии GPLv3 содержит положения, предназначенные для борьбы с техническими ограничениями, противоречащими четырем свободам ФСПО, а также для решения вопросов, связанных с патентами на ПО. Многие новые программы в настоящее время выпускаются в соответствии с условиями лицензии GPLv3, и многие старые программы теперь используют версию GPLv3, а не GPLv2. Тем не менее некоторые программы остались без изменений. Ценность представляет само ядро Linux, которое до сих пор использует лицензию GPLv2. Важность заключается в том, что ядро Linux по-прежнему может использоваться в качестве основы для устройств, которые в противном случае были бы достаточно закрытыми, например видеомагнитофонов ТіѴо и телефонов на базе Android. Многие такие устройства используют ограничительные процессы загрузки для предотвращения запуска несанкционированного ядра (эти процессы были запре­ щены в версии лицензии GPLv3).

Акроним LGPL до 1999 года рас ши ф-

Вариантом лицензии GPL является Lesser GPL ( LGPL, ^

г

,

ровывался как Library GPL.

стандартная общественная лицензия ограниченного при- менения). Часто разработчики применяют лицензию LGPL с библиотеками, представляющими собой наборы фрагментов кода, которые могут использоваться другими программами. Например, в Linux библиотеки применяют функции для создания диалоговых окон и меню. Многие программы графического пользовательского интерфейса реализуют эти функции, и их включение в библиотеки не только помогает программистам, но и уменьшает размер использующих их программ. Тем не менее формулировка усло­ вий лицензии GPL требует того, чтобы все программы, которые используют библио­ теку с лицензией GPL, также выпускались в соответствии с условиями данной ли­ цензии. Это требование мотивировало создание лицензии LGPL, которая похожа на GPL, но допускает, чтобы программы, использующие библиотеку с GPL, выпускались под другой лицензией, даже коммерческой.

Еще одной родственной лицензией является GNU Free Documentation License (FDL, лицензия свободной документации GNU, применяемая к документам, а не к программам). Она составлялась для программного обеспечения и не вполне

54

Глава 2. Лицензирование программного обеспечения

применима к статическим документам, поэтому Ф СПО создал GNU FDL, чтобы исправить это упущение. Известный пользователь лицензии FDL — ресурс «Ви­ кипедия» (www.wikipedia.org). Все его содержимое доступно в соответствии с ус­ ловиями лицензии GNU FDL.

Инициатива открытого исходного кода Брюс Перенс и Эрик С. Реймонд основали организацию «Инициатива открытого исходного кода» (Open Source Initiatve, OSI) в 1998 году в качестве зонтичной организации для всей сферы программного обеспечения с открытым исходным кодом. Ее философия, более подробно описанная далее, созвучна с философией ФСПО, однако отличается некоторыми важными деталями. Как правило, под определение ПО с открытым исходным кодом попадает больше программного обе­ спечения, чем под определение бесплатного ПО (как это понимается в ФСПО), однако что именно попадает в ту или иную категорию, зависит от определения открытого исходного кодаи от утвержденных организацией OSI условий лицензий.

Ф и л о со ф и я ПО с о ткр ы ты м и с х о д н ы м ко д о м

В 1980-х и 1990-х годах движение за свободное ПО набрало силу в определенных кругах, в том числе среди ученых и пользователей. Тем не менее компании не спе­ шили воспринимать идею свободного программного обеспечения. Многие из тех, кто все же воспринял ее, пошли на это неохотно или даже против своей воли — системные администраторы, которым приходилось выполнять свои обязанности, осваивая крохотные бюджеты, устанавливали Linux, Apache, Samba и другое сво­ бодно распространяемое программное обеспечение, чтобы не покупать дорогие коммерческие аналоги.

Пропагандистские усилия Ф СПО были (и остаются) основаны на сильном моральном императиве, что «программное обеспечение должно быть свободным». При этом слово «свободное» понимается ФСПО так, как описано выше. Некоторых людей такой подход устраивает, однако компании, которые стремятся зарабатывать на продаже ПО, находят этот лозунг в лучшем случае странным, а в худшем — угро­ жающим. Поэтому целью основателей организации OSI стало продвижение идеи свободного программного обеспечения. Используя новый термин «открытый исходный код» и смягчив некоторые требования ФСПО, организация OSI стремит­ ся продвинуть идею ПО с открытым исходным кодом в деловом мире. Отличие в формулировках ФСПО и OSI можно заметить в миссии этой организации на сайте www.opensource.org.

Инициатива открытого исходного кода

55

ОТКРЫТЫЙ ИСХОДНЫЙ КОД —————————————————————————-

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

Самое значительное различие философии ФСПО и OSI заключается в требо­ ваниях лицензии GPL, согласно которой любое производное ПО также должно распространяться в соответствии с условиями лицензии GPL. Организация OSI удостоверила множество лицензий на ПО с открытым исходным кодом, включая GPL. Тем не менее часть лицензий не имеют подобных ограничений. В прошлом программное обеспечение, распространяемое в соответствии с условиями таких лицензий, считалось продуктом с закрытым исходным кодом. Организация OSI не возражает против этого при условии, что лицензия на данное ПО это допуска­ ет. С другой стороны, Ф СПО в своей лицензии GPL явно запретил подобное присвоение.

Как правило, свободное ПО, как оно понимается в ФСПО, представляет собой ПО с открытым исходным кодом, хотя некоторые лицензии, которые ФСПО при­ знает как свободные, не были одобрены организацией OSI. Тем не менее многие лицензии на ПО с открытым исходным кодом не могут считаться свободными по определению ФСПО (рис. 2.1).

Свободное программное обеспечение

Рис. 2 .1 . Большая часть свободного ПО относится к категории ПО с открытым исходным кодом, однако существенная часть ПО с открытым исходным кодом не является свободной

56

Глава 2. Лицензирование программного обеспечения

Сегодня существует напряженность между пуристами от свободного программ­ ного обеспечения в понимании ФСПО и представителями более прагматичного сообщества разработчиков ПО с открытым исходным кодом. Однако по большей части и те и другие преследуют одинаковые цели, а различия между ними незна­ чительны. На самом деле понятия free and open source software (FOSS) и free/libre open source software (FLOSS) (свободное и открытое программное обеспечение) иногда используются в качестве общего термина для явного указания на оба типа программного обеспечения и методов разработки.

О п р е д е л е н и е п р о гр а м м н о го о б е сп е ч е н и я с о ткр ы ты м и схо д н ы м ко д о м

Определение термина «программное обеспечение с откры­ тым исходным кодом» можно найти на сайте www.open- source.org/definition. Оно соответствует десяти принципам.

□ Свободное распространение. Лицензия должна раз­ решать распространение, в том числе в качестве части более крупной работы.

Десять принципов организации

0SI были основаны на положениях,

сформулированных разработчика­

ми Debian GNU/Linux.

□ Доступность исходного кода. Автор должен сделать исходный код доступным и разрешить распространение исходного кода и (если это применимо) двоич­ ного кода.

□ Разрешение на создание производных работ. Л и­ цензия должна разрешать другим разработчикам модифицировать программное обеспечение и рас­ пространять модификации под той же лицензией, что и оригинал.

Обратите внимание на то, что опре­

деление ПО с открытым исходным

кодом разрешает, но не требует

того, чтобы распространение ПО

проводилось в соответствии с усло­

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

виями оригинальной лицензии.

□ Никакой дискриминации в отношении лиц или группы лиц. Лицензия не долж­ на допускать дискриминацию в отношении любого лица или группы лиц.

□ Никакой дискриминации в отношении сфер деятельности. Лицензия не долж­ на запрещать использование программы в какой-либо области, например в биз­ несе или при проведении генетических исследований.

Корпорация Creative Commons

57

□ Автоматическое распространение лицензий. Лицензия должна применяться

к любому, кто получает программу, не требуя отдельного соглашения.

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

□ Отсутствие ограничений относительно другого программного обеспечения. Лицензия не должна налагать ограничения на другое ПО, которое распростра­ няется вместе с лицензированным ПО.

□ Технологическая нейтральность. Лицензия не должна быть ограничена кон­

кретными технологиями или интерфейсами.

Первые три принципа являются наиболее важными, по крайней мере для по­ нимания философии создания ПО с открытым исходным кодом. В целом эти принципы сходны с четырьмя принципами ФСПО и их расширенным описанием на веб-странице этой организации (www.gnu.org/philosophy/free-sw.html). Тем не менее, как уже говорилось, существуют некоторые различия, особенно в части требований к лицензированию производных работ.

Корпорация Creative Commons Корпорация Creative Commons (creativecommons.org) была основана Лоуренсом Лессигом. Ее цель — борьба с явлением, которую ее создатели и сторонники на­ зывают творческой культурой, все больше зависящей от разрешения (или его отсутствия) тех, кто обладает авторскими правами на более ранние работы. Значительная часть существующей культуры основана на созданных ранее про­ изведениях. Например, серия фильмов «Звездные войны» вдохновлена мифами и легендами. Тем не менее сами серии «Звездных войн» защищены авторским правом, что ограничивает права нынешних художников на распространение производных работ, по крайней мере без разрешения правообладателей.

Корпорация Creative Commons реализует свой замысел, предоставляя шесть лицензий, предназначенных для различных целей. Вы можете выбрать лицензию, ответив на несколько вопросов на сайте creativecommons.org/choose/, например, хотите ли вы разрешить коммерческое использование своей работы.

Организации ФСПО и OSI занимаются продвижением идеи свободного программ­ ного обеспечения. Однако спектр задач корпорации Creative Commons более ш ирокий. Ее лицензии распространяются на аудиозаписи, видеозаписи, текстовые произведения и т. д., а не только на компьютерные программы. Тем не менее корпорация Creative Commons помогает расширить перечень свобод, которыетакже касаются ФСПО и OSI.

58

Глава 2. Лицензирование программного обеспечения

Лицензии на программное обеспечение с открытым исходным кодом Как индивидуальному пользователю вам, вероятно, нет необходимости слишком глубоко вникать в подробности лицензий на ПО с открытым исходным кодом. Положения, лежащие в основе руководящих принципов организации OSI, гаран­ тируют вам право на использование и даже распространение программ с открытым исходным кодом по своему усмотрению. Тем не менее, если вы развиваете бизнес, особенно компанию, создающую или распространяющую ПО с открытым исходным кодом, вам нужно разобраться в этой теме. Поэтому некоторые лицензии мы опи­ сываем более подробно, а также приводим способы использования компаниями лицензий на ПО с открытым исходным кодом в своих бизнес-моделях.

О п и са н и е л и ц е н зи й

Каждая лицензия на ПО с открытым исходным кодом обладает уникальными ха­ рактеристиками. В основном они представляют интерес для разработчиков, жела­ ющих внести свой вклад в тот или иной проект, однако в некоторых случаях пред­ ставляют важность и для системного администратора. К основным лицензиям на ПО с открытым исходным кодом относятся следующие.

□ Лицензии GNU GPL и LGPL. Как отмечалось ранее, ядро Linux использует лицензию GPLv2, многие другие инструменты Linux применяют лицензию GPL (версии 2 или версии 3). Библиотеки Linux используют лицензию LGPL.

□ Лицензия BSD. Применяется к операционным си­ стемам семейства BSD с открытым исходным кодом, а также к различным разработанным для них про­ граммным компонентам. В отличие от GPL лицензия BSD допускает распространение модификаций в со­ ответствии с условиями других лицензий. Более поздние версии (с двумя и тремя пунктами) данной лицензии похожи на краткий вариант лицензии МІТ.

Распространены две лицензии BSD:

старая версия, включающая три

пункта (оригинальная), и новая,

состоящая из двух пунктов (моди­

фицированная).

□ Лицензия МІТ. Специалисты из Массачусетского технологического института (M assachusetts Institute of Technology, MIT) были инициаторами создания системы X Window System (сокращенно X), а лицензия МІТ (иногда называемая лицензией X I 1) продолжает применяться к Xorg-Xl 1 — реализации системы X, входящей в состав многочисленных дистрибутивов Linux. Лицензия МІТ необы­ чайно краткая.

Лицензии на программное обеспечение с открытым исходным кодом

59

□ Лицензия Apache. Лицензия Apache на ПО с откры­ тым исходным кодом допускает распространение ПО в соответствии с условиями этой или другой лицен­ зии. Если оригинальная работа сопровождается тек­ стовым файлом NOTICE, то его необходимо включать в любую производную работу. Это позволяет раз­ работчику оригинального ПО передать нужную информацию пользователям даже значительно модифицированных версий программы.

Apache возникла вместе с брау­

Как следует из названия, лицензия

зером Apache, однако она использу­

ется и многими другими проектами.

□ Художественная лицензия (Artistic). Изначально разрабатывалась для языка программирования Perl, но применялась к другим программам. Содержит мно­ жество положений и лазеек для соответствующих требований. Большая часть программ, к которым применяется художественная лицензия, поставляется с оговоркой, что эта лицензия не является обязательной и пользователь может следовать условиям другой лицензии (обычно GPL).

Требованиям организации OSI отвечают многие другие лицензии. Полный их список вы можете найти на сайте Open Source Initiative: www.opensource.org/ licenses/.

с открытым исходным кодом несов­

Некоторые лицензии на ПО

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

местимы друг с другом, то есть вы

объединить код и выпустить моди­

фицированную версию программы.

не можете на законных основаниях

В заключение описания лицензий на ПО следует рассмотреть вопрос о лицен­ зировании Linux в целом. При загрузке образа диска или покупке пакета Linux к полученному вами программному обеспечению применяется множество лицен­ зий — GPL, BSD, MIT ит. д. Большая часть этих лицензий предназначена для ПО с открытым исходным кодом, но не все. Многие дистрибутивы содержат несколь­ ко условно бесплатных пакетов или программ с «не-совсем-открытым» исходным кодом, например условно бесплатная ГПИ-программа XV. Розничные пакеты иногда включают в себя коммерческое программное обеспечение. Поэтому вам не

60

Глава 2. Лицензирование программного обеспечения

следует копировать диск розничного пакета Linux, если только вы не убедились в том, что копирование разрешено. Если распространитель свободно (как в случае с бесплатным пивом) предоставляет ссылки на скачивание, то копирование, веро­ ятно, разрешено.

Дистрибутивы Linux включают в себя программы установки, конфигурации и тому подобное. Обычно с точки зрения авторского права распространитель ПО может претендовать только на эти инструменты. Большинство разработчи­ ков, занимающихся сопровождением дистрибутивов, применяют к процедуре их установки и конфигурации условия GPL или какой-либо другой лицензии на ПО с открытым исходным кодом, но так бывает не всегда. Подобные детали могут превратить то, что представляется операционной системой с открытым исходным кодом, в программу, чей исходный код не является вполне открытым. Дистрибутив Debian поддерживает политику использования только ПО с от­ крытым исходным кодом в своем основном наборе пакетов, хотя и допускает включение свободно распространяемых, но неоткрытых программ в свои «не­ свободные» пакеты.

Поскольку полный дистрибутив Linux состоит из компонентов, к которым применяется множество лицензий, нет смысла говорить о едином авторском праве или лицензии, применяемой ко всей ОС. Вместо этого следует восприни­ мать дистрибутив Linux как совокупность продуктов, которые поставляются вместе с объединяющей их утилитой для установки. Однако к подавляющему большинству программ применяется какая-то одна лицензия на ПО с открытым исходным кодом.

Б и з н е с -м о д е л и на базе ПО с о ткр ы ты м и с х о д н ы м ко д о м

Некоторые дистрибутивы Linux, такие как Debian, поддерживаются добровольца­ ми или некоммерческими организациями. Другие, например Red Hat Enterprise Linux, сопровождаются компаниями, рассчитывающими получить прибыль. Как же компания может получить прибыль, если ее основной продукт бесплатно до­ ступен во Всемирной паутине? Для зарабатывания денег на ПО с открытым ис­ ходным кодом используется несколько подходов.

□ Сервисы и поддержка. Сам по себе продукт может быть программой с открытым исходным кодом и даже бесплатно распространяться, в то время как компания будет за плату предоставлять по телефону такие услуги, как обучение и техни­ ческая поддержка. Например, игра может представлять собой программу с от­ крытым исходным кодом, но требовать подписки на онлайн-сервисы для обес­ печения полного набора функций.

Лицензии на программное обеспечение с открытым исходным кодом

61

□ Двойное лицензирование. Компания может создать две версии продукта: одна версия будет программой с полностью открытым исходным кодом, а другая будет содержать функции, которые недоступны в версии с открытым исходным кодом. Версия с открытым исходным кодом похожа на пробники товаров, ко­ торые раздают в супермаркетах для привлечения клиентов.

□ Несколько продуктов. Продукт с открытым исходным кодом может пред­ ставлять собой только одно из предложений компании, а ее доход обеспе­ чивают другие продукты (например, программное обеспечение, руковод­ ства).

□ Драйверы с открытым исходным кодом. Произво­ дители аппаратного обеспечения могут выпускать драйверы или даже аппаратно-ориентированные при­ ложения в качестве программного обеспечения с от­ крытым исходным кодом для продвижения своей техники.

Когда производитель аппаратного

обеспечения выпускает драйвер

с открытым исходным кодом, этот

код предоставляет программную ин­

формацию об аппаратных средствах

данного поставщика. Поэтому не­

которые производители не желают

исходным кодом.

выпускать драйверы с открытым

□ Денежное вознаграждение за выполнение задачи (Bounty). Данная бизнес-модель относится к крауд- фандингу (народному финансированию). Пользова­ тели могут способствовать развитию проекта с откры­ тым исходным кодом, предложив плату за создание нового программного обеспечения или добавление функций в существующие программы. Такие сайты, как FOSS Factory (www.fossfactory.org) и Bountysource (www.bountysource.com), могут объединять пользователей, каждый из которых в отдельности не в со­ стоянии предложить достаточно денег для того, чтобы мотивировать разработ­ ку нужного кода. При использовании подобной бизнес-модели программисту, который первым завершит проект, передаются собранные на его развитие средства.

□ Пожертвования. Многие проекты с открытым исходным кодом принимают благотворительные взносы. Это не является коммерческой моделью финанси­ рования в привычном смысле, зато помогает финансировать деятельность таких организаций, как ФСПО.

Разумеется, помимо перечисленных коммерческих возможностей большое количество программ с открытым исходным кодом разрабатывается учеными, правительствами, некоммерческими организациями, любителями и т. д. Даже у компаний могут быть стимулы делиться внесенными изменениями в ПО, по­ скольку их придерживание означает больший объем работы — если изменение не возвращается к автору первоначальной программы, его придется применять к каж­ дому новому выпуску.

62

Глава 2. Лицензирование программного обеспечения

ОСНОВЫ И НЕ ТОЛЬКО

Л и ц е н зи р о в а н и е п р о гр а м м н о го о б еспе че ния р е д ко ин тересует т е х н и ч е с ки х спец иа л исто в. Тем

не м е н е е ус л о в и я л и ц е н з и й м о г у т п о в л и я т ь на д е я т е л ь н о с ть со о б щ е ства р а зр а б о тч и ко в ПО

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

К L in u x пр и м е н я е тся н е с ко л ько л и ц е н з и й на ПО с о тк р ы ты м исходи ы м ко д о м , ко тор ы е д о пуска ю т

(а и н о гд а и тре б ую т) св о б о д н о го р а сп р о стр а н е н и я и з м е н е н и й . Такие л и ц е н з и и , к а к п р а вил о ,

п р е д ус м а тр и ва ю т н е м н о го о гр а н и ч е н и й (а то и во о б щ е их не п р е д усм а тр и ва ю т) относительно

сп о со б о в ис п о л ьзо ва н и я п р о гр а м м н о го о б еспе че ния. З ти м о н и отличаю тся о т п р о пр и е та р н ы х л и ­

ц е н зи й , ко тор ы е часто со д е р ж а т н е м а л о о гр а н и ч е н и й . Такие о р га н и з а ц и и , к а к ФСПО, 0SI и Creative

C om m ons, п р о д в и га ю т л и ц е н зи и на ПО с о тк р ы ты м и с хо д н ы м ко д о м . В ча стно сти, о р га н и за ц и я

0SI п р и зы в а е т п р е д п р и я ти я и с по л ьзо ва ть л иц е нзии на ПО с о тк р ы ты м и с хо д н ы м к о д о м и п р о п а ­

га нд ир ует б и зн е с-м о д е л и , пр е д по л а га ю щ и е п р и м е н е н и е по д о б н о го п р о гр а м м н о го о б еспечения

д ля по л уче ни я пр иб ы л и .

Упражнения

Н айдите л иц е нзии GPLv2, GPLv3 и BSD, вкл ю ч а ю щ у ю два пу н кта . (Все л и ц е н зи и м о ж н о найти,

на прим ер, на сайте w w w .o p e n so u rce .o rg /lice n se s/). П рочитайте и х и сравните. К а кую из ни х вы

бы вы брали, если бы реш или написать п р о гр а м м у с о ткр ы ты м исхо д ны м кодом ?

П рочитайте м иссию о р га н и за ц и и OSI на сайте w w w .o p e n so u rc e .o rg /a b o u t, а т а к ж е раздел, по­

свя щ е нн ы й о сн овн о й работе ФСПО на сайте w w w .fs f.o rg /a b o u t/.

Контрольные вопросы

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

обеспечение бы ло сертиф ицировано к а к ПО с о ткр ы ты м исхо д ны м кодом ?

A. Л и ц е н зи я не д о л ж н а д о пуска ть д и с кр и м и н а ц и ю в о тн о ш е ни и л ю б ого лица ил и гр упп ы лиц.

Б. Л и ц е н зи я не д о л ж н а требовать, чтобы п р о гр а м м а распространялась к а к ч а с т ь ко н кр е т н о го

прод укта.

B. Л и ц е н зи я д о л ж н а требовать, чтобы и зм е н е н и я распространял ись под той ж е л иц ензией.

Г.

П р о гр а м м а д о л ж н а поставляться с и схо д ны м ко д о м , или а втор д о л ж е н сделать его л егко

д о ступ н ы м через И нтернет.

Д Л и ц е н зи я д о л ж н а а вто м а тически п р и м е н я ть ся к лю бом у, кто приобретает п р о гр а м м н о е

обеспечение.

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

А. К н и м пр им еняю тся условия л и ц е нзии GPL или BSD в зави си м о сти от д истриб утива.

Б. И ногда их ко пи р о в а н и е запрещ ено и з-за того , что они со д е р ж а т п р о гр а м м н о е обеспечение

с за кр ы ты м исход ны м ко д о м .

Лицензии на программное обеспечение с открытым исходным кодом

63

В. Они м о гу т бы ть с коп ир о в ан ы т ол ько после удаления п р о гр а м м н о го обеспечения, к ко тор о ­

м у пр им енена л иц е нзия МІТ.

Г.

Все о н и п о л но сть ю со о тве тствую т п р и н ц и п а м д в и ж е н и я в п о д д е р ж к у сво б о д н о го про­

гр а м м н о го обеспечения.

Д. Все они подпадаю т п о д опред еление свободного п р о гр а м м н о го обеспечения, к а к оно п о ­

нимается в ФСПО.

  1. Что из перечисл енного является кл ю ч е в ы м п р и н ц и п о м философии ФСПО?

A. Р азработчики д о л ж н ы испо л ьзо ва ть последню ю версию л и ц е нзии ФСПО GPL.

Б. П ользователям н у ж н о р а зр е ш ить вносить и зм е не ния в свобод ное пр о гр а м м н о е обеспече­

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

B. Р азработчики д о л ж н ы создавать п р о гр а м м н о е обеспечение тол ько для свободны х опера­

ц ио нн ы х систем, та ки х к а к GNU/Linux.

Г. П ользователи д о л ж н ы уча ство ва ть в а кц и и гр а ж д а н ско го н е по вин о вен ия путем ко п и р о в а ­

ния пр о приетарного п р о гр а м м н о го обеспечения.

Д. П ользователи д о л ж н ы и м е ть право испо л ьзо ва ть п р о гр а м м н о е о б еспечение по своем у

усм отрению .

  1. И стина или л о ж ь : з а к о н об а в то р ско м праве р егул ирует распространение п р о гр а м м н о го обе­

спечения в б о л ьш и нстве стран.

  1. И стина или л о ж ь : определение своб од ного п р о гр а м м н о го обеспечения ФСПО и д е сять п р и н ц и ­

п о в ПО с о ткр ы ты м и схо д ны м ко д о м о р га н и за ц и и OSI требую т того, ч то б ы пользователи им е л и

в о зм о ж н о с ть и з у ч и т ь п р и н ц и п ы работы п р о гр а м м ы , то е сть ее исходны й код.

  1. И стина ил и л о ж ь: в с в я з и с тем что ко н с тр у кц и я а п п а р а тн ы х средств является и х соб ствен­

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

исхо д ны м ко д о м дл я своих п р о д укто в .

  1. Л и це н зия, созданная ФСПО и часто пр и м е н я е м а я к б иб л ио те ка м , на зы ва е тся________________.

  2. О рганизация, зан им а ю щ а яся п р о д в и ж е н и е м п р и н ц и п о в свободного ПО в та ки х областях, ка к

ви д е о - и аудиозаписи, на зы вается________________,

  1. Общ ие п р и н ц и п ы ФСПО кр а тко описы ваю тся т е р м и н о м ____________ относящ им ся к исполь­

зо ва н и ю з а ко н о в об а вто р ско м праве в целях, ко торы е в о пр ед еленном см ы сле пр о ти вор е ча т

п е р во на ч а л ьн о м у зам ы сл у ко н ц е п ц и и авто р ско го права.

  1. П ользователи м о гу т по б уд ить п р о гр а м м и сто в к работе на д пр о е кта м и с о ткр ы ты м исходны м

ко д о м , п р е д л о ж и в _______________ том у, кто п е р в ы м за ве р ш и т проект.

Глава 3 Принципы и философия Linux

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

Данная глава начинается с истории создания Linux и ее развития вплоть до настоящего времени. Далее описываются принципы ПО с открытым исходным кодом и их влияние на работу подобной ОС в реальном мире. В заключение рассматриваются роли Linux, которая может выступать в качестве встроен­ ной ОС, ОС для настольного компьютера или ноутбука, а также в качестве серверной ОС.

□ История Linux.

□ Программное обеспечение с открытым исходным кодом.

□ Роли операционной системы.

История Linux Linux была создана в 1991 году. И несмотря на то что по историческим меркам это считается недавним про­ шлым, в компьютерном мире 25 лет — целая вечность. Современный мир программного обеспечения унасле­ довал очень многое от ПО и культуры начала 1990-х го-

Современные компьютеры могут

классифицироваться так же, как

и в 1991 году, хотя кое-что из­

менилось. Заметным дополнением

являются встроенные компьютеры,

например в смартфонах.

История Linux

65

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

П р о и схо ж д е н и е Linux

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

В 1991 году большинство компьютеров работало под управлением дисковой операционной системы корпорации Microsoft (Disk Operating System, MS-DOS, PC-DOS или DOS). По сегодняшним меркам система DOS была крайне ограни­ ченной. Эта однозадачная ОС (способна обеспечить работу только одного прило­ жения в тот или иной момент времени) даже не могла в полной мере воспользо­ ваться доступной памятью или ресурсами процессора. Версии ОС Microsoft Windows, которые были доступны в 1991 году, работали поверх системы DOS. Несмотря на то что начальные версии Windows помогали обойти некоторые из ограничений DOS, они не решали полностью ни одну проблему. Например, в ран­ них версиях Windows использовалась кооперативная многозадачность — програм­ мы могли добровольно выделять ресурсы процессора для выполнения других процессов. Ядро DOS не могло забрать контроль у программы, потребляющей время процессора.

Unix была не единственной много­

Unix была распространенной ОС в 1991 году. По срав­ нению с DOS и версией Windows того времени Unix представляла собой довольно сложную систему. Unix поддерживала несколько учетных записей и обеспечи­ вала истинную вытесняющую многозадачность, при которой ядро может управлять выделенными для про­ грамм ресурсами процессора, даже если программы добровольно не возвращают контроль. Эти особенности являлись практическими потребностями для многих серверов и многопользова­ тельских компьютеров, таких как мини-ЭВМ и мейнфреймы.

ОС в 1991 году. Была доступна

отношение к истории Linux.

система виртуальной памяти Virtual

пользовательской и многозадачной

Memory System (VMS). Тем не менее

Unix имеет самое непосредственное

Со временем возможности каждого класса компьютеров возросли. По большин­ ству показателей современные персональные компьютеры имеют такую же мощность,

66

Глава 3. Принципы и философия Linux

какую имели мини-ЭВМ или даже мейнфреймыв 1991 го­ ду. Операционные системы, которые использовались на ПК в 1991 году, не очень хорошо масштабировались до более мощных аппаратных средств. Тем не менее сама по себе большая вычислительная мощность не снимала ограничений, свойственных системе DOS. По этой причине DOS и ее современники, предназна­ ченные для компьютеров меньшего размера, были заменены системой Unix и другими альтернативами.

являются производными от DOS,

вплане дизайна с системой VMS.

Современные версии Windows не

ядро, которое имеет много общего

Вместо этого они используют новое

В 1991 году Линус Торвальдс изучал информатику в Хельсинкском университе­ те. Его интересовали Unix и возможности только что купленного им нового компью­ тера на базе процессора х86. Торвальдс начал разрабатывать программу, которой предстояло превратиться в ядро Linux, как эмулятор программы-терминала низкого уровня для подключения к более крупным компьютерам университета. По мере раз­ вития своей программы он добавлял в нее новые функции, которые превратили его программу-терминал в то, что больше походит на ядро ОС. В конце концов, он по­ ставил перед собой цель создать ядро, совместимое с Unix, то есть ядро, которое позволяло выполнять широкий спектр доступных на тот момент программ Unix.

История Unix началась двумя десятилетиями ранее — в 1969 году в компании AT&T. Поскольку в то время AT&T была телефонным монополистом в Соединенных Штатах, она не имела права продавать программное обеспечение. Таким образом, создав Unix, сотрудники AT&T фактически подарили ее. Университеты с энтузиаз­ мом восприняли Unix, а некоторые даже начали модифицировать систему, посколь­ ку компания AT&T сделала исходный код доступным. Таким образом, в истории Unix был 20-летний период развития открытого программного обеспечения. Боль­ шинство программ Unix распространялось в виде исходного кода, поскольку Unix работала на самых разнообразных аппаратных платформах — двоичные программы, созданные для одной машины, редко могли работать на другой машине.

Уже на раннем этапе Linux начала использовать по­ тенциал имеющегося программного обеспечения. Как отмечалось в главе 1, разработчики ранних версий Linux были особенно заинтересованы в программном обеспе­ чении проекта GNU, поэтому эта операционная система быстро обзавелась коллекцией соответствующих ути­ лит. Большая часть этих программ создавалась с учетом рабочих станций и более мощных компьютеров, и ввиду продолжавшегося совершенствования компьютерного оборудования они хорошо работали на ПК х86 начала 1990-х годов.

В начале 1990-х годов ОС 386BSD

представляла собой конкуриру­

ющую Unix-подобную операци­

онную систему. Сегодня она раз­

делена на несколько родственных

операционных систем: FreeBSD,

NetBSD, OpenBSD, DragonFly BSD

и PC-BSD.

История Linux

67

Linux быстро обрела преданных разработчиков, которые оценили ее потенциал в плане приспособления ПО класса рабочих станций к ПК. Эти люди трудились над улучшением ядра Linux для внесения необходимых изменений в существующие программы Unix, чтобы они работали на Linux, а также для создания программ поддержки специально для Linux. К середине 1990-х годов существовало уже не­ сколько дистрибутивов Linux, в том числе те, которые используются сегодня. (Н а­ пример, дистрибутив Slackware был выпущен в 1993 году, a Red Hat — в 1995-м).

СПОР ВОКРУГ МИКРОЯДРА —————————————————————————————— Linux является примером монолитного ядра, то есть ядра, делающего все, что от него требуется, в рамках одного большого процесса. В 1991 году в моду вошел конкуриру­ ющий дизайн ядра, известный как микроядро. Микроядра намного меньше монолитных. Они перекладывают максимально возможное количество задач на неядерные процессы, а затем управляют коммуникацией между этими процессами.

Вскоре после выхода Linux Линус Торвальдс участвовал в публичных дебатах с Эндрю Таненбаумом, создателем ОС Міпіх, которую Торвальдс взял в качестве платформы на ранней стадии разработки Linux. В системе Міпіх использовался дизайн микроядра, а монолитный дизайн Linux Таненбаум считал устаревшим.

С практической точки зрения конечному пользователю подходит любой вариант дизай­ на. В Linux и производных от BSD ядрах применяется монолитный дизайн, в то время как современные версии Windows, GNU HURD и Міпіх являются примерами микро­ ядер. Тем не менее некоторые пользователи по-прежнему готовы до хрипоты спорить по поводу этого различия.

М ир Linux се го д н я

К середине 1990-х годов были созданы наиболее важные функции сегодняшней версии Linux. Среди изменений, произошедших с тех пор, можно отметить сле­ дующие.

□ Улучшения ядра. С 1991 годаядро Linux претерпело значительные изменения, в него были добавлены многие функции, которые мы используем сегодня. К улучшениям относится добавление сетевых функций, бесчисленного коли­ чества драйверов устройств, поддержки функций управления питанием, а так­ же поддержки многих процессоров, отличных от х86.

□ Улучшение средств поддержки. Кроме ядра Linux, улучшения коснулись про­ грамм поддержки, на которые оно опирается, — компиляторов, командных оболочек, ГПИ и т. д.

68

Глава 3. Принципы и философия Linux

□ Создание новых инструментов поддержки. Новые инструменты поддержки появлялись на протяжении многих лет. Они варьируются от простых небольших утилит до больших сред рабочего стола. На самом деле некоторые из этих ин­ струментов, например современные среды рабочего стола, являются гораздо более очевидными для конечного пользователя, чем само ядро.

□ Создание новых дистрибутивов. Как уже отмечалось, дистрибутив Slackware был создан в 1993 году, a Red Hat (предшественник дистрибутивов Red Hat Enterprise Linux, CentOS и Fedora) был выпущен в 1995-м. Другие дистрибути­ вы появились в последующие годы, некоторые из них имели важное значение. Например, система Android, используемая в смартфонах и планшетах, полу­ чила распространение в течение последнего десятилетия.

Linux во многом остается ПО с открытым исходным кодом, созданным в 1980-х и 1990-х годах. Несмотря на то что типичный пользователь настольной или встро­ енной ОС, скорее всего, воспринимает эту операционную систему через призму ГПИ, большая часть того, что происходит «под поверхностью», обусловлена ядром Linux и инструментами с открытым исходным кодом, многие из которых существу­ ют на протяжении десятилетий.

Программное обеспечение с открытым исходным кодом Философские принципы, лежащие в основе разработки большей части программ­ ного обеспечения для Linux, отличаются от тех, что лежат в основе разработки программного обеспечения для Windows. Эти различия влияют на то, как вы при­ обретаете программное обеспечение, что вы можете с ним делать и как оно изме­ няется с течением времени. Все эти принципы описаны в текущем разделе. Кроме того, в нем функции Linux представлены в качестве элемента, интегрирующего программное обеспечение из многих источников в единое целое.

О сн овн ы е п р и н ц и п ы

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

Программное обеспечение с открытым исходным кодом

69

□ Коммерческое ПО. Частные лица или компании разрабатывают программное обеспечение с целью получения прибыли от его продажи. Как правило, разра­ ботчики держат исходный код для коммерческого ПО в тайне. Это означает, что пользователи обычно не могут вносить изменения в это программное обеспече­ ние за исключением допустимого изменения конфигурационных настроек. В прошлом коммерческое программное обеспечение продавалось в магазинах или по почте, сегодня оно часто реализуется через Интернет путем загрузки. Распределение коммерческого программного обеспечения, как правило, явля­ ется незаконным. К популярным примерам коммерческого ПО относится Microsoft Windows и Microsoft Office.

□ Условно-бесплатное ПО. С юридической точки зрения условно-бесплатное программное обеспечение похоже на коммерческое (защищено законом об ав­ торском праве, и автор ожидает платы за его использование). Разница заклю­ чается в том, что условно-бесплатное ПО распространяется через Интернет или другими способами и «продается» на условиях «системы доверия» (honor system): если вы используете программное обеспечение дольше пробного перио­ да, вы должны заплатить разработчику. Условно-бесплатное ПО было распро­ странено в 1990-х годах, но встречается и сегодня, правда, редко.

Бесплатное ПО не следует путать со

свободным ПО, которое тесно свя­

□ Бесплатное ПО. Бесплатное ПО, как и условно-бес­ платное, предоставляется бесплатно (разработчики бесплатного ПО не просят оплаты). Иногда бесплат­ ное программное обеспечение представляет собой урезанную версию полной условно-бесплатной или коммерческой программы. В других случаях авторы предоставляют ПО бесплатно в целях продвижения другого продукта, В качестве примера можно назвать драйверы Windows для многочисленных устройств или программу Adobe Reader для чтения файлов в формате Portable Document Format (PDF). Как и в случае с коммерческими и условно-бесплатными программами, бесплатное ПО, как правило, поставляется без исходного кода.

более подробно.

зано с понятием ПО с открытым ис­

программное обеспечение описано

ходным кодом. В главе 2 свободное

□ ПО с открытым исходным кодом. Такое ПО соответствует десяти принципам, которые можно найти на странице www.opensource.org/docs/osd. Наиболее важ­ ные из этих принципов — право пользователя на распространение программы, доступность исходного кода, а также право пользователя на создание и распро­ странение модифицированных версий программы. Эти принципы означают, что пользователи могут изменять программы с открытым исходным кодом по сво­ ему усмотрению даже в целях, не поддерживаемых автором оригинальной версии.

70

Глава 3. Принципы и философия Linux

В главе 2 более подробно описаны

крытым исходным кодом.

конкретные лицензии наПОсот-

В рамках каждой из этих категорий существуют ва­ рианты, а также гибриды, которые не вписываются ни в одну из них. Например, организация OSI поддержи­ вает лицензии, официально заверенные ею как полно­ стью соответствующие ее критериям (www.opensour- cB.org/licenses). Тем не менее иногда разработчики выпускают программное обеспечение, используя неясные лицензии или лицензии, содержащие условия, ко­ торые противоречат одному из еще более неясных правил OSI. Технически такое программное обеспечение не может квалифицироваться как ПО с открытым исходным кодом, однако оно может быть ближе к данной категории, чем к какой-либо другой. Основная идея, лежащая в основе ПО с открытым исходным кодом, заключа­ ется в том, что программное обеспечение, разработанное открытым способом, с большей степенью вероятности будет превосходить программное обеспечение, разработанное закрытым способом. Это превосходство (и аргументы против него) основывается на следующих особенностях.

□ Более качественный код. Раскрытие исходного кода означает, что он может быть проверен, оценен и улуч­ шен любой заинтересованной стороной. Незамечен­ ные ошибки могут быть обнаружены и устранены, в то время как в продукте с закрытым исходным кодом они могут вызывать проблемы. С другой сто­ роны, справедливость этого утверждения не очень хорошо подтверждается исследованиями и неболь­ шие проекты могут не привлечь особого интереса других программистов, что не позволит им извлечь выгоду из проверки кода участниками сообщества.

Принцип раскрытия исходного

кода для улучшения его качества

иногда называется законом

Линуса (сформулирован Зриком

Реймондом в эссе The Cathedral

and the Bazaar («Собор и Базар»)):

«При достаточном количестве глаз

баги выплывают на поверхность»

(англ. Given enough eyeballs, аН bugs

are shallow).

□ Большая гибкость. Предоставляя исходный код, создатели проекта дают пользователям возможность модифицировать программное обеспечение по своему усмотрению. Если пользователь вернет измененную программу раз­ работчикам, которые ее сопровождают, или выпустит ее в качестве нового ответвления проекта, то каждый сможет извлечь выгоду из внесенного изме­ нения. Разумеется, критики могут заявить, что из такой гибкости пользу могут извлечь только люди, обладающие необходимыми навыками и временем для внесения подобных изменений, или те, у кого есть деньги для того, чтобы на­ нять специалиста.

□ Более низкая стоимость. Несмотря на то что определение ПО с открытым ис­ ходным кодом не запрещает продажу программного обеспечения, требования, касающиеся распространения, указывают, что в конечном итоге ПО с открытым исходным кодом должно быть доступно бесплатно. С другой стороны, если вам

Программное обеспечение с открытым исходным кодом

71

требуется техническое сопровождение, вы можете приобрести контракт на под­ держку (его стоимость способна снизить или совсем нивелировать выгоду от экономии).

□ Отсутствие зависимости от поставщика. Разработчики некоторых проприетар­ ных продуктов (особенно самых популярных из них) могут усложнить распро­ странение конкурирующих продуктов путем использования проприетарных форматов файлов или стандартов, а также в случае отказа от поддержки более открытых стандартов. Инструменты с открытым исходным кодом менее под­ вержены таким проблемам, поскольку они могут быть модифицированы для обеспечения поддержки открытых стандартов, даже если изначальноэто не было предусмотрено. Тем не менее с практической точки зрения даже проприетарные форматы файлов и протоколы, как правило, подвергаются обратной разработке, поэтому зависимость от поставщика обычно оказывается временной, а не по­ стоянной проблемой.

Разумеется, в рамках сообщества Linux общее мнение заключается в том, что каждый из этих факторов говорит в пользу Linux и ПО с открытым исходным кодом в целом. Указанные недостатки, как правило, считаются незначительными по срав­ нению с преимуществами. В итоге у вас сложится собственное мнение по данным вопросам послетого, как вы наберетесь опыта использования различного ПО.

Linux как и н те гр а то р п р о гр а м м н о го о б е сп е ч е н и я

Вскоре после создания Unix распалась на множество слабо связанных друг с другом ОС. Они были несовместимы на уровне двоичных файлов, но более или менее совмещались на уровне исходного кода. Это актуально и сегодня. Вы можете скомпилировать одну и ту же программу для FreeBSD, macOS и Linux, и она будет работать одинаково на всех трех платформах, однако скомпилиро­ ванные двоичные файлы, созданные для одной платформы, не будут работать на других.

Тем не менее из этого правилаесть исключения. Некоторые программы опира­ ются на функции, которые доступны лишь в некоторых Unix-подобных операци­ онных системах. Другие имеют свои особенности, не позволяющие компилировать их на некоторых операционных системах. Если программа выходит из употребле­ ния, она может стать непригодной для использования на новой операционной системе, поскольку опирается на компилятор или функции ОС, которые подвер­ глись изменению. Такие проблемы периодически возникают, но, как правило, со временем устраняются.

Благодаря популярности Linux большая часть программ Unix с открытым ис­ ходным кодом хорошо компилируется и работает на данной ОС. Также существуют

72

Глава 3. Принципы и философия Linux

коммерческие программы для Linux, хотя большинство из них являются специа­ лизированными. В любом случае Linux превратилась в операционную систему, которую должны поддерживать большинство программ Unix с открытым исходным кодом. Этот эффект настолько силен, что при разработке многих современных про­ ектов Linux рассматривается в качестве основной платформы.

Роли операционной системы Компьютеры играют множество ролей в современном мире, и по мере их распро­ странения и удешевления количество ролей увеличивается. Linux справляется с большинством этих ролей, каждая из которых опирается на собственный набор поддерживающих утилит. Некоторые роли требуют тонкой настройки ядра. Мы крат­ ко опишем три роли: встроенных компьютеров, настольных и портативных ком­ пьютеров, а также серверных компьютеров.

В стр о е н н ы е ко м п ью те р ы

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

□ Смартфоны. Современные мобильные телефоны

Компании Apple, Microsoft и другие

производители предоставляют соб­

ственные операционные системы

для мобильных телефонов.

(смартфоны) используют компьютеры с операционными системами, которые варьируются от простых до сложных. Некоторые смартфоны работают под управлением Linux, как правило, в виде Android.

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

□ Цифровые видеомагнитофоны. Цифровые видео­ магнитофоны (DVR, digital video recorder), которые производят запись телепрограмм для их последу­ ющего просмотра, представляют собой компьютеры со специализированным программным обеспечени­ ем. Некоторые из них, в том числе популярные мо­ дели ТіѴо, работают под управлением Linux.

Пакет MythTV пакет

(www.m ythtv.org) позволяет пре­

вратить обычный ПК в цифровой

видеомагнитофон на базе Linux, хотя

для этого вам потребуются ТВ-тюнер

и другие специфические аппаратные

средства.

Роли операционной системы

73

□ Автомобильные компьютеры. Компьютеры используются в автомобилях на протяжении многих лет. В основном они были незаметны и применялись для управления двигателем и другими системами. Современные автомобили все чаще оснащаются компьютерами, имеющими привычный для пользователей внешний вид. Они управляют глобальной системой позиционирования (GPS, Global Positioning System), системой предупреждения столкновений, систе­ мой экстренного торможения, аудиосистемой и даже обеспечивают доступ в Интернет.

□ Бытовая техника. В телевизорах, холодильниках и другой бытовой технике все чаще используются компьютеры для загрузки обновлений программного обе­ спечения, мониторинга уровня потребления энергии и других целей.

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

Н астольны е и п о р та ти в н ы е ко м п ь ю те р ы

на компьютеры другого класса,

Настольные компьютеры похожи

Сначала Linux использовалась на настольных компью­ терах; и несмотря на то, что эта система даже отдаленно не является лидером на рынке, начинать ее изучение можно с использования на компьютерах данного типа. С точки зрения системного администрирования порта­ тивные компьютеры похожи на настольные. Оба типа компьютеров часто используются небольшим количе­ ством людей для редактирования текстов, просмотра веб-страниц и обработки цифровых фотографий. С этого момента для краткости мы будем использовать термин «настольный компьютер* применительно к обоим типам компьютеров.

под управлением Unix или Linux.

более мощными и часто работают

правило, рабочие станции являются

известные ка к рабочие станции. Как

Программное обеспечение Linux доступно и отлично подходит для решения подобных задач, хотя некоторые пользователи предпочитают коммерческие ана­ логи, например Microsoft Office или Adobe Photoshop, которые не предусматрива­ ют версий для Linux. Такое предпочтение специфических коммерческих продуктов отчасти объясняет, почему Microsoft Windows продолжает доминировать на рын­ ке настольных компьютеров. Некоторые люди полагают, что модель разработки

74

Глава 3. Принципы и философия Linux

П О с открытым исходным кодом не может применяться для создания популярных приложений с графическим интерфейсом, поскольку разработчики программного обеспечения, как правило, слишком сильно ориентируются на технический аспект, чтобы в полной мере оценить потребности менее подкованных в техническом пла­ не пользователей. Из-за отсутствия возможности явно указать разработчикам на эти потребности проекты с открытым исходным кодом отстают от коммерческих аналогов по части удобства использования. Тем не менее эта точка зрения разде­ ляется не всеми, и в худшем случае проекты с открытым исходным кодом лишь слегка отстают от коммерческих аналогов.

К конкретным программам, которые должны быть установлены на настольных

компьютерах на базе Linux, относятся следующие:

□ система X Window System GUI (сокращенно X);

□ популярная среда рабочего стола, например GNOME, KDE, Xfce или Unity;

□ браузер, например Mozilla Firefox;

□ клиент электронной почты, например Mozilla Thunderbird или Evolution;

□ графический редактор, например GNU Image Manipulation Program (GIMP);

□ пакет офисных приложений, например OpenOffice.org или LibreOffice.

Дополнительные требования варьируются в зависимости от потребностей пользователей. Например, одному пользователю могут понадобиться инструменты для редактирования мультимедиа, а другому — научное программное обеспечение для анализа данных.

Как правило, в случае с дистрибутивами Linux вроде Fedora и Ubuntu эти по­ пулярные настольные инструменты устанавливаются по умолчанию или группой путем выбора соответствующего параметра во время установки. Кроме того, эти дистрибутивы предполагают относительно простой процесс обслуживания, так что даже не очень опытные пользователи могут установить ОС и поддерживать ее работу на протяжении долгого времени.

С ер ве рн ы е ко м п ью те р ы

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

Роли операционной системы

75

Приведем примеры таких программ.

□ Веб-серверы, например Apache.

□ Почтовые серверы, такие как Sendmail и Postfix.

□ Базы данных, такие как MySQL.

□ Файловые серверы, такие как Network File System (NFS) или Samba.

□ Серверы печати, такие как Common Unix Printing System (CUPS) или Samba.

□ DNS-серверы (Domain Name System, система доменных имен), такие как Berkeley

Internet Name Domain (BIND).

□ DHCP-серверы (Dynamic Host Configuration Protocol, протокол динамической настройки узла), такие как dhcpd организации Internet Systems Consortium (ISC).

□ Серверы времени, такие как Network Time Protocol (NTP, протокол сетевого

времени).

□ Серверы удаленного доступа, такие как Secure Shell

(SSH) или Virtual Network Computing (VNC).

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

Серверы удаленного доступа позво­

ляют пользователям удаленно за­

пускать на компьютере программы

в стиле рабочего стола. Поэтому они

иногда встречаются в настольных

системах.

Большая часть этих серверов не требует ГПИ, поэтому серверные компьютеры могут обойтись без системы X, сред рабочего стола или типичных программ, которые обычно можно найти на настольном компьютере. Одно из преимуществ Linux по сравнению с Windows заключается в том, что вы можете использовать компьютер без этих элементов и даже полностью их удалить. Это означает, что графический интерфейс не будет понапрасну расходовать оперативную память. Кроме того, если элемент вро­ де среды X не запущен, то любые связанные с ним проблемы безопасности утрачивают актуальность. Некоторые дистрибутивы, такие как Debian, Arch и Gentoo, не содержат конфигурационных ГПИ-утилит, из-за чего становятся недружелюбными по отноше­ нию к новым пользователям, однако для опытных администраторов серверных ком­ пьютеров необходимость виспользованииконфигурационныхТПИ-инструментов не представляет проблемы.

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

76

Глава 3. Принципы и философия Linux

Следует отметить, что различие между настольными и серверными компьюте­ рами не является абсолютным. На компьютере может работать любое сочетание программ обоих типов. Например, вы можете сконфигурировать настольные ком­ пьютеры в офисе для использования серверной программы. Эта конфигурация облегчает обмен результатами своей работы с коллегами. Дома или в небольшом офисе запуск других серверов на настольных компьютерах позволяет не покупать специальное оборудование.

О С Н О В Ы И Н Е Т О Л Ь К О

История развития Linux связана с историей развития Unix и сферы ПО с откры ты м исходны м ко д о м в це­

лом . Открытое програм м ное обеспечение предоставляется вместе с исходны м кодом и правом на его

изм енение и распространение. Это позволяет вам использовать ПО способами, не предусм отренны м и

или не по д д е р ж и вае м ы м и е го автором, при условии, ч то вы обладаете зна ния м и и врем енем , чтобы

м одиф ицировать код, или ресурсами, чтобы нанять специалистов. Эти принци пы ПО с откры ты м исход­

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

Тем не м енее разработчики ПО с откры ты м исходны м ко д о м не особо преуспели в привлечении вни­

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

Упражнения

О знаком ьтесь с описа ние м ф ункций ОС FreeBSD (ко н ку р е н т Linux) на стр а ниц е w w w .fre e b s d .o rg /

fe a tu re s .h tm l. Ч ем , по -ва ш е м у, эта система отличается от Linux?

И зучите особенности двух или тре х инте р е сую щ их вас п р о гр а м м с о ткр ы ты м исхо д ны м кодом ,

н а п р и м е р Apache, L ibreO ffice и M ozilla Firefox. Кажутся ли сп и ски ф ункц ий исче р пы ва ю щ им и?

С ущ ествуют л и в ко м м е р ч е с ки х аналогах ка ки е -л и б о ф ункц ии , отсутствую щ ие в э ти х списках?

Контрольные вопросы

К а ко й тип м но го за д а чно сти используется в Linux?

A. Вытесняющ ая.

Б. М ногопол ьзовател ьская.

B.

Кооперативная.

Г. О днозадачность.

Д . О днопользовательская.

К акая и з п е р е числ е нн ы х ха р а кте р и сти к относится к о все м у о ткр ы то м у п р о гр а м м н о м у о б е ­

спечению ?

А. Э то ПО не м о ж е т продаваться с целью пол учения пр иб ы л и . Оно д о л ж н о распространяться

бесплатно.

Роли операционной системы

77

Б. ПО д о л ж н о распространяться вм есте с исход ны м к о д о м и д в о и ч н ы м и ф айлами.

В. П ользователям разреш ается ра спр о стр а нять м о д и ф и ц и р о ва н н ы е версии о р и ги н а л ь н о й

п р о гр а м м ы .

Г.

ПО первоначал ьно было создано в ко л л е д ж е или университете.

Д . ПО д о л ж н о быть написано на ин те р пр е тир уе м ом язы ке , ко тор ы й не требует ко м п и л я ц и и .

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

пользуются на настол ьном ко м пь ю тер е , работаю щ ем под уп ра вл е ни ем Linux?

A. Apache.

Б. P ostfix.

B. A ndroid.

Г.

Evolution.

Д. BIND.

  1. Истина или л о ж ь : VMS была распространенной ОС д л я ПК с процессором х8 6 в то вр е м я, когда

была создана система Linux.

  1. Истина или л о ж ь : не которы е циф р о вы е вид еом агнитоф оны работаю т п о д уп ра вл е ни ем Linux.

  2. Истина или л о ж ь: ко м пь ю те р Linux, используем ы й в качестве сервера, к а к правило, не требует

системы X.

Linux и с п о л ь зуе т_______________ д и за й н ядра, в о тличие от д и за йн а м и кр о я д р а .

  1. Тип п р о гр а м м н о го обеспечения, которое распространяется бесплатно, но предполагает оплату

по «системе д о ве ри я» , если человек его использует, н а зы ва е тс я_______________ .

  1. Н а ____________ ко м п ь ю те р е с б о л ьш о й степенью вероятности установлен текстовы й ред актор

и браузер.

  1. П акет п р о г р а м м _______________ является пр и м е р о м в е б -сервера, на пи са нн ого д ля серверной

среды Linux.

Глава 4 Популярные программы Linux

В этой главе излагается практический взгляд на Linux в противоположность аб­ страктной информации, представленной в предыдущих главах. В начале главы рассматриваются среды рабочего стола Linux и приводится информация о наиболее распространенных средах и основных способах их применения. Если вы исполь­ зуете среду рабочего стола, высока вероятность того, что вы делаете это с целью применения прикладных программ. Поэтому в данной главе описываются некото­ рые распространенные пакеты приложений для Linux. Кроме того, вам, вероятно, потребуется установить дополнительные прикладные программы, поэтому в конце главы кратко излагаются основы управления соответствующими пакетами.

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

□ Среда рабочего стола Linux.

□ Работа с прикладными программами.

□ Серверные программы.

□ Управление языками программирования.

□ Управление пакетами программ.

Среда рабочего стола Linux

79

Среда рабочего стола Linux Скорее всего, ваш первый опыт взаимодействия с системой Linux предполагает использование среды рабочего стола. Среда рабочего стола — это набор контроли­ рующих экран программ, который также содержит небольшие утилиты для реше­ ния таких задач, как управление файлами. Linux предусматривает несколько вари­ антов среды рабочего стола, поэтому, если вам не понравится один из них, вы сможете выбрать другой. Кроме представления информации о доступных средах, в этом разделе описываются инструменты, которые можно использовать для за­ пуска программ и управления файлами.

В ы бор с р е д ы р а б о ч е го сто л а

В зависимости от дистрибутива Linux и параметров установки ваша система может иметь несколько сред рабочего стола. К наиболее распространенным средам от­ носятся следующие.

□ KDE. К Desktop Environment или KDE (www.kde.org) является популярной средой рабочего стола для Linux. Она по умолчанию используется для дистрибутивов Мапсіпѵаи OpenSUSE. Эта среда создана с использо­ ванием набора виджетов Qt, включает в себя множе­ ство мощных и хорошо совместимых между собой инструментов.

Набор виджетов — это библиотека,

которая обеспечивает функцио­

нальность таких элементов ГПИ,

как меню и диалоговые окна.

В настоящее время двумя по­

пулярными наборами виджетов

для Linux являются Qt и GTK+ (часть

проекта GNU).

□ GNOME. GNOME (www.gnome.org) также является популярной средой рабочего стола для Linux. Она по умолчанию используется для дистрибутивов Fedora и Debian. Среда GNOME создана на основе набора виджетов GIMP Toolkit (GTK+). Как и KDE, среда GNOME включает в себя множество мощных работающих вместе инструментов. Цель GNOME заключается в обеспечении простой в использовании среды ра­ бочего стола.

□ LXDE. Среда Lightweight X II Desktop Environment или LXDE (lxde.org) потре­ бляет немного ресурсов и, следовательно, хорошо работает на старых или мало­ мощных компьютерах. Она также построена на основе набора виджетов GTK+. Как правило, среда рабочего стола LXDE по умолчанию используется в дистри­ бутивах Linux, чья основная цель состоит в том, чтобы потреблять как можно меньше ресурсов, обеспечивая при этом работу всех функций (например, Lubuntu).

□ U n ity. Компания Canonical, издатель дистрибутива Ubuntu, выпустила среду рабочего стола Unity (ubuntu.unity.com) еще в 2010 году. В 2011-м она стала

80

Глава 4. Популярные программы Linux

средой по умолчанию для дистрибутива Ubuntu. Разработчики U nity стремились обеспечить простоту и согласованность среды рабочего стола на различных на­ стольных и мобильных платформах.

□ Xfce. Эту популярную среду рабочего стола можно найти на сайте w w w . x f c e . o r g . Изначально она была смоделирована в коммерческой среде рабочего стола CDE, но построена с использованием набора виджетов GTK+. Xfce обеспечивает большую конфигурируемость, по сравнению с GNOME или Unity, и потребля­ ет меньше системных ресурсов, чем большинство других сред рабочего стола.

□ Пользовательская. Вы можете создать собственную среду рабочего стола из компонентов, которые вам нравятся. Учитывая значительную сложность этой задачи, лучше начать с изучения подробного руководства. Откройте свою лю­ бимую поисковую систему и введите запрос «как создать собственную среду рабочего стола для Linux», чтобы найти конкретную информацию по данной теме. Как минимум вам потребуется менеджер окон. Тем не менее для того, чтобы конфигурация представляла собой настоящую среду рабочего стола, вам нужны другие компоненты, такие как файловый менеджер и небольшие при­ кладные инструменты. Доступ ко всем компонентам должен осуществляться через какую-то систему меню.

К сожалению, невозможно сказать, в каких ситуациях одна среда рабочего стола подойдет лучше, чем другая. Однако следующие рекомендации могут помочь. Новым пользователям, привыкшим к Windows или macOS, скорее всего, подойдет среда KDE, поскольку она аналогична средам этих традиционных настольных операцион­ ных систем. GNOME и Unity отличаются простотой использования, поэтому они также могут быть подходящим вариантом для новичков. Пользователи, знакомые с коммерческими операционными системами Unix, могут попробовать среду Xfce. Среды Xfce и LXDE — хороший выбор для систем с небольшим объемом ОЗУ или маломощным процессором. Пользователям, которые любят настраивать всевозмож­ ные параметры или используют гораздо менее мощные компьютеры, следует рас­ смотреть возможность создания собственной среды рабочего стола.

Прежде чем выбрать конкретную среду рабочего стола, можете опробовать две или три из них. В большинстве случаев вы можете установить несколько сред с помощью менеджера пакетов, как описано далее в этой главе и более подробно — в главе 9.

После установки среды рабочего стола ее можно будет выбрать в соответствую­ щем меню при входе в систему. На рис. 4.1 изображен экран входа в систему Fedora. В данном случае вам нужно щелкнуть на значке в виде шестеренки рядом с кнопкой Войти (Sign In), чтобы полу­ чить доступ к меню. Обратите внимание на то, что эти две кнопки не появятся до тех пор, пока вы не выберете имя пользователя и не будете готовы к вводу пароля.

Выбор пароля — важная тема,

которая подробно обсуждается

в главе 13.

Среда рабочего стола Linux

81

Ср#д*. 23 06

О *

■n *

A « о

И Мм * аил Рамтман

• GNOME

. fe d o ra '

GNOME на Way land

Рис. 4 .1 . Менеджеры входа в систему, как правило, предусматривают несколько вариантов сред рабочего стола на выбор

Показанное на рис. 4.1 меню содержит три варианта среды рабочего стола GNOME на выбор. Пункты меню в вашей системе Linux будут различаться в за­ висимости от того, какие среды рабочего стола были установлены по умолчанию, а какие из них были добавлены вручную. Способ выбора среды рабочего стола варьируется от одной системы к другой, поэтому вам может понадобиться про­ смотреть варианты на экране входа в систему, чтобы выбрать нужную среду.

З а п уск п р о гр а м м

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

□ Меню рабочего стола. Многие среды рабочего стола предусматривают меню вдоль верхнего, нижнего или бокового края экрана. Один или несколько эле­ ментов этих меню могут предоставить доступ к заранее выбранным наборам приложений.

82

Глава 4. Популярные программы Linux

□ Значки рабочего стола. Некоторые среды позволяют размещать значки в глав­ ной области рабочего стола. Щелчок или двойной щелчок на этих значках за­ пускает соответствующие им приложения. Это обычно требует настройки. Некоторые конфигурации по умолчанию размещают несколько приложений в главной области рабочего стола.

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

□ Контекстные меню. Иногда вы можете щелкнуть правой кнопкой мыши в свободной области экрана для вызова контекстного меню, содержащего раз­ личные пункты, среди которых может присутствовать команда для запуска программы.

□ Поиск программ. Некоторые среды рабочего стола, такие как GNOME 3, преду­ сматривают важную функцию поиска, которую можно использовать для того, чтобы найти программу по ее названию. Как правило, для этого нужно ввести часть названия, после чего отобразится список соответствующих программ, из которого вы можете выбрать нужную вам.

□ Терминалы. Вы можете запустить программу, называемую терминалом, которая обеспечивает работу пользовательского интерфейса в текстовом режиме внутри окна. Затем можно запустить либо ТПИ-программы, либо ГПИ-программы, введя имена их файлов в этом окне. Этот способ более подробно рассматрива­ ется в главе 6.

Чтобы прояснить некоторые из этих методов, далее приведено несколько при­

меров. Во-первых, рассмотрите возможность запуска браузера Firefox в Fedora 24, используя среду рабочего стола GNOME 3. Для этого выполните следующие дей­ ствия.

  1. Щелкните на элементе Обзор (Activities) в верхнем левом углу экрана. В результате откроется панель Избранное (Favorites) в левой части экрана, как по­ казано на рис. 4.2.

Описанная здесь процедура требует

наличия современной видеокарты.

Если у вас нет такого оборудования,

среда GNOME 3 будет использовать

старую, основанную на меню систе­

му для запуска программ.

  1. Наведите указатель мыши на значок программы Firefox (самый верхний зна­

чок на рис. 4.2).

Среда рабочего стола Linux

63

Обіор

Сргда. 2М2

го • Л * О *

Q Н ж т*.

  • )

ft Q

В й

  • '

.

.

.

Рис. 4.2. Панели позволяют запускать популярные программы в GNOME, Unity и некоторых других средах рабочего стола 3

  1. Щелкните на значке Firefox. После небольшой задержки должно открыться

окно данной программы.

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

Для сравнения: среда KDE под управлением OpenSUSE 13.2 предусматривает

несколько способов запуска программы Firefox:

□ щелчок на значке на панели виджета Папка (Folder) (в правой части экрана

на рис. 4.3);

□ щелчок на значке программы в левой части нижней панели экрана (см. рис. 4.3).

Эта панель называется Панель задач (Kicker);

□ поиск в списке приложений. Вы можете открыть этот список, вызвав Меню за­ пуска приложений (Kickoff Application Launcher) (щелчком назначке хамелеона SUSE с левого края Панели задач (Kicker)) и выбрать на вкладке Приложения

84

Глава 4. Популярные программы Linux

(Applications) пункт Интернет ► Браузер ► Браузер (Firefox) (Internet ► Web Browser ► Web Browser (Firefox)). На рис. 4.3 показано начало процесса выбора приложения.

Рис. 4.3. Интерфейс рабочего стола KDE предусматривает методы запуска приложений, похожие на аналогичные методы в Windows

Как и в случае со средой GNOME, для множества популярных приложений, таких как Firefox, предусмот­ рен широкий спектр вариантов запуска. Что касается менее популярных программ, возможно, вам придется использовать более сложные методы вроде их поиска в списке Программы (Applications). Тем не менее вы можете переконфигурировать среду рабочего стола для добавления часто используемых программ.

Ф а й л о вы й м е н е д ж е р

Каждый дистрибутив предусматри­

вает собственные умолчания. Ваша

конфигурация среды GNOME или KDE

может отличаться от показанной

здесь.

Если вы привыкли к Windows или macOS, вы почти наверняка использовали фай­ ловый менеджер для управления файлами. Linux, разумеется, тоже предусматривает файловый менеджер для этой цели — вы можете выбрать один из нескольких, хотя

Среда рабочего стола Linux

85

большинство из них работают аналогичным образом. В качестве примера рассмо­ трим файловый менеджер Nautilus, который установлен в среде GNOME по умол­ чанию.

Если вы использовали среду GNOME 3 в дистри­ бутиве Fedora, значок Nautilus напоминает картотеку на панели Избранное (F av o rites), как показано на рис. 4.2. Среда рабочего стола может запустить ф ай­ ловый менеджер при вставке съемного диска вроде USB flash-накопителя или DVD.

На рис. 4.4 изображена запущенная программа Nau­

tilus в ОС Ubuntu.

Поскольку Nautilus подобен файловым менеджерам других операционных систем, скорее всего, вы довольно легко сможете использовать его основные функции. Упо­ минания заслуживают следующие несколько элементов.

Кроме Nautilus для среды GNOME,

существуют и другие файловые

менеджеры, например Thunar (для

среды Xfce) и Dolphin (для среды

KDE). Программа Konqueror явля­

лась файловым менеджером по

умолчанию в более ранних версиях

среды KDE и по-прежнему доступна.

Крометого, приложение Konqueror

также может использоваться в каче­

стве браузера.

В и д е о

ш | |

М у зы ка

п а м . и п

ІЙ

д о к у м е н т ы

ш

З а гр у зки

tti

О б щ е д о ст у п н ы е

ІИ

Р а б о ч и й стол

ш

и з о б р а ж е н и я

ІИ

Ш а б л о н ы

Hi

П р и м е р ы

I РібеимА стая

Q D o c u m e n ts

ф D o w n lo a d s

Л M usic

йаі P ic tu re s

Я Videos

@ К о р з и н *

Q Д и с к д и с ке та

У К о м п ь ю те р

ш Документы

Ь Myunti

Ц Изображения Ш Вид» І і З агрузки

Д П о д к л ю ч и ть с я …

Рис. 4 .4 . П р о г р а м м а N a u t ilu s о б е с п е ч и в а е т о б з о р ф а й л о в , п о д о б н о ф а й л о в ы м м е н е д ж е р а м в д р у г и х О С

□ Каталоги. В левой части окна вы увидите список ^ папок. На рис. 4.4 они разделены на четыре категории (тонкими линиями-разделителями):

• верхняя категория относится ко всей установке Linux, при этом подкатегория Недавние (Recent) относится к недавно посещенным каталогам;

Если вы дважды щелкнете на одной

пытается получить к ней доступ.

86

Глава4. Популярные программы Linux

• следующая категория включает в себя дисковые разделы, которые не явля­ ются частью вашей стандартной установки, в том числе съемные диски;

• третья сверху категория содержит общие папки главного (домашнего) каталога;

• нижняя категория обеспечивает доступ к сетевым ресурсам. Тем не менее она может потребовать дополнительной настройки для корректной работы.

□ Домашняя папка (Ноше). Данная категория относится к вашему домашнему каталогу, то есть к каталогу, в котором вы храните собственные пользователь­ ские файлы. Как правило, вы будете создавать все личные файлы в главном (домашнем) каталоге. Вид программы Nautilus по умолчанию, когда вы запу­ скаете его вручную, соответствует виду главного каталога, как показано на рис. 4.4. На правой панели отображаются файлы и подкаталоги главной папки.

□ Закладки. Вы можете добавлять закладки для каталогов, не отображенных на панели менеджера. Просто перейдите к файлам, расположенным в нужном месте, установите указатель мыши на темную строку Nautilus в верхней части экрана и щелкните на меню Закладки (Bookmarks). Из появившегося меню вы­ берите пункт Добавить закладку на этот адрес (Bookmark This Location). Кроме того, вы можете нажать комбинацию клавиш Ctrl+D, чтобы создать закладку. Недавно добавленные закладки отображаются в третьей сверху категории на боковой панели Nautilus.

Для изменения закладки вам не нужно использовать программу Nautilus. Вме­ сто этого при открытом окне Nautilus выберите меню Закладки (Bookmarks) на верхней панели на рабочем столе GNOME, а затем пункт Закладки (Bookmarks) в открывшемся меню. Появится диалоговое окно, похожее на то, которое изо­ бражено на рис. 4.5. В этом окне вы можете изменить имя закладки и/или ме­ стонахождение, на которое она указывает.

□ Свойства документа. Вы можете щелкнуть на файле правой кнопкой мыши и выбрать в появившемся контекстном меню пункт Свойства (Properties). От­ кроется окно, показанное на рис. 4.6. Вкладка Открыть с помощью (Open With) позволяет связать тип документа с приложением.

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

Работа с прикладными программами

87

дийные приложения, облачные сервисы и мобильные приложения. Прежде чем описывать эти инструменты, дадим парочку советов, касающихся нахождения программы, необходимой для выполнения конкретной задачи в Linux.

Рис. 4.5. Вы можете управлять закладками для обеспечения быстрого доступа к интересующим вас каталогам

Свойства «nano.save»

Основные Права Открыть с помощью

Выберите приложение для открытия «nano.save» и других файлов типа «текстовый документ»

Приложение по умолчанию С cedit Рекомендуемые приложения

В UbreOfflce Writer

Л gedlt Другие приложения ф Apt URL

0 o pe nS U S E -13.2-D V D -i58600S 4

Q.

:=

В

0 Недавние

О Домашняя папка

Ь Рабочий стол

0 Корзина

S? Сеть

Г* » ф Я і у

• Ubuntu 16,04…

Q Диск Дискета

S Компьютер

k Documents Ш Downloads

Открытъ Открыть в новой вкладке Открыть в новом окне

Добавить в закладки Удалить Переименовать…

images

media. 1

autorun.lnf

ChangeLog

ntftK

~лг content.key

| ).

суперпользователя описывается

ки (# ). В главе 12 учетная запись

заканчиваться сим волом решет­

Если вы используете учетную

запись суперпользователя, строка

более подробно.

приглаш ения, к а к правило, должна

Запуск командной строки

141

Рис. 6.3. Доступ к терминалу через поиск G N O M E 3

Рис. 6 .4 . Программа Терминал среды G N O M E встречается часто, большую часть ее окна занимает область отображения текста

Большинство программ-терминалов предоставляют общие функции ГПИ- программ: вы можете изменять их размер, закрывать их, выбирать пункты меню и т. д. Однако конкретные функции зависят от используемой программы. Воз­ можно, вы захотите ознакомиться с командами, доступными вам через меню программы-терминала, чтобы изменить шрифт, цветовую схему и пр.

142 Глава 6. Знакомство с командной строкой

Большинство программ-терминалов поддерживают вкладки, аналогичные вкладкам браузера. Как и в случае с терминалом Терминал среды GNOME, вы мо­ жете открыть новую вкладку или окно, выбрав команду меню Терминал ► Создать терминал (Terminal ► New terminal). Наличие нескольких открытых вкладок или окон позволяет выполнять несколько задач одновременно, облегчает работу в раз­ ных каталогах или запускает программы как от себя, так и от имени суперпользо­ вателя. Кроме того, для достижения такого же результата вы можете запустить несколько программ-терминалов.

Завершив работу с терминалом, вы можете закрыть его как любую другую про­ грамму, выбрав команду меню Терминал ► Завершить (Terminal ► Close). Можно также ввести с клавиатуры в строку с приглашением команду e x it и нажать кла­ вишу Enter.

В хо д в те к с то в у ю ко нсо л ь

На первый взгляд Linux выглядит как Windows или macOS (это тоже графическая операционная система). Но под оболочкой предстанет чистый текстовый интерфейс, ждущий ваших команд. Linux поддерживает виртуальные терминалы (ѴТ), явля­ ющиеся виртуальными экранами, содержащими информацию разного типа (тексто­ вую и графическую). Большинство дистрибутивов Linux работают с шестью или семью ѴТ. В дистрибутивах CentOS, Fedora и Red Hat первый ѴТ, как правило, запускает оконную систему графического интерфейса пользователя. В большинстве других дистрибутивов графический интерфейс пользо­ вателя запускается в ѴТ 7 или ѴТ 8, при этом ѴТ 1 остается для текстового дисплея.

C trl, затем нажатие и удержание

клавиш и A lt и наконец нажатие

нажатие и удержание клавиш и

Запись C trl+ A lt+ F n означает

Вы можете переключаться между ѴТ нажатием со­ четания клавиш Ctrl+Alt+Fn, где Fn — это функциональ­ ная клавиша. (При переключении между ѴТ текстового режима достаточно нажать сочетание клавиш Alt+Fn.) Для того чтобы войти в ТПИ-консоль, выполните сле­ дующие шаги.

нуж ной ф ункциональной клавиши

с последую щ им одноврем енны м

отпусканием всех трех клавиш .

  1. Нажмите сочетание клавиш Ctrl+A lt-t^1. На экране вы увидите ТПИ-при-

глашение, похожее на первые несколько строк снимка экрана на рис. 6.5.

  1. Введите свое имя пользователя

и программа ответит приглашением ввести

пароль. На рис. 6.5 имя пользователя — rightman.

t

В версии Fedora 24 работает сочетание клавиш Ctrl+Alt+F5.

3. В ответ на приглашение введите свой пароль.

  1. Если попытка входа окажется успешной, приглаше­ ние Bash будет выглядеть примерно так, как показа­ но на рис. 6.5.

Запуск программ

143

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

консоль в ответ на приглашение на

экране не будет отображено ничего:

ни точек, ни звездочек, ка к при

использовании ГПИ-менеджера

учетнми записей.

Рис. 6.5. Доступ и вход в ѴТ

Вы можете переключаться между текстовым режимом и графической сессией с по­ мощью сочетания клавиш Ctrl+Alt+Fn. Вы также можете запустить несколько сессий текстового режима и переключаться между ними таким же способом. Эта функция полезна, если вы пытаетесь отладить проблему, связанную с графическим интерфейсом. Завершив работу с сессией текстового режима, введите команду exit. Для окон­

чания сессии также можно ввести команду logout.

Запуск программ После того как вы открыли терминал или зашли в ТПИ-инструмент, вы должны понимать, как пользоваться оболочкой. В оболочке Bash есть несколько встроенных команд, однако по большей части вы будете пользоваться оболочкой для запуска других программ.

Как описано в следующих разделах, вы можете запускать программы ТПИ- и ГПИ-программы. Иногда вам может потребоваться запустить программу в фо­ новом режиме и использовать оболочку для иных целей (это может быть удобно во многих ситуациях).

К онсольны е п р о гр а м м ы

Программы в Linux хранятся в нескольких каталогах, в том числе /Ып, /usr/bin и /usr/local/bin. (Программы, использующиеся по большей части суперпользо­ вателем, хранятся в папках sbin, /usr/sbin и /usr/local/sbin.) Если программа находится в одном из этих каталогов (которые составляют путь), вы можете за­ пустить их, просто введя название нужной программы:

144 Глава 6. Знакомство с командной строкой

$ free

total

used

free shared buff/cache available

Mem: 4028804 Swap: 2097148

1198864 1879264

2540

950676

2550592

0 2097148

Команда, приведенная в качестве примера, отобра­ жает на экране данные об использовании памяти ком­ пьютером. Вам не нужно пытаться разобраться в деталях выведенных сведений, просто обратите внимание, что программа free распечатала всю информацию в том же окне терминала, в котором и была запущена. Программа free более детально описана в главе 9.

^

В этой кн иге ком анды , которые вы

д ол ж н ы вводить самостоятельно,

напечатаны ж ирны м м онош ирин­

н ы м ш риф том , а програм м ны й

в ы в о д —

стандартны м м онош и­

р ин н ы м шрифтом.

С помощью следующей команды вы можете выяснить, какие каталоги состав­

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

$ echo $РАТН

Результатом будет разделенный двоеточием набор имен каталогов, которые просматривает оболочка всякий раз, когда вы вводите команду, которую она не может обработать напрямую. $ Р А Т Н — это переменная среды, в сертификационных нормативах Linux Essentials она носит название «PATH переменная среды». Пере­ менные среды более подробно описаны в главе 11.

Вы можете запустить программу, находящуюся в каталоге, который не от­ носится к $ Р А Т Н , введя местоположение этой программы и ее название, напри­ мер:

$ /home/rightman/myprog

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

$ type free

free is /bin/free

Когда вы запускаете исполняемую

програм м у, находящ уюся в катало­

ге, который не относится к SPATH,

говорят, что вы вызываете команду

вне ф иксированного пути.

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

Многие команды принимают аргументы, являющиеся подкомандами или ко­ дами (указываются после имени программы). В частности, команда cat (сокраще­ ние от англ, concatenate — «конкатенировать»), может быстро отобразить на экра­ не небольшой текстовый файл:

Запуск программ

145

$ cat afile.txt

Содержимое файла afile.txt

В этом примере команда cat принимает имя файла в качестве аргумента: afile.txt. Многие программы позволяют выполнять большое количество задач в за­ висимости от того, какие точно аргументы вы им пере­ даете. Вы можете изучить эти аргументы и особенности использования командной строки в справочной системе Linux (программа, предназначенная для этого, называ­ ется man). Ваша задача — передать этой программе имя команды, которую вы хотите изучить, в качестве аргу­ мента, например man cat, чтобы узнать дополнительную информацию о команде cat.

Команда man иллюстрирует особенность некоторых ТПИ-программ: они могут полностью перенять контроль терминалом, из которого были запущены. В случае с командой man вы можете пролистывать документацию вверх и вниз, используя клавиши со стрелками, клавиши Page Up и Page Down и т. д. В текстовых редакторах, таких как vi, emacs и nano, используются аналогичные особенности.

П рограм м ы с гр а ф и ч е ски м и н те р ф е й со м

С помощью терминала вы можете запускать не только ТПИ-программы (текстовые, консольные), но и ГПИ-программы, однако, если вы зашли в ѴТ текстового режи­ ма, это невозможно. Для запуска программы вам нужно знать имя исполняемого файла. Имя файла, как правило, соотносится с именем программы, которое вы используете для ее запуска через меню графической среды, однако эти имена не всегда идентичны. В частности, имя файла браузера Firefox — f i refox, соответ­ ственно, для запуска браузера Firefox необходимо ввести именно это имя файла.

Некоторые ГПИ-программы производят текстовый вывод, который может быть полезен для выявления причин возникших проблем; таким образом, запуск програм­ мы из окна терминала — первый шаг при отладке проблем. Вы, возможно, захотите запускать программы таким способом (это может быть быстрее, чем поиск программы в меню графической среды), особенно когда программы нет в меню среды.

П рограм м ы в ф о н о во м р е ж и м е

При запуске из окна терминала ГПИ-программаоткрывается в собственном окне или нескольких окнах. В этом случае окно терминала будет оставаться открытым, но, как правило, перестанет отвечать на действия пользователя. Если вы захотите ввести в это

146 Глава 6. Знакомство с командной строкой

окно другие команды, вы можете выделить его и нажать сочетание клавиш Ctrl+Z. Это приостановит запущенную программу, иными словами — переведет ее в режим сна. В режиме сна ГПИ-программа не будет отвечать на команды ввода и выполнять ра­ боту, однако вы теперь сможете использовать терминал для ввода команд.

После приостановки программы, если вы захотите запустить ГПИ-программу и получить возможность пользоваться терминалом, из которого вы запустили ГПИ-программу, введите в терминал команду bg (сокращение от англ, background — «фон»). Теперь обе программы активны.

Если вы желаете лишь «разбудить» ГПИ-программу, переведенную в режим сна, введите команду f g. Эта команда вернет ГПИ-программу на передний план (fore­ ground), заново включив ее, но повторимся, что это сделает терминал неактивным. Обратите внимание, что в данном контексте термины «фон» и «передний план» означают отношение программы к оболочке, а не по­ ложение программы в «стопке» окон на экране.

Если на момент запуска вы хотите, чтобы эта програм­

Нажатие сочетания клавиш Ctrl+Z приостанавливает работу большинства ТПИ-программ, это по­ зволяет вам воспользоваться обо­ лочкой прежде, чем вы вернетесь к приостановленной программе, введя команду fg.

ма работала в фоновом режиме, можете запустить ее в фоновом режиме сразу, для этого после названия программы в командной строке укажите значок амперсанда (&):

$ f i refox &

Эта команда запустит браузер Firefox в фоновом режиме, что позволит вам по­ сещать веб-страницы и использовать терминал. Данная функция наиболее полезна при работе с ГПИ-программами, но иногда применяется и при запуске ТПИ- программ. Например, сложные аналитические программы с большим количеством математических вычислений могут работать несколько минут или даже часов, прежде чем вернут результат. Поэтому вы, возможно, захотите запустить такую программу фоновым процессом и вернуть контроль над оболочкой. Однако следу­ ет помнить, что, если вы запустили в фоновом режиме программу, в процессе вы­ полнения которой на экран терминала выводится информация, этот программный вывод будет появляться на экране и, возможно, прерывать выполняемые вами операции в оболочке.

Функции оболочки В оболочке Bash реализовано несколько функций, значительно упрощающих ее ис­ пользование. Некоторые функции уже были описаны, другие же выходят за рамки этой книги. Однако две функции заслуживают более пристального внимания — за­ вершение команды и история команд.

Функции оболочки

147

Ф ункция за в е р ш е н и я ко м а нд ы

Завершение команды — это функция для тех, кто не любит печатать, это способ ввода длинной команды или имени файла путем нажатия всего нескольких клавиш. Для использования функции завершения команды вве­ дите часть команды или имени файла и нажмите клави­ шу Tab. Если в указанном пути есть только один вариант дополнения команды, оболочка Bash завершит ввод строки. Аналогичным образом можно использовать функцию завершения команды с именами файлов. Для иллю­ страции функции завершения команды опробуйте ее с несколькими командами.

о т используем ого дистрибутива.

Некоторые особенности работы

функции заверш ения ком анды

м о гут различаться в зависимости

  1. Запустите оболочку.

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

  3. Нажмите клавишу Tab еще раз. Оболочка отобразит список возможных завер­

шений введенной команды, например whatis, whereis и whoami.

Л. Введите буквосочетание оа, превратив вашу команду в whoa, и нажмите клавишу Tab еще раз. Компьютер, скорее всего, завершит команду whoami. (Если этого не произо­ шло, возможно, на вашем компьютере есть еще о дна программа, которая также может быть вариантом завершения команды, — введите еще один или два символа).

  1. Нажмите клавишу Enter. Компьютер выполнит программу whoami, выводящую на экран имя текущего пользователя, от имени которого был выполнен вход.

В некоторых ситуациях функция завершения ко­ манды сможет завершить команду только частично. В частности, ввод и последующие нажатие клавиши Tab приведут к добавлению одного-единственного симво­ ла — буквы Ь. Однако со слова grub начинается не­ сколько команд, поэтому вам придется ввести еще несколько символов самостоятельно. (Эти команды работают с унифицированным загрузчиком операционной системы GRUB (Grand Unified Bootloader), способствующим загрузке Linux.)

скорее всего, она отключена в на­

заверш ения ком анд не работает,

стройках програм м ы -терм инала.

Если на ваш ем ком пью тере ф ункция

Функция завершения команд работает также и с файлами. Например, вы мо­ жете ввести c a t/e tc /s e r и нажать клавишу Tab, чтобы оболочка Bash завершила ввод имени файла, а следовательно — команды c a t/e tc /s e r v ic e . (Эта команда показывает содержимое конфигурационного файла Linux.)

148 Глава 6. Знакомство с командной строкой

И стор ия ко м а н д

Оболочка Bash запоминает введенные вами команды, поэтому вы можете вос­ пользоваться этой особенностью, чтобы сэкономить время, когда вам необходимо ввести команду, похожую на ту, что вы недавно вводили. Можете воспользовать­ ся клавишей Т, чтобы ввести предыдущую команду. Повторное нажатие клавиши f будет выводить более ранние команды. В табл. 6.1 приведен перечень других часто используемых клавиш и сочетаний, открываю­ щих доступ к истории команд и/или упрощающих ввод новых команд.

те, что используются в текстовом

ком анд оболочки Bash похожи на

М ногие функции редактирования

редакторе e m ics.

Таблица 6 .1 . Функции редактирования и истории команд оболочки Bash

К лавиш и

Р е зу л ь т а т

Т

і

Ctrl+A

Ctrl+E

Delete

Backspace

Ctrl+T

Отображение предыдущей команды из истории команд

Отображение более ранней команды, пропущенной при ис­ пользовании клавиши Т

Перемещение курсора на один символ влево

Перемещение курсора на один символ вправо

Перемещение курсора в начало строки

Перемещение курсора в конец строки

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

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

Обмен местами символа под курсором и символа слева от курсора

Ctrl+X, а затем Ctrl+E Запуск полноразмерного редактора для вводимой команды

Ctrl+R

Поиск команды. Введите несколько символов — и оболочка найдет последнюю команду, содержавшую эти символы. Вы можете выполнить поиск последней использованной ко­ манды с этими символами, нажав сочетание Ctrl+R еще раз

Чтобы увидеть работу функции истории команд, выполните следующие шаги.

  1. Введите команду echo $РАТН, чтобы вывести на экран список каталогов, состав­

ляющих фиксированный путь.

  1. Нажмите клавишу |, чтобы повторно отобразить команду echo $РАТН,

  2. Нажмите клавишу Backspace пять раз, чтобы стереть $ Р А Т Н .

Получение справки с использованием страниц man

149

  1. Введите фразу H e llo W o rld , чтобы новая команда выглядела как e ch o H e llo W orld, и нажмите клавишу E nter. На экране должна появиться фраза H e llo W o rld .

  2. Нажмите сочетание клавиш Ctrl+R. Приглашение оболочки Bash должно будет поменяться на следу­ ющее: (rev e rse -1 -se a rc h )’ 1:.

  3. Введите Р, не нажимая клавишу E nter. На экране по­ явится использованная ранее команда echo $РАТН.

  4. Нажмите клавишу Enter, чтобы повторно выполнить

команду echo $РАТН.

Ф ункция C trl+R работает одинаково

для всего, что в ы вводите в ко­

м андную строку, будь т о название

ком анды , и м я файла или другие

парам етры ком анд.

Еще одна функция истории команд — команда history. Введите команду history, чтобы просмотреть все команды, записанные в историю, или добавьте число (например, history 10), чтобы просмотреть указанное количество последних введенных команд. Поэкспериментируйте с этими функциями. Завершение команды нажатием кла­ виши Tab и история команд — два мощных инструмента, которые позволят вам из­ бежать повторного ввода команд. История команд может стать помощником, напри­ мер, если вы забыли точное имя файла и команду, которые недавно использовали. В этом случае вы сможете отобразить их, введя лишь ту часть, которую помните.

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

Однако прежде, чем вы обратитесь к ним, вы должны понимать их предназна­ чение и, соответственно, возможности и ограничения. Зная это, вы можете начать искать справочную информацию в системе страниц man, в том числе поиск страниц man по разделам или по ключевым словам с помощью утилит w hatis и apropos. Чтение страницы man поможет вам найти нужные сведения.

П ре д на зна чен ие с т р а н и ц man

Страницы man Linux могут быть полезным источником информации, но вы должны понимать их предназначение и ограничения. В отличие от справочных систем не­ которых ОС, страницы man Linux не являются руководствами. Это скорее краткий

150 Глава 6. Знакомство с командной строкой

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

В разделе «Поиск дополнительной документации» рассказывается о том, как найти более информа­ тивную документацию, нежели страницы man.

В этой книге при описании команд Linux мы часто опускаем информацию о не­ значительных деталях и программных эффектах. Эти тонкости должны освещать­ ся на страницах man. Именно это и делает страницы man отличным ресурсом для более глубокого изучения команд, описанных в книге, если вам вообще потребует­ ся их более глубокое изучение.

П о и ск с т р а н и ц m an по н о м е р у р а зд е л а

Вы можете прочитать страницу man, введя название команды, имя конфигураци­ онного файла, системного вызова или другого ключевого слова после команды man. Каждая страница man относится к одной из девяти категорий, указанных в табл. 6.2.

Некоторые ключевые слова ведут к статьям в нескольких разделах. В таких случаях утилита man вернет статью из раздела, основываясь на порядке поиска (как правило, указывается в разделе настроек SECTION конфигурационного фай­ ла /etc/man_db. conf или /etc/manpath. conf ig - в зависимости от используемо­ го дистрибутива). Вы можете переопределить такое поведение, указав номер раздела перед ключевым словом. В частности, команда man passwd вернет ин­ формацию из раздела 1, посвященного команде passwd, тогда как команда man 5 passwd вернет информацию из раздела 5, посвященно­ го формату файла /etc/passwd. На некоторых страни­ цах man есть статьи в разделах с дополнительными номерами с суффиксом р, например раздел 1р. Такие разделы относятся к страницам man стандарта POSIX, противопоставленным страницам man Linux, создава­ емым по большей части теми, кто разрабатывает Linux с открытым кодом, для описания этих программ.

Точный порядок поиска страницы

дистрибутивах, но, как правило,

m an, определенны й в разделе

SECTION, отличается в разных

в остальных.

ле 1, затем в разделе 8, а потом —

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

Получение справки с использованием страниц man

151

Таблица 6.2. Разделы руководства

Н о м ер р а зд ел а

О п и сан и е

1

2

3

4

5

6

7

8

9

Исполняемые программы и команды оболочки

Системные вызовы, предоставляемые ядром

Вызовы библиотек, предоставляемые программными библиотеками

Файлы устройств (обычно хранятся в /dev)

Форматы файлов

Игры

Разное (макропакеты, соглашения и т. д.)

Команды системного администрирования (программы, запускаемые в ос­ новном или исключительно от имени суперпользователя)

Процедуры ядра

Если вы только начинаете знакомство с Linux, то, скорее всего, вас больше все­ го заинтересует раздел 1, который обычно первый в последовательности поиска страниц man. Если у вас есть свободное время, раздел б тоже должен вас заинтересовать. По мере решения более серьезных административных задач вы оцените разде­ лы 4, 5 и 8. Разделы 2, 3 и 9 представляют наибольший интерес для программистов.

Получите справку по чтению и ис­ пользованию страниц man, введя в командную строку man man.

П оиск нуж ной стр а н и ц ы m an

Одна из проблем со страницами man — сложность поиска справочной инфор­ мации, если вам неизвестно точное имя команды, системного вызова или фай­ ла, которыми вы хотите воспользоваться. К счастью, существуют способы поиска по базе данных системы справки, которые помогут отыскать нужную страницу man.

□ Резюмированный поиск. KoMaHflawhatis позволяет выполнить поиск резюмированной информации, со­ держащейся на страницах man, для указанного вами ключевого слова. Эта команда возвращает одностроч­ ное резюме каждой подходящей страницы man. (Р е­ зюме находится в разделе Название (Name), который описан в подразделе «Чтение страниц man» далее.)

Детали доступности страниц man различаются в зависимости от дистрибутива. Это повлияет на ре­ зультаты поиска с помощью команд whatis и apropos.

152 Глава 6. Знакомство с командной строкой

В дальнейшем вы можете воспользоваться этой информацией для поиска и чте­ ния нужной вам страницы man. В частности, ввод команды whatis passwd вернет строки, подтверждающие наличие статей страниц man, посвященных passwd в различных разделах.

□ П о д р о б н ы й поиск. Команда apropos выполняет более подробный поиск в раз­ делах Название (Name) и Описание (Description) страниц man. Результаты вы­ полнения этой команды очень похожи на результаты выполнения команды whatis, с той лишь разницей, что итоги поиска apropos, скорее всего, будут со­ держать большее количество данных. На самом деле выполнение поиска по очень часто используемому ключевому слову, например по артиклю the, вернет так много результатов, что сделает поиск бессмысленным. В частности, поиск apropos passwd может вернуть на некоторых системах 16 результатов, в том числе результаты для gpasswd, smbpasswd и passwd — различных утилит для работы с паролями.

Если вы получили ответ Nothing appropriate (Ничего подходящего не найдено) от команды whatis или apropos, это означает, что нужно подобрать другое ключевое слово. Впрочем, это также может означать, что база данных man не была обновлена. Это утверждение, как правило, справедливо на новой установке Linux или после установки новой программы. Вы можете обновить базу данных man вручную, вос­ пользовавшись привилегиями суперпользователя и введя команду makewhatis (старые дистрибутивы Linux) или mandb. (Использование привилегий суперполь­ зователя описано в главе 12.)

Ч тение с т р а н и ц m an

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

□ Название (Name). Страница man начинается с указания имени команды, вызова или файла, а также небольшого описания из нескольких слов. Например, стра­ ница man для man (раздел 1) выглядит следующим образом: man - доступ к спра­ вочным страницам.

□ Синтаксис (Synopsis). В данном разделе приведено краткоеописание принципа работы команды. Необязательные параметры указываются в квадратных скоб­ ках, например [-D], Многоточие означает необязательный набор повторяющих­

Получение справки с использованием страниц man

153

ся элементов, например множественные имена файлов, если команда в качестве параметров принимает одно или несколько имен файлов. Для некоторых команд указывается несколько строк сводки (это говорит о том, что использование не­ которых параметров зависит от других).

□ Описание (Description). Это пояснение на русском или английском языке того, что делает данная команда, файл или элемент. Может быть кратким или зани­ мать несколько страниц.

□ Параметры (Options). Этот раздел посвящен более детальному описанию пара­ метров, упомянутых в разделе Синтаксис (Synopsis). Как правило, каждый па­ раметр представлен отдельным элементом списка, сразу под которым дается табулированный абзац с пояснением.

□ Ф а й л ы (Files). В этом разделе приводится список файлов, связанных с темой страницы man. Это могут быть файлы конфигурации сервера или другой про­ граммы, связанные конфигурационные файлы, а также файлы, изменяемые темой страницы, и т. д.

□ Смотрите также (See Also). В этом разделе приводятся указатели на связанную информацию в системе man, как правило, обозначен и номер раздела. Например, страница man для man ссылается на страницы man для apropos, whatis и еще па­ рочки сходных инструментов.

□ О ш и б к и реализации (Bugs). В этом разделе автор описывает все известные ошибки и ограничения либо же указывает, что данные об известных ошибках отсутствуют.

□ История (H istory). На многих страницах man приводится краткий экскурс в историю программы, указываются даты начала проекта, основные вехи начальной и текущей версий. Этот раздел гораздо более краток, чем файл с описанием изменений, прилагаемый к исходному коду большинства про­ грамм.

□ Автор (Author). В этом разделе указаны контактные данные автора программы.

Некоторые страницы руководства содержат меньше или больше указанных разделов. Так, раздел Синтаксис (Synopsis) нередко опускается на страницах man, посвя­ щенных конфигурационным файлам. Раздел Описание (Description) часто разделен на несколько частей, у каж­ дой из которых свой заголовок.

На рис. 6.6 показана типичная страница man в окне терминала. Название раздела указывается полужирным шрифтом, что упрощает его поиск.

По ум олчанию система man использу­

ет программу less для того, чтобы вы

могли прокручивать документ вперед

и назад и закрывать страницу man

по окончании работы. В подразделе

«Использование less» далее в теку­

щем разделе м ы приводи м более

подробное описание этой программ ы.

154 Глава 6. Знакомство с командной строкой

О "

rlghcmerwpubuntu: -

Ы Н А ІІЬ ( І) м ш м

w hat i i

СИНТАКСИС

У іп л и гм П росм отр* спрашбчмых стр а н и ц

W ’tA liS ( t)

г о к а і іл л г г о д но строч ное описания справочны х с тр а н и ц

w hat I t / О&зШ» ) ( -C

| - 4 l v ? V i

I - T | - w ] I ИВJBBpMC

| - 5 U U & 9K ) . . .

l * " с и с т ю и ( f . . . 11 ( -И p j f i b j

I *L

О Л И Г А М М І

В начале калдои (гр а н о ч н о й странном е с т ь с стр а н и ц и ог® бр«**веі ониг алия ь, или x Esc+>

xp или x%

/текст

?текст

n или /

Пролистывание документа вверх на один экран

Перемещение по документу на одну строку вниз

Перемещение по документу на одну строку вверх

Переход на строку х документа. Так, ввод команды 100g приведет к отображению сотой строки документа. Если х опущен, то значение по умолчанию — 1

Переход на строку х документа. Если х опущен, то по умолчанию произойдет переход на последнюю строку до­ кумента

Переход на точку, соответствующую х процентам доку­ мента, например ввод 50р переводит на точку, соответству­ ющую половине документа

Поиск вперед вхождения текста в документе, начиная с те­ кущего положения курсора. Например, ввод/ОШИБКИ Запустит поиск строки ОШИБКИ

Поиск назад вхождения текста в документе, производится поиск вхождений строки в документе перед текущим по­ ложением курсора

Повтор предыдущего поиска

q, Q, :q, :Q или ZZ

Выход из программы less

В табл. 6.3 представлена небольшая часть команд, доступных в программе le s s . Для того чтобы узнать больше о программе less, обратитесь к соответствующей странице man.

  1. Войдите в компьютер в текстовом режиме или от­

кройте окно терминала.

  1. Введите команду man less. Это действие открывает

страницу man для программы less.

  1. Прочитайте первый экран текста. Когда прочтете последнее слово внизу экрана, нажмите клавишу Пробел. Это переместит дисплей на следующую стра­ ницу, чтобы вы могли продолжить чтение.

156 Глава 6. Знакомство с командной строкой

  1. Нажмите клавишу Это переместит дисплей на одну строку вверх (это полез­ но, если вам нужно перечитать всего несколько слов в конце предыдущей стра­ ницы).

  2. Нажмите клавишу Это перемещает дисплей на одну строку вниз.

  3. Нажмите клавишу Esc, а затем клавишу V. Это перемещает дисплей назад на

одну страницу.

  1. Нажмите Shift+G, чтобы переместиться в конец страницы man.

  2. Нажмите клавишу G (не нажимая Shift), чтобы вернуться к началу страницы man.

  3. Введите /ПАРАМЕТРЫ, чтобы найти раздел Параметры (Options). Скорее всего, первые результаты поиска будут ссылками на этот раздел, а не сам раздел Пара­ метры (Options).

  4. Несколько раз повторно нажмите клавишу N, пока

не найдете раздел Параметры (Options).

  1. Нажмите клавишу Q, чтобы выйти из программы

less.

Некоторые версии программы ищут

чувствительным к регистру способом,

но другие нечувствительны к реги­

стру. Попытайтесь выполнить поиск

по слову параметры (options) (в ниж­

нем регистре), чтобы определить,

какова ситуация в вашей версии.

Конечно, когда вы будете читать страницы man, вы, вероятно, не станете при­ менять точно такие же параметры, а будете использовать любые релевантные ключевые слова, чтобы найти интересующую вас информацию. Наша задача — по­ знакомить вас с некоторыми наиболее важными функциями, чтобы вы могли эф­ фективно использовать less, читать страницы man и другую документацию.

Несмотря на то что программа le ss важна для чтения страниц man, вы также можете использовать ее для чтения других консольных документов, например файлов R E A D M E , которые поставляются со многими программами. Введите имя про­ граммы и имя файла, который вы хотите считать, как в случае с командой less R E A D M E , чтобы прочитать документ R E A D M E . Вы также можете использовать все действия, перечисленные в табл. 6.3 (или на странице man, посвященной программе less), чтобы читать документы точно так же, как страницы man.

Получение справки с использованием страниц info Система страниц man типична на Unix-подобных ОС, включая Linux, но она не новая, поэтому ее возможности ограниченны. Сегодня доступна более свежая система до­ кументации — страницы info. В следующих разделах описано, как страницы инфор­ мации заполняют разрывы в системе страниц man и как использовать страницы info.

Получение справки с использованием страниц info 157

П ред назначение с тр а н и ц in fo

Базовая структура страниц man появилась несколько десятилетий назад, то есть она предшествует некоторым важным разработкам в управлении информацией. Прежде всего, страницы man не сопровождаются гиперссылками. Несмотря на то что раздел Смотрите также (See Also) распространен на страницах man, вы не можете выбрать ни один из этих элементов, чтобы прочитать соответствующую страницу справоч­ ника: вы должны выйти из системы man и ввести новую команду man, чтобы про­ читать новую страницу. Отсутствие гиперссылок делает навигацию крупной стра­ ницы man неудобной. Вы можете использовать поиск текста, чтобы определить местоположение необходимой информации (правда, такой поиск часто находит ошибочный текст); если вы введете запрос с опечаткой, поиск не удастся вовсе.

Цель страниц информации — помочь преодолеть эти проблемы, поддерживая связывание гиперссылками. Каждая страница in fo называется узлом, а система страниц info в целом — это взаимосвязанный набор узлов, подобный Всемирной паутине (W W W ). Документация отдельной программы может быть разнесена на несколько узлов, что упрощает поиск каждого такого узла, но если вам нужно най­ ти информацию и вы не знаете точно, в каком узле она находится, возможно, по­ требуется выполнить поиск по нескольким узлам.

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

Страницы info подобны страницам справочника: они кратко, но всесторонне описывают тему и предназначе­ ны для пользователей, которые знакомы с рассматрива­ емыми программами. Если вы только начинаете осваи­ вать программу, лучше отдать предпочтение другим видам документации (см. раздел «Поиск дополнитель­ ной документации»).

Каталоги /u sr/do c и /usr/share/doc

часто содержат м ного полезной ин­

формации. Если вы не м ожете найти

сведения на страницах man или Info,

загляните в зти каталоги.

Вообще в программах, спонсируемых Фондом свободного программного обеспече­ ния (FSF), страницы info предпочтительнее страниц man. Многие программы FSF теперь поставляются с минимальными страницами man, которые переводят пользова­ теля на страницы info этих программ. Программисты, не имеющие отношения к FSF, медленнее осваивают страницы info. Большинство таких программ не поставляются со страницами info (для них используются традиционные страницы man). Браузер info может считать и вывести на экран страницы man. Таким образом использование только страниц info - вполне эффективный метод чтения стандартной документации Linux.

158 Глава 6. Знакомство с командной строкой

Ч тение с тр а н и ц in fo

Инструмент, применяемый для чтения страниц info, носит название info. Чтобы воспользоваться им, введите команду info в сопровождении темы, например info info, чтобы узнать о самой системе информации. Как только вы зашли в систему info, к вашим услугам сочетания клавиш (табл. 6.4) для навигации по документу.

Таблица 6.4. Ком ан ды н ав и гац и и ф айла info

Клавиши

Действие

?

N

Р

и

Клавиши Т. і и -

Page Up, Page Down

Отображение справочной информации

Переход к следующему узлу в связанной последовательности узлов, находящихся на одном уровне. Это действие может потребоваться, если автор считает, что некоторые узлы должны читаться в определенной по­ следовательности

Переход к предыдущему узлу в связанной последовательности узлов, находящихся на одном уровне. Это действие может быть полезно, если вы уже перешли вперед по последовательности, но обнаружили, что вам нужно еще раз просмотреть прочитанный материал

Переход на один уровень вверх по иерархии узлов

,

Перемещение курсора по экрану. Это позволяет выбирать ссылки на узлы или прокручивать экран

Эти клавиши позволяют пролистывать вверх и вниз текст одного узла. (В стандартном окне info реализовано большое количество скрытых команд, используемых программой less; см. табл. 6.3)

Enter

Переход к выбранному узлу. Ссылки помечены звездочками (*) слева от имен

L

T

Q

Отображение последней прочитанной страницы info. Это действие мо­ жет перенести вас вверх, вниз и вбок по иерархии узлов info

Отображение верхней страницы темы. Как правило, это страница, кото­ рую вы использовали для входа в систему справки

Выход из системы страниц info

В качестве примера использования страниц in fo выполните следующее

шаги.

  1. Войдите в компьютер в текстовом режиме или откройте окно терминала.

  2. Введите команду info info. На экране вы должны увидеть главный узел до­

кументации info.

Поиск дополнительной документации

159

  1. Прочитайте главную страницу, используя клавиши со стрелками или клавишу

Page Down, чтобы просмотреть всю страницу.

  1. Нажимая клавиши со стрелками, выберите ссылку к узлу Expert Info в нижней

части главной страницы.

  1. Нажмите клавишу Enter, чтобы просмотреть узел Expert Info.

  2. Нажмите клавишу U, чтобы перейти на один уровень наверх — назад к основ­

ному узлу.

  1. Перейдите к узлу Advanced.

  2. Нажмите клавишу N, чтобы перейти к следующему узлу на текущем уровне,

который на самом деле является узлом Expert Node.

  1. Нажмите на клавиатуре клавишу Q, чтобы выйти из программы чтения страниц

info.

Если вам комфортнее работать в графическим интерфейсе, чем с ТПИ- инструментами, вы можете получить доступ к страницам in fo с помощью сле­ дующих инструментов:

□ Emacs. GNU-программа Emacs — мощный текстовый редактор, обеспечивает

браузер страниц info в составе пакета info;

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

Поиск дополнительной документации

Конечно, страницы man и in fo — весьма полезные ре­ сурсы, однако иногда предпочтительнее другие формы документации. Справка по Linux может иметь три фор­ мы: дополнительная документация на вашем компью­ тере, дополнительная документация онлайн и помощь экспертов.

В отличие от ТП И -програм м ы Info

ни браузер Info редактора Emacs, ни

програм м а tk in fo не позволяю т в ы ­

водить на экран страницы m an.

Категории д окум ентации м о гут бы ть

разм ы ты м и. Наприм ер, докум ента­

ция могла бы бы ть доступна онлайн,

но не на ваш ем ком пьютере (пока

не установите н уж ны й пакет).

160 Глава 6. Знакомство с командной строкой

П ои ск д о к у м е н та ц и и к п р о гр а м м а м на ваш ем ко м п ь ю те р е

Большинство программ Linux поставляются в комплекте с собственной докумен­ тацией, даже не беря в расчет страницы info или m a n . На самом деле у некоторых программ так много документации, что она устанавливается как отдельный пакет, обычно со словами d o c u m e n t a t i o n или d o c в имени пакета, например s a m b a -doc.

Основной вид документации к программе — файл с названием R E A D M E , r e a d m e . tx t или что-то подобное. Содержание этого файла различается в разных программах (к слову сказать, у некоторых программ файл настолько краткий, что почти беспо­ лезен). Эти файлы почти всегда содержат обычный текст, поэтому вы можете читать их с помощью программы l e s s или вашего любимого текстового редактора.

Если вы загрузили программу как файл исходного кода с сайта специалиста по обслуживанию пакета про­ граммного обеспечения, файл R E A D M E обычно будет на­ ходиться в каталоге сборки, извлеченном из сжатого файла исходного кода. Однако если вы устанавливали программу из файла пакета, то файл R E A D M E может быть в любом из нескольких расположений.

Далее приведены наиболее вероятные места распо­

ложения:

/ u s r / d o c /имя_пакета;

/ u s r / s h a r e / d o c / u > i R _ n o K e m o ;

/ u s r / s h a r e / d o c / p a c k a g e s / i M w _ n a K e m a .

Файлы README часто содержат

инф орм ацию о создании пакета про­

грам м ного обеспечения, который

не применяется к програм м ны м

файлам, предоставляемым

в дистрибутиве. Несмотря на это,

специалисты по обслуживанию

д истрибутивов редко изменяют

такую инф орм ацию в своих файлах

README.

Имя_пакета — это имя пакета программного обеспечения. Имя пакета иногда

включает номер версии, но чаще эта информация опускается.

В дополнение к файлу R E A D M E (или вместо него) ко многим программам предо­ ставляются другие файлы документации (например, файлы, документирующие историю программы в деталях, содержащие описание процедур компиляции и уста­ новки, информацию о форматах конфигурационного файла и пр.). Проверьте ка­ талог сборки исходного кода или каталог, в котором вы нашли файл R E A D M E , на наличие других файлов.

Некоторые большие программы поставляются с объемной документацией в формате PostScript, переносимом формате документа (Portable Document Format, PDF), формате языка разметки гипертекстов (Hypertext Markup Language, HTML) или других форматах. В зависимости от формата и пакета вы можете найти один файл или много файлов. Как и файлы R E A D M E , эти файлы определенно стоит про­ смотреть, если вы хотите узнать, как использовать пакет в полном объеме.

Поиск дополнительной документации 161

Управление поведением некоторых программ осуществляется через конфигураци­ онные файлы, обычно расположенные в каталоге /e tc /. Несмотря на то что синтаксис в конфигурационных файлах часто трудно понять, многие дистрибутивы по умолчанию поставляются с конфигурационными файлами, которые включают обширные коммен­ тарии. Детали варьируются отодной программы к другой, но строки комментария часто начинаются со знака#. Вам, возможно, удастся изучить программу, чтобы настроить ее конфигурацию, просто читая комментарии в ее конфигурационном файле.

Если в ы не можете найти файл README или подобный файл, воспользуйтесь

следующими инструментами:

т е , . , ,

□ системой управления пакетами дистрибутива, чтобы ^ определить местоположение документации. Напри­ мер, в системе на RPM вы можете ввести команду грш -ql пакет \ grep doc, чтобы определить место­ положение документации для пакета. Использова­ ние grep для поиска строки doc в списке файлов — хороший прием, потому что каталоги документации почти всегда содержат строку doc;

инструмента управления пакетами,

□ командой find. Позволяет выполнить поиск файлов, ^ соответствующих указанному критерию, по всему

В главе 8 многие инструменты по- и с к а ,н а п р и м е р qrep и fin d ,описаны


_

т т

/ ? . .

.

0

, подробнее,

дереву каталогов или его подмножеству. Чтобы ис- кать файл, имя которого включает определенную строку, вы можете ввести команду fin d /u sr/s h a re / doc -паше “строка”, где строка — ключевое слово, которое вы хотите найти в имени файла. Эта команда выполняет поиск в дере­ ве каталогов /u sr/sh are/d o c, но вы также можете задать поиск по другому де­ реву каталогов. Если вы ищете в каталоге с большим количеством файлов и подкаталогов, выполнение этой команды может занять много времени;

м

□ программой w here!s. Выполняет поиск файлов в ограниченном количестве каталогов, например в каталогах стандартных двоичных файлов, каталогах би­ блиотек и каталогах страниц man. Не выполняет по­ иск по пользовательским каталогам. Применение утилиты whereis — способ быстрого поиска испол­ няемых файлов программ, а также связанных файлов (файлов документации и конфигурации). Введите команду whereis и имя команды и файла, например whereis less, чтобы найти двоичный файл less и свя­ занную документацию;

ленном дистрибутиве или ищете

База д анны х locate, ка к правило,

вы работаете в недавно установ­

файлы, потребуется запустить

обновляется кажды е 24 часа. Если

недавно установленные пакетные

команду updatedb с привилегиям и

суперпользователя, чтобы вручную

□ командой locate. Выполняет поиск по базе данных имен файлов, хранящ ейся в Linux. Поэтому эта

обновить базу данных locate, прежде

чем использовать ком анду locate.

162 Глава 6. Знакомство с командной строкой

программа может работать быстрее по сравнению с программой f i n d , однако вы не можете управлять той частью компьютера, в которой система выпол­ няет поиск. Введите команду lo c a te и строку, которую вы хотите найти, на­ пример lo ca te xterm, чтобы найти любые файлы, связанные с программой- терминалом Xterm.

Вы также должны знать, как читать найденные фай­ лы документации. Детали, естественно, зависят от фор­ мата файла. Вы можете использовать программу le s s для чтения многих файлов. В большинстве дистрибути­ вов присутствует программа less, сконфигурированная таким образом, чтобы она могла читать часто используе­ мые форматы файлов, например HTML, и автоматиче­ ски разархивировать файлы, сохраненные в сжатом форматедляэкономииместанадиске. Втабл. 6.5 пред­ ставлены популярные форматы файлов документации, а также программы, предназначенные для их чтения. Какие именно форматы используются, варьируется от одной программы к другой.

Таблица 6.5. Популярные форматы файлов документации

Если хотите просмотреть файл

форматированного текста, например

HTML, в режиме простого текста,

воспользуйтесь параметром -L про­

грам м ы less: less -L файл ,h tm I.

Ручное разархивирование с по­

м ощ ью програм м gzip, xz или

bunzip2 м ож ет потребовать записи

разархивированной версии файла

на диск, поэтому вам , возможно,

потребуется скопировать файл

в дом аш ний каталог. См. главу 8 для

получения детальной информации

Р а с ш и р е н и е и м ен и ф а й л а

О п и сан и е

П р огр ам м а д л я чтения

.1 - .9

Страницы man Unix

man, info, less

,gz, .xz или ,bz2

Файл, сжатый с помощью gzip, xz или bzip2

Используйте программы gzip, xz или bunzip2, чтобы разархивиро­ вать файлы, или программу less, которая может разархивировать файл и прочитать его формат

.txt

Простой текст

less или любой текстовый редактор

.html или .htm

HTML

Любой браузер

.odt

.pdf

-tif, .png, .jpg

Текстовый документ OpenDocument

OpenOffice.org, LibreOffice.org или другой текстовый процессор

Портативный формат документов (Portable Document Format, PDF)

Форматы графических файлов

Evince, Okular, Adobe Reader, xpdf

The GIMP, Eye или GNOME (eog)

Поиск дополнительной документации

163

П оиск п р о гр а м м н о й д о к у м е н та ц и и в р еж и м е онлайн

В дополнение к документации, хранящейся на компьютере, вы можете найти све­ дения в Интернете. Большинство пакетов распространяются через сайты, ссылки на которые могут встречаться на страницах man и info, в файлах README или другой документации.

Во Всемирной паутине есть несколько общих ресурсов с документацией по Linux. Однако информация, предлагаемая на этих сайтах, устарела. Как правило, у дистрибутивов есть собственные сайты, предоставляющие актуальную докумен­ тацию. Ниже приведено несколько полезных ресурсов с онлайн-документацией:

□ проект документации Linux, или LDP (www.tldp.org);

□ документация по продукту Red Hat (access.redhat.com/

documentation);

□ официальная документация по Ubuntu (help.ubun-

tu.com);

□ документация по openSUSE — ActiveDoc (active-

doc. opensuse. org);

□ документация no Fedora (docs.fedoraproject.org).

Следует пом нить, что статьи насайте

LDP м огут бытъ устаревш ими. Не за­

будьте проверить дату редактирова­

ния статьи, прежде чем использовать

содержащуюся в ней информацию.

Документацию для многих дистрибутивов Linux пишут и/или редактируют волонтеры. Практический опыт волонтеров делает документацию по дистрибути­ ву более точной, а сайты — ценным ресурсом.

К онсультация э к с п е р т о в

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

□ Авторы программ. Авторы многих программ с открытым кодом будут рады ответить на ваши вопросы или предложить ограниченную поддержку, особенно если ваша проблема вызвана ошибкой в программе. У больших проектов (в том числе у большинства дистрибутивов Linux) много авторов, кроме того, у таких проектов часто есть веб-форумы и списки рассылки, которые помогают общать­ ся пользователям и разработчикам.

□ Веб-форумы и списки рассылки. Эти ресурсы отличаются по формату, но служат одинаковым целям — позволяют пользователям общаться друг с другом

164 Глава 6. Знакомство с командной строкой

и делиться опытом и знаниями. Для многих дистрибутивов есть специализиро­ ванные веб-форумы. Попробуйте выполнить поиск по имени своего дистрибу­ тива и слову forum. Списки рассылки чаще всего встречаются в случае с авто­ номными программами. Изучите сайт программы в поисках информации о списках рассылки.

□ IRC -каналы. Ретранслируемый интернет-чат (Internet Relay Chat) — это ин­ струмент для обмена текстовыми сообщениями в режиме реального времени между небольшими группами людей. Чтобы воспользоваться IRC, вам необхо­ димо установить клиентскую программу IRC, например Irssi ( www.irssi.org), HexChat (hexchat.github.io/) или Smuxi (smuxi.im/). Затем вы можете присоеди­ ниться к каналу IRC, в котором пользователи обмениваются сообщениями в режиме реального времени.

□ Платные консультанты. Для решения сложной про­ блемы, особенно когда время — деньги (когда за­ держка в решении проблемы может на самом деле стоить денег) иногда лучший выбор — оплатить чью- либо консультацию по Linux. Поиск в Интернете поможет найти фирмы, оказывающие такие услуги.

У некоторы х дистрибутивов, таких

ка к R ed Hat Enterprise Linux и SUSE

Enterprise Linux, есть спуж ба под­

дер ж ки . Еспи вы работаете с таким

дистрибутивом , возм ож но, вы уже

оплатили консультацию.

□ Поиск в Интернете. Поисковые машины индекси­ руют большое количество интернет-ресурсов, в том числе страницы man, сайты с программной документацией, веб-форумы и даже обсуждения на каналах IRC. Поиск в Интернете может отыскать ответы экс­ пертов (это избавит вас от необходимости связываться с экспертом напрямую).

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

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

Поиск дополнительной документации

165

ОСНОВЫ И НЕ ТОЛЬКО

К о м а н д н ы е с тр о ки — м о щ н ы е ин стр у м е н ты L in u x. Они явл яю тся б азой, на ко тор о й построены

более д р уж е л ю б н ы е ГП И -пр ил о ж е ния. Д о ступ к к о м а н д н ы м стр о ка м м о ж е т осущ ествляться б ез

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

Чтобы испол ьзовать Т П И -инструменты , о писы ва е м ы е в д р уги х главах этой кн и ги , вы д о л ж н ы б ы ть

зн а ко м ы с о б ол о чко й Linux, а им енно у м е т ь о ткр ы ть оболочку, зап ускать п р о гр а м м ы в об ол очке

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

Н еза висим о от т о го , х о т и т е л и вы и з у ч и т ь п р о гр а м м у б олее гл у б о ко , ч то б ы по л ь зо ва ться е ю на­

м н о го эф ф ективнее, ил и р е ш ить п р о б л е м у с н е п р а в и л ь н о р а ботаю щ ей п р о гр а м м о й , п о л уч е н и е

сп р а в ки часто является н е о б хо д и м о сть ю . Д л я т а к и х си туац и й в L in u x пр е д усм о тр е н о н е с ко л ько

ре сурсо в с д о ку м е н та ц и е й . В о -п е р в ы х, э то систем а стр а н и ц m an , д о ку м е н ти р у ю щ а я б о л ьш и н ств о

ко н со л ьн ы х ко м а н д , ко н ф и гу р а ц и о н н ы х ф айлов и си сте м н ы е вы зовы . С истема стр а н и ц in fo а н а ­

л о ги ч н а систем е стр а н и ц m an , о д н а ко в си стем е in fo испол ьзуется более со ве р ш е н н ы й ф орм ат

ф айлов с ги п е р п о т о к а м и . Если в а м требуется уче б на я и н ф о р м а ц и я , м о ж е т е п о л у ч и т ь с п р а в ку

в р а сш и р е н н ы х р у ко в о д с т в а х по л ь зо в а те л е й , на в е б -с т р а н и ц а х и в д р у го й д о ку м е н т а ц и и (на

в а ш е м ко м п ь ю т е р е ил и в И нте р н ете ). Н а ко не ц , о б щ е н и е с э ксп е р та м и м о ж е т п о м о ч ь в р е ш е н и и

пр о б л ем ы , по это м у не стесняйтесь и с п о л ь зо в а ть л и ч н ы е и о н л а й н -р е с ур сы д л я о б р а щ е н и я по

и н те р е сую щ е м у ва с вопросу.

Упражнения

Запустите ГП И -пр о гр ам м у, н а п р и м е р F i refox, с а м п е р са н д о м (&) и без него. П ри зап уске без

ам персанда воспользуйтесь сочетанием кл а в и ш C trl+ Z для перевода пр о гр а м м ы в ф оновы й

р е ж и м и посм отрите, к а к п р о гр а м м а будет отвечать на щ е л ч ки кн о п ко й м ы ш и . Воспользуйтесь

ком а нд о й fg , чтобы в е р нуть п р о гр а м м у на передний план, затем повторите процесс, но в этот

раз воспользуйтесь ко м а н д о й bg, чтобы перевести п р о гр а м м у на зад н и й план. Пронаблю дайте,

что пр о изо йд е т в о кн е терм инал а, когда вы вы йдете из ГП И -пр о гр ам м ы .

В оболочке введите лю бую букву, на пр им е р т , и на ж м и те кл а в и ш у Tab. Что произойдет? Что

произойдет, если вы введете м енее употребительную букву, на прим ер 2 , и наж м ете кл а виш у Tab?

П о экспе р и м е нти р уй те с исто р ие й ко м а н д . П р и м е ни те эту ф ункц ию для по иска стр о к, я в л я ­

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

со стрел кам и и ф ункц ия м и р е д актир о ва ния , пе р е числ е нн ы м и в табл. 6.1, д ля ре д актир о ва ния

ко м а н д , которы е вы пр им е ня л и ранее.

П рочитайте страницы m an для сл е д ую щ их ко м а н д : m an, less, w hereis, fin d и locate. Что вы узн а ­

ли об этих ко м а н д а х такого , чего не было в книге?

В ы полните поиск в ка та л о ге /u sr/sh are /d o c, чтобы найти д о кум е н та ц и ю к в а ж н ы м п р о гр а м м а м ,

ко то р ы м и вы часто пользуетесь, наприм ер GIMP или GNOME.

166 Глава 6. Знакомство с командной строкой

ОСНОВЫ И НЕ ТОЛЬКО

Н айдите веб-ф орум по по д д е р ж ке ваш его д истр иб утива на сайте д истр иб утива или вы п ол н ив

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

на таких ф орумах.

Контрольные вопросы

  1. Н ажатие ка ки х кл а в и ш (ка ко й кл а в и ш и ) переносит текстовы й курсор в начало стр о ки при вводе

ком анды в Bash?

A. C trl+ A .

Б. — .

B. C tr!+T.

Г.

і .

Д . C trl+ E .

К а ки м о б р а зо м м о ж н о перевести п р о гр а м м у в ф оновы й р е ж и м п р и за п уске и з об ол о чки?

(В ы берите все п о д хо д ящ ие в а р и а н ты .)

A. Запустить п р о гр а м м у, введ я s ta rt ко м а н д а , где ко м а н д а — это та ко м а н д а , которую вы

хотите запустить.

Б. Запустить пр ограм м у, введя bg ко м а нд а , гд е ко м а нд а — это та ко м а нд а , ко тор ую вы хотите

запустить.

B. Д о б а ви ть а м персанд & в конец ко м а н д ы .

Г.

За пустить п р о гр а м м у в о б ы ч н о м р е ж и м е , н а ж а в в о б о л о ч ке со четание кл а в и ш C trl+ Z .

Затем ввести в о б ол о чке bg.

Д . З а пусти ть п р о гр а м м у в о б ы ч н о м р е ж и м е , н а ж а в в о б о л о ч ке со четание кл а в и ш C tri+ Z .

З атем ввести в о б ол о чке fg.

Какая и з перечисл енны х ко м а н д является усо ве рш е н ствова н но й версией m ore?

A. дгер.

Б.

htm l.

B.

cat.

Г.

less.

Д . m an.

  1. И стина или л о ж ь : на ж а ти е сочетания кл а в и ш A !t+ F 2 в граф ической среде пр иве д е т к о ткры тию

ТП И-дисплея, ко то р ы м вы м о ж ете воспол ьзоваться д л я вхо д а в L inux.

Поиск дополнительной документации 167

  1. Истина или л о ж ь : вы м о ж ете заставить систему m an отобразить страницу m an из ко нкре тно го

раздела р уковод ства, ука за в в поиске по им е ни статьи но м е р раздела, на пр им е р , следую щ им

образом : man 5 passwd.

  1. Истина или л о ж ь: страниц ы in fo представлены в ф ормате, б азирую щ ем ся на веб-технологиях?

  2. Истина или л о ж ь: д о кум е н та ц и я по Linux в дереве каталогов /u sr/s h a re /d o c пр а кти ч ески всегда

в формате O penD ocum ent.

  1. Введите lo g o u t и л и ________________, чтобы за в е р ш и ть сессию терм инала.

К а ж д ы й д о ку м е н т в систем е стр а ниц іп Г о т а кж е известен к а к ________________.

К о м а н д а _______________ вы пол няет п о иск по базе д а нн ы х имен файлов, что позвол яет ей б ы ­

стро устанавливать, к а к и е им ена ф айлов соответствую т ука за н н о м у п о и с ко во м у запросу.

Глава 7 Работа с файлами и каталогами

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

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

□ Основы.

□ Навигация по файлам и каталогам.

□ Операции с файлами.

□ Работа с каталогами.

Основы

Как уже обсуждалось в главе 5, в операционной системе Linux используется унифи­ цированное дерево каталогов: каждый раздел, съемный диск, сетевой файловый об­ менник или любой другой диск либо устройство хранения файлов, подобное диску, доступны как отдельный каталог в едином дереве каталогов (или файловой системе).

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

Основы

169

Термином «файловая система» обо­

значаю т низкоуровневы е структуры

д ан ны х или м етод организации

файлов и каталогов на ком пьютере.

В этой главе терм ин встречается

чащ е всего во втором значении.

П ол ьзова те льские и с и с те м н ы е ф айлы

Чтобы понять различие между пользовательскими и системными файлами, вспом­ ните, что Linux — многопользовательская ОС. В теории на одном компьютере могут работать тысячи пользователей. На минутку представим себе такой компьютер: воз­ можно, это мейнфрейм в университете, большой коммерческий сервер или сервер облачных вычислений. Большинство пользователей не будут знакомы с деталями администрирования системы Linux, все, что им нужно, — возможность использования текстовых процессоров, клиентов электронной почты и других приложений. Пользо­ вателю не нужно иметь дело с системными файлами конфигурации. Более того, предоставление им доступа к таким файлам (особенно с правом записи) может быть катастрофической ошибкой. Среди тысячи пользователей, каждый из которых имеет доступ с правом изменения конфигурации системы, найдется хоть кто-нибудь, кто по незнанию или намеренно внесет изменение, которое выведет компьютер из строя. Конечно, проблемы, связанные с защитой компьютера от его пользователей, — это частный случай более общих проблем учетных записей пользователей. Вам, скорее всего, не захочется, чтобы пользователи могли читать и редактировать файлы друг друга (за исключением некоторых ситуаций). Как описано в главах 13 и 14, вы можете настроить права в свойствах файлов, чтобы предотвратить неав­ торизованный доступ к ним.

Системные файлы — это файлы, контролирующие работу компьютера. В эту

категорию попадают следующие файлы:

□ сценарии (скрипты) запуска системы, запускающие серверы и другие важные

фоновые процессы;

□ программные файлы — двоичные файлы и сценарии;

□ файлы поддержки программ, такие как шрифты и значки;

□ конфигурационные файлы, которые определяют, как работает система (настрой­ ки сетевой конфигурации, информация о структуре данных на диске и т. д.);

170 Глава 7. Работа с файлами и каталогами

□ конфигурационные файлы для большинства серверов и других фоновых про­

цессов;

□ хранилище данных для системных программ (например, база данных, описы­

вающая, какие программы установлены в системе);

□ файлы системного журнала, записывающие действия системы.

Очевидно, что пользователи без технических знаний не должны иметь доступа к системным файлам. (Файлы журналов хранят такие действия, как, например, попытки входа.) Пользователи должны иметь возможность считывать некоторые типы системных файлов, например используемые ими шрифты и значки, однако некоторые системные файлы должны быть защищены даже от доступа только для чтения. (В частности, пользователи не должны иметь возможность прочитать файл etc/shadow, так как в нем хранятся зашифрованные пароли.)

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

Сразу же после установки Linux большинство файлов, хранящихся на компьютере, относятся к системным фай­ лам, а большинство каталогов и подкаталогов — к систем­ ным каталогам. Некоторые каталоги, например /home и /tmp, выделены специально для пользовательских фай­ лов, хотя даже эти каталоги структурированы или кон­ фигурированы таким образом, чтобы предотвратить про­ блемы, вызванные многопользовательским доступом.

Д ом аш ние каталоги пользовате­

лей, как правило, размещаются

в каталоге /h orne , тогда как каталог

/tm p доступен всем пользователям

и хранит врем енны е файлы.

Различие между системными и пользовательскими файлами существует даже на компьютерах Linux с одним пользователем, например на вашем личном ноутбу­ ке. Это может показаться странным, в конце концов, если вы — единственный пользователь и у вас есть доступ суперпользователя, зачем вам вообще задумы­ ваться о различии системных и пользовательских файлов? Ответ в том, что это защитит от случайного или намеренного вреда (если опечатка, программная ошиб­ ка или вредоносная программа, скажем, удалит все файлы на компьютере). Вред можно предотвратить, если это действие выполняется от имени простого пользо-

Основы 171

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

С тандарт и е р а р хи и ф а й л о во й с и сте м ы

Несмотря на то что в каждом дистрибутиве Linux приняты собственные «правила игры», все разработчики Linux признают необходимость стандартизации струк­ туры каталогов. В частности, программы должны находить определенные систем­ ные файлы конфигурации в одних и тех же каталогах во всех дистрибутивах. Если бы этого не было, то программы стали бы сложнее и, возможно, не смогли бы работать на всех дистрибу­ тивах. Поэтому был создан Стандарт иерархии файло­ вой системы (Filesystem Hierarchy Standard, FHS). Кро­ ме Linux, некоторые U nix-подобные операционные системы также следуют стандарту FHS в той или иной степени.

Стандарт FHS эволюционировал,

для Linux в стандарт файловых

превратившись из стандарта только

систем (Filesystem Standard, FSSTND).

Стандарт FHS проводит четкое различие между файлами совместного доступа и файлами без совместного доступа. Файлы совместного доступа (пользовательские файлы данных и программные двоичные файлы) могут в разумных пределах пере­ носиться между компьютерами. (Конечно, вы не обязаны давать совместный доступ к таким файлам, но вы можете это сделать.) Если к файлу предоставлен совместный доступ, то, как правило, это делается через сервер NFS. Файлы без совместного до­ ступа содержат информацию о конкретной системе (например, файлы конфигу­ рации). Вам вряд ли захочется поделиться файлом с конфигурацией сервера с другими компьютерами.

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

Стандарт FHS пытается отнести каждый каталог в одну из ячеек этой матрицы 2 x 2 (совместный доступ/без совместного доступа * статичный/переменный) (это проиллюстрировано на рис. 7.1). Подкаталоги некоторых каталогов относятся к разным ячейкам, но в этом случае стандарт FHS пытается указать статус конкрет­ ного подкаталога. Например, каталог /ѵаг переменный, но содержит как подката­ логи с совместным доступом, так и без него (см. рис. 7.1).

172 Глава 7. Работа с файлами и каталогами

Совместный доступ

Без совм естного доступа

С татический

/usr /opt

/etc /boot

Переменный

/horne /var/mail

/var/run /var/lock

Рис. 7.1. Стандарт FHS пытается отнести каждый важный каталог в одну из ячеек этой матрицы 2 x 2

У стандарта FHS есть несколько версий. Версия 3.0 (последняя на момент на­ писания книги) была выпущена в июне 2015 года- www.linuxfoundation.org/collaborate/ workgroups/lsb/fhs.

В аж ны е ка та л о ги и их с о д е р ж и м о е

Стандарт FHS определяет имена и предназначения многих каталогов и подката­ логов системы Linux. В табл. 7.1 представлено большинство важных каталогов. В основном они системные, исключение — /horne, /tmp, /mnt и /media.

Ійблица 7.1. Важные каталоги Linux согласно стандарту FHS

Каталог

Предназначение

/

/etc

/boot

/bin

/sbin

/lib

Корневой каталог. Все файлы на компьютере находятся в этом каталоге или его подкаталогах

Содержит файлы конфигурации системы

Содержит важные загрузочные файлы, такие как ядро Linux, начальный RAM-диск и зачастую файлы конфигурации загрузчика ОС

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

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

Содержит библиотеки (код, используемый многими другими програм­ мами), важные для базовых системных операций

Основы

173

Каталог

Предназначение

/usr

/horne

/root

/ѵаг

/tmp

/mnt

/media

/dev

/run

Содержит программы и данные, используемые в работе системы, но не являющиеся необходимыми для ее загрузки. Этот каталог разбит на не­ сколько подкаталогов, частично повторяющих организацию корневого каталога: /usr/bin, /usr/sbin, /usr/lib и т. д.

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

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

Содержит различные нестатические файлы, такие как лог-файл (файл журнала) или файлы буфера печати. Подкаталог/var/tmp заслуживает особого внимания. Как и каталог /tmp (описан далее), /var/tmp содер­ жит временные файлы. Эти файлы не должны удаляться при переза­ грузке компьютера

Содержит временные файлы, в том числе файлы, созданные пользова­ тельскими программами. Теоретически эти файлы могут быть удалены при перезагрузке компьютера, но на практике многие дистрибутивы этого не делают

Традиционная точка монтирования съемных накопителей. Иногда подразделяется на несколько подкаталогов для каждой монтированной файловой системы

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

Содержит файлы устройств, предоставляющие низкоуровневый доступ к аппаратному обеспечению

Содержит информацию о запущенной системе

Как обычный пользователь вы будете создавать боль­ шинство файлов в домашнем каталоге, подкаталоге /home. Вы можете получать доступ к съемным мультимедийным устройствам в /media (или иногда в /run/media) и, воз­ можно, к сетевым ресурсам, монтированным где-либо еще. Вы также можете использовать /tmp и некоторые подкаталоги /ѵаг, хотя у болыпиства пользователей нет необходимости знать об этих каталогах: приложения обычно жестко запрограммированы использовать их для

О бы чны е пользователи не м о гу т

осущ ествлять запись в боль­

ш инстве систем ны х каталогов,

н априм ер /usr. Следовательно, вы

не см ож ете повред ить установку,

просто проверив содерж им ое этих

каталогов (если, п овто р им ся, вы

заш ли в систем у ка к обы чны й

пользователь).

174 Глава 7. Работа с файлами и каталогами

временных файлов или файлов специального типа, таких как файлы входящей электронной почты. Как системный администратор, вы можете работать со всеми файлами, расположенными в этих каталогах. Для системного администратора важ­ ность представляет каталог /etc, так как именно здесь расположены файлы конфи­ гурации системы. Во время изучения операционной системы с помощью графических или текстовых утилит держите в памяти эту структуру каталогов.

Некоторые каталоги требуют особого внимания.

□ Каталог конфигураций. В каталоге /etc находится большинство файлов кон­ фигурации системы. В предыдущих главах мы ссылались на некоторые такие файлы, например /etc/fstab (определяющий, где могут быть монтированы разделы) и /etc/passwd (основной файл определения учетной записи). Есть еще множество каталогов, в частности, вы можете обнаружить, что подкаталоги / etc хранят файлы конфигурации для сложных подсистем и серверов, такие как /etc/Xll (для системы X) и /etc/Samba (для файлового сервера Samba).

□ Исполняемые каталоги. Программные файлы расположены в основном в /sbin, /bin, /u sr/sb in и / u s r /bin. (Программныефайлы на некоторых системах могут также храниться в дополнительных каталогах. Яркий пример — /u s n /lo c a l/ sbin и /u sr/lo c a l/b in , где хранятся программы, скомпилированные локально.)

□ Каталоги библиотек. Библиот еки — это коллекции программных функций, которые могут использоваться во многих программах. Для экономии дискового пространства и оперативной памяти при запуске программ эти функции хранят­ ся в разных файлах. Более того, это позволяет легко обновить файлы библиотек без переустановки всех программ, использующих их. В Linux большинство би­ блиотек находятся в каталогах / ІіЬ и /u s r /lib , впрочем, на некоторых системах библиотеки могут находиться и в других каталогах (например, /u sn /lo c a l/lib ).

Если у вас есть опыт администрирования Windows, то вы должны знать о важ­ ном различии между Windows и Linux: в Windows очень часто двоичный файл программы, ее файлы конфигурации и все поддерживающие файлы хранятся в едином дереве каталогов, принадлежащем этой программе, например С: \Program Рі1е5\некая_программа. В Linux большинство основных файлов программы на­ ходятся в стандартных каталогах, использующихся другими программами и рас­ пределенных по пространству диска. Например, исполняемый файл программы может находиться в /u sr/b in , связанные библиотеки — в /u s r /lib , файлы конфи­ гурации — в / e tc или домашних каталогах пользователя. Система управления пакетами Linux, описываемая в главе 9, отслеживает, в какие каталоги распреде­ ляются файлы из пакета, что позволяет быстро и легко удалить или обновить пакет. У Linux также есть преимущества упрощения пути, то есть списка каталогов, в которых находятся файлы программ. (Пути также существуют для библиотек

Навигация по файлам и каталогам

175

и страниц справочника man.) Однако если вы привыкли искать файлы в отдельных папках программ, то привыкнуть к Linux будет непросто. Ключ ко всему — исполь­ зование системы пакетов для поиска местоположения файлов пакета, в частности ввод команды rpm -ql некая_программа покажет, где находится каждый файл па­ кета некая_программа в системе RPM.

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

П олучение с п и с к о в ф айлов

Чтобы работать с файлами, надо знать, где они расположены. Команда Is (сокра­ щение от англ, list — «список») предоставляет эту информацию, отображая на экране имена файлов, хранящихся в каталоге. Если вы не передадите команде никаких параметров, то она отобразит файлы в текущем каталоге. Однако вы мо­ жете не только передать команде параметры, ной указать файл или каталог. Данная команда поддерживает огромное количество параметров, для получения дополни­ тельной информации обратитесь к соответствующей странице man. В табл. 7.2 при­ ведены основные параметры команды Is.

Таблица 7.2. Основные параметры команды Is

Параметр (длинная форма)

Параметр (краткая форма)

Описание

-all

Обычно команда Is пропускает файлы, имена которых начинаются с точки (.). Файлы с точками (также называемые дот-файлами и скрытыми файлами) — это зачастую файлы конфигурации, не представляющие никакого интереса. Добавление этого параметра ото­ бразит файлы с точками

Продолжение

176 Глава 7. Работа с файлами и каталогами

Таблица 7 .2 (продолжение)

П ар ам етр (д л и н н ая ф о р м а )

П ар ам етр (к р атк ая ф о р м а )

О п и са н и е

-color

Неприменимо

-directory

-d

Неприменимо

-1

-classify

-recursive

-F

-R

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

Обычно если вы вводите в качестве пара­ метра имя каталога, команда Is отображает содержимое этого каталога. То же самое происходит, если имя каталога совпадает с метасимволом. Добавление этого параметра приведет к изменению поведения коман­ ды и отображению только имени каталога, что иногда предпочтительнее

Обычно команда Is отображает только имена файлов. Параметр -1 (латинская буква L в ниж­ нем регистре) создает длинный список, включа­ ющий также информацию о файлах, например строки права доступа к файлу, информацию о владельце, группе, размере и дате создания

Этот параметр прибавляет код индикатора к концу каждого имени; таким образом, вы знаете, какого типа файл находится перед вами

Параметр -Яили —recursive приводит к рекурсивному отображению содержимого каталога: если в целевом каталоге есть подка­ талог, команда Is отобразит файлы целевого каталога и файлы подкаталога внутри него. Если в каталоге содержится много подката­ логов, то список может получиться большим

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

$ Is -F /usr /bin/ls / b in /ls

/u s r:

Навигация по файлам и каталогам

177

X11R6/ Ы п /

games/ i386-glibc20-linux/

i486-linux-libc5/

include/ lib/

libexec/

i586-mandrake-linux/

local/

doc/

etc /

src/ tmp@

man/ merge@ sbin/

share/

Знак «собака» на конце (@) означает

Этот вывод показывает и программный файл / Ы п / Is, и содержимое каталога /u sr. Каталог содержит в ос­ новном подкаталоги, обозначаемые символом «слеш» (/) на конце при использовании -р. По умолчанию коман­ да Is создает списки, сортируемые по имени файла, как показано в этом примере. Заметим, однако, что символы верхнего регистра (как в X11R6) всегда предшествуют символам нижнего регистра (как в bin).

сим вольную ссылку, то есть файл,

указы ваю щ ий на другой файл.

Один из наиболее часто встречающихся параметров команды Is — это 1, созда­

ющий списки наподобие следующего:

$

I s

  • 1

t *

xr-x

— r— -r–

— r—

1

1 1

rich

rich rich

rich

rich rich

111 176322 1838045

1 rich

rich

3265021

Apr

Dec Apr

Apr

13 16 24

22

13:48 09:34 18:52

test thttpd-2.20 b-1.i 686.rpm tomsrtbt-1.7.269.tar.gz

23:46

tripwire.rpm

Этот вывод включает строки права доступа (напри­ мер, -rwxr-xr-x), прав владения (владелец rich и груп­ па rich для всех файлов), размеры файлов и даты соз­ дания, а также имена файлов.

В главе 14 эти темы обсуждаются

детально.

И зм енение ка та л о го в

Команда cd изменяет каталог, в котором вы работаете в настоящее время. Для большинства программ не имеет значения, в каком каталоге вы работаете, но это существенно, когда вы начинаете ссылаться на файлы. Как описано в подразделе «Абсолютные и относительные ссылки на файлы» далее, некоторые типы ссылок также зависят от рабочего каталога.

При изменении рабочего каталога может поменяться приглашение оболочки (в зависимости от настроек ва­ шего дистрибутива), например, следующим образом:

$ cd /usr/bin

$

В это й к н и ге при отображ ении

ко м а нд м ы сокращ аем больш ую

часть приглаш ений оболочки до

единственного сим вола $.

При использовании настроек по умолчанию многие

дистрибутивы отображают только последнюю часть рабочего каталога, напри­ мер Ып, а не /usr/bin, как в предыдущем примере. Если вам нужно знать полный путь рабочего каталога, воспользуйтесь командой pwd:

178 Глава 7. Работа с файлами и каталогами

$ pwd

/ u s r / b i n

В Linux слеш ( /) используется как разделитель каталогов. Если вы знакомы с Windows, то, наверное, знаете, что в этой операционной системе для данных целей применяется обратный слеш (). Не путайте эти два символа! В Linux обратный слеш используется как кавычка или знак перехода, позволяющий вводить символы, которые было бы трудно указать иным образом (например, пробелы, являющиеся частью имени файла). Также обратите внимание, что по этой же причине слеш является недопустимым символом в именах файлов Linux.

А б с о л ю тн ы е и о тн о си те л ь н ы е с с ы л к и на ф айлы

Не путайте корневой каталог (/)

с каталогом /roo t, являю щ имся

д ом а ш н и м каталогом суперполь­

Как описано главе 5, в Linux используется унифициро­ ванное дерево каталогов; это означает, что все файлы находятся в едином корневом каталоге, на который ссы­ лаются с помощью слеша (/). Если ваш диск состоит из нескольких разделов, один из них становится корневой файловой системой, а все остальные монтируются в не­ коем каталоге внутри общего дерева каталогов. То же самое происходит и при монтировании Flash-накопителя, DVD или съемного дис­ кового устройства. Результат может походить на рис. 7.2, на котором показаны набор каталогов типичной установки Linux, а также пара съемных мультимедийных устройств. Чаще всего съемные мультимедийные устройства появляются в под­ каталогах каталога /media, однако в некоторых дистрибутивах Linux отдается предпочтение каталогу /run/media. Большинство подкаталогов могут составлять отдельные разделы или даже помещены на отдельные диски.

зователя.

На рис. 7.2 каталог /horne находится в собственном разделе, однако доступ к нему осуществляется таким же образом, как если бы он был частью корневого (/) раздела.

Существует три способа создания ссылок на файлы.

□ Абсолютные ссылки. Создаются относительно корневого ( /) каталога, напри­ мер /home / f гей/файл, t x t для ссылки на файл файл- t x t в домашнем каталоге пользователя fred. Такие ссылки начинаются со слеша (/).

□ Ссылки домашнего каталога. Тильда ( ~) ссылается на домашний каталог поль­ зователя. Если имя файла начинается с этого символа, значит, им был замещен путь до домашнего каталога пользователя. Таким образом, ~/afifl.txt будет за­ дано значение «4 июля 2016 года». Вы можете добиться того же самого эффек­ та, воспользовавшись командой -t [ [CC]YY]MMDDhhmm[ .s s ] , где [ [ СС] W] MMDDhhmm[ .ss] — это дата и время в специальном числовом формате, например 201607041223 для обозначения 12:23 4 июля 2016 года.

Чтобы получить информацию о других функциях программы touch, восполь­

зуйтесь соответствующей страницей справочника man.

182 Глава 7. Работа с файлами и каталогами

К о п и р о ва н и е ф айлов

Если вы работаете в ТПИ-оболочке, команда ср копирует файл (сокращение от англ, сору — «копировать»). Вы можете воспользоваться этой командой тремя способами: передать ей имя файла источника и имя целевого файла, имя каталога назначения или оба параметра. В табл. 7.3 приведены примеры.

Таблица 7 .3 . Примеры использования команды ср

Пример команды

Эффект

ср исходны йіхі H O B b m .tx t

Копирует файл исходныйТхі в новый-txt в текущем каталоге

ср HcxoflHbift.txt /д р уго й к ат

Копирует файл исходный.txt в каталог /другой_кат, копии будет присвое­ но имя И СХ О Д Н Ы Й -tX t

ср исходный.txt /другой кат/новы йіхі Копирует файл исходный-txt

в каталог /другой кат, копии будет присвое­ но ИМЯ НОВЫЙ-tXt

Несмотря на то что имена файлов в примере предполагают, что исходный файл находится в рабочем каталоге, это вовсе не обязательно. Строка исходный. tx t могла бы включать указание каталога, например /e t c /f s t a b или . . / a f i l e . t x t . Важный момент — понять, каким образом указывается имя це- левогофайла. В некоторых случаях это может оказаться неочевидным, так как спецификации файлов и каталогов очень похожи. В качестве примера рассмотрим следую­ щую команду:

Если в конце им ени каталога вы

поставите слеш ( /), наприм ер

-/p u b lic a tio n /, програм м а ср выве­

дет на печать сообщение об ошибке,

$ ср outline.pdf -/publication

Выполнение этой команды может привести к следу­

ющим результатам:

если -/p u b lic a tio n не существует

или является обы чны м файлом.

□ если -/p u b lica tio n — это каталог, то созданный в результате файл будет назван

-/p u b lic a tio n /o u tlin e . pdf;

□ если -/p u b lica tio n — это файл, то в результате содержимое этого файла будет

заменено на содержимое файла ou tline.p df;

□ если - /p u b lic a t io n не существует, то результатом выполнения команды будет новый файл с именем -/p u b lic a tio n , идентичный исходному файлу o u tlin e .p d f.

Операции с файлами 183

Чтобы получить нужные результаты, придется постараться, если вы новичок в копировании файлов с помощью командной строки. Мы рекомендуем вам по­ экспериментировать, создав тестовый каталог с помощью команды mkdir (см. под­ раздел «Создание каталогов» раздела «Работа с каталогами» текущей главы) и подкаталоги в нем, а затем копируя файлы в тестовое дерево каталогов, применяя все способы ссылок на файлы. (В подобных ситуациях программа touch может использоваться для создания тестовых файлов.)

Для команды ср реализовано множество параметров, модифицирующих ее поведение. Некоторые параметры позволяют изменить алгоритм выполнения команды.

□ Принудительная перезапись. Параметр - f или - -fo r c e заставляет систему переписать любой существующий файл без запроса подтверждения действия.

□ Использование интерактивного режима. Параметр - і или - - in te r a c tiv e ука­ зывает команде ср вывести запрос подтверждения перезаписи любых существу­ ющих файлов.

□ Сохранение прав доступа и владения. Обычно пользователь, запускающий команду ср, владеет копированным файлом и использует права доступа своей учетной записи по умолчанию. Параметр -р или - -preserve по возможности сохраняет права владения и доступа.

□ Выполнить рекурсивное копирование. При использовании параметра -R или

    • recursive и указании каталога в качестве источника копируется весь каталог, включая хранящиеся в нем подкаталоги. Несмотря на то что параметр - г также выполняет рекурсивное копирование, поведение этой команды с файлами, от­ личающимися от обычных файлов и каталогов, не задокументировано. В боль­ шинстве версий команды ср параметр -г используется как синоним параметра -R, однако его поведение не гарантировано.

□ Выполнить архивное копирование. Параметр -а или - -archive похож на -R, но эта команда также сохраняет права владения и копирует ссылки «как есть». Параметр -R копирует файлы в указанную символьную точку, а не в сами сим­ вольные ссылки. (Более детально ссылки описаны в подразделе «Использова­ ние ссылок».)

□ Выполнить копирование с обновлением. Параметр - і или - -in te r a c tiv e ука­ зывает команде ср скопировать файл, только если исходный файл новее целе­ вого или если целевой файл не существует.

Этот список параметров команды ср далеко не полный. Обратитесь к странице справочника man, посвященной команде ср, для получения информации о допол­ нительных параметрах команды ср.

184 Глава 7. Работа с файлами и каталогами

П е р е м е щ е н и е и п е р е и м е н о в а н и е ф айлов

В ТПИ-оболочке команда mv применяется как для перемещения, так и для переиме­ нования файлов и каталогов. Используют ее точно так же, как и команду ср, напри­ мер, если вам нужно переместить файл o u tlin e .p d f в каталог ~/pu b lication, вве­ дите следующую команду:

$ mv outline.pdf -/publication

Если вы укажете имя файла и целевой каталог, то файл будет переименован при перемещении. Если вы укажете имя файла и целевой каталог, но при этом целевой каталог будет совпадать с исходным, то файл будет переименован без перемещения. Иными словами, результаты выполнения команды mv аналогичны результатам ко­ манды ср с той лишь разницей, что новый файл заменяет, а не дополняет исходный.

«За кадром» команда mv выполняет следующие операции:

□ если исходный файл, или каталог и целевой файл, или каталог находятся в одной файловой системе, то команда mv перезаписывает их без выполнения ре­ ального перемещения данных, хранящихся в файле;

□ при перемещении файла из одной файловой системы в другую команда mv копирует файл, а затем удаляет исходный файл.

В Linux команда m v используется

д л я переим енования файлов,

так как обе операции идентичны,

когда исходный и целевой каталоги

совпадают.

Команда mv принимает многие параметры, принимаемые командой ср; из при­ веденного списка к команде mv неприменимы только параметры –p r e se r v e , –recu rsiv e и –archive.

И сп о л ьзо ва н и е с с ы л о к

Иногда удобно ссылаться на один файл, используя несколько имен. Вместо того чтобы создавать несколько копий файла, вы можете создать несколько ссылок на один файл. Linux поддерживает два типа ссылок, они создаются с помощью команды In.

□ Жесткая ссылка. Такая ссылка является дубликатом элемента каталога. Оба элемента указывают на один и тот же файл. Поскольку ссылки работают за счет связывания низкоуровневых структур данных файловой системы, жесткие ссылки могут существовать только в рамках одной файловой системы. В случае с жесткой ссылкой ни одно имя файла не имеет приоритета перед другим: обе ссылки связаны непосредственно со структурами данных и данными файла. Чтобы создать жесткую ссылку, введите команду In исходное_имя имя_ссылки, где исходнов_имя — это исходное имя, а имя_ссылки — имя новой ссылки.

Операции с файлами

185

□ Символьная ссылка. Символьная ссылка (или мягкая ссылка) является файлом, который ссылается на другой файл по имени (то есть файл содержит имя другого файла); когда вы инструктируете программу считать или записать файл символьной ссылки, Linux перенаправляет доступ к исходному файлу. Поскольку символьные ссылки работают по имени файла, они могут пересечь границы файловой си­ стемы. Чтобы создать символьную ссылку, введите команду ln -s исходное_имя имя_ссылки.

кам на Рабочем столе W indow s.

С имвольные ссылки подобны ярлы ­

Вы можете распознать ссылки в длинных листингах каталога (созданных с по­ мощью параметра -1 для команды Is) несколькими способами. Следующий пример иллюстрирует это утверждение:

$ In report.odt hardlink.odt $ In -s report.odt softlin k .od t $ Is -1 to ta l 192 2 -rw -r-r- -rw -r-r- 2 lrwxrwxrwx 1

rod users 94720 3an 1011:53 hardlink.odt 94720 3an rod users 10 3an rod users

1011:53 report.odt 1011:54 s o ftlin k .o d t -> report.odt

Этот пример начинается с единственного файла report.odt. Первые две команды создают две ссылки: жесткую ссылку (hardlink.odt) и символьную (so ftlin k .o d t). Ввод команды Is -1 отображает все три файла. Исходный файл и жесткая ссылка могут быть идентифицированы по наличию значения 2 во втором столбце вывода команды Is -1: этот столбец показывает количество записей имени файла, которые указывают на файл. Таким образом, значение больше 1 указывает на наличие жесткой ссылки. Символьная ссылка обозначена буквой 1 (строчная буква L) — первый сим­ вол строки прав доступафайла so ftlin k .o d t (lrwxrwxrwx). Крометого, спецификация имени файла символьной ссылки включает явный указатель на связанный файл.

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

186 Глава 7. Работа с файлами и каталогами

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

Если вы хотите создать ссылку на каталог, как правило, вы можете решить эту задачу только с использованием символьных ссылок. Жесткие ссылки между ка­ талогами потенциально опасны с точки зрения низкоуровневых структур данных файловой системы, поэтому утилита In разрешает создавать такие ссылки только суперпользователю. Но даже в этом случае большинство файловых систем не до­ пускает жесткие ссылки между каталогами, и на деле даже суперпользователь, как правило, не может создавать такие ссылки. Заметим, однако, что символьные ссылки на каталог может создавать любой пользователь.

В установках Linux ссылки (главным образом символьные) используют на раз­ личных участках файловой системы. Например, системные сценарии запуска часто называются по символьным ссылкам, расположенным в каталогах, которые специ­ ально выделены для конкретных условий запуска и обозначены термином runlevel (уровни запуска). Тема управления уровнями запуска выходит за рамки этой книги.

У д аление ф айлов

Команда гш удаляет файлы в ТПИ-оболочке. Вам не­ обходимо передать этой команде имя одного или не­ скольких файлов:

$ rm outline.pdf o u tlin e .tx t

И м я ком анды rm — эта сокращ у н м

от английского слова rem ove—

«удалить».

Этот пример удаляет два файла: o u tlin e .p d f и o u t­

lin e .tx t. Если вы хотите удалить все дерево каталогов, можете передать команде пп параметр -г, -R или - -recursive вместе с именем каталога:

$ rm -г o ld stu ff/

Операции с файлами

187

Параметр -і указывает команде гш запрашивать под­ тверждение, прежде чем удалить файл. Это полезная мера безопасности. Вы можете использовать пара­ метр -f (–fo rce), чтобы переопределить эту установку, если параметр - і настроен по умолчанию.

Существуют несколько других параметров коман­

Иногда в некоторы х дистрибутивах

парам етр - і вклю чается по ум олча­

н ию д л я суперпользователя, н о не

д л я о б ы ч н ы х пользователей.

ды rm. Обратитесь к соответствующей странице справочника man, чтобы узнать о них.

Важно понимать, что для команды rm не реализована функциональность, ана­ логичная «Корзине» файлового менеджера. Как только вы удаляете файл с помо­ щью команды rm, он удаляется насовсем и вы не сможете восстановить его, кроме как с помощью низкоуровневых инструментов файловой системы (эта тема в дан­ ной книге не рассматривается). Вы должны быть осторожны при использовании команды г m и еще более осторожны, применяя команду с параметром -г и ли от име­ ни суперпользователя!

П од ста но вочн ы е знаки

Подстановочный знак — это символ или набор символов, используемых вместо других символов. Вы можете применять подстановочные знаки для ссылки на файлы. (Использование подстановочных знаков иногда называется подстановкой.) В Linux часто используются три класса подстановочных знаков.

□ Вопросительный знак (?). Заменяет один символ. Так, запись b??к соответ­ ствует book, balk, buck или любому другому четырехсимвольному имени файла, начинающемуся с символа b и заканчивающемуся на к.

□ Звездочка (). Соответствует любому символу или набору символов, в том числе отсутствию символов. Например, запись bk соответствует book, balk, buck (точно так же, как и запись b ??к). Однако запись b*k соответствует и таким именам файлов, как bk, bkk и backtrack.

□ Значения в квадратных скобках. Символы, заключенные в квадратные скоб­ ки [], какправило, соответствуют любому символу из набора. Так, запись Ь[ао] [Іо] к соответствует balk и book, но не buck. Можно указать диапазон значений, например, запись Ь[ а - г ] ск соответствует back, buck и другим четырехсимволь­ ным именам этого формата, второй символ которых — латинская буква ниж­ него регистра. Такая запись отличается от записи b?ck тем, что Linux чувстви­ тельна к регистру имен, а поскольку ? соответствует любому символу (не только букве), запись b[a-z]ck не соответствует именам ЬАск или ЬЗск, тогда как за­ пись b?ck соответствует обоим именам.

188 Глава 7. Работа с файлами и каталогами

Подстановочные знаки используются в оболочке и передаются вызываемым командам. Например, если вы введете команду I s b ? ? c k (так как этот подстано­ вочный знак соответствует трем именам файлов b ook , b a lk , b u c k ), результат будет таким же, как результат выполнения команды I s b ook b a lk buck.

To, каким образом оболочка Bash раскрывает подстановочные знаки, может привести к неожиданным, а иногда и к нежелательным последствиям. Предполо­ жим, вы хотите скопировать два файла, указываете их имена с помощью подстано­ вочных знаков, но забываете обозначить целевой каталог. В этом случае команда ср интерпретирует введенную вами команду как запрос на перезапись первого файла поверх второго.

Ч ув ств и те л ьн о сть к р е ги с тр у

Собственные файловые системы Linux чувствительны к регистру: файлы, чьи имена отличаются только регистром использованных букв, — это разные ф ай­ лы. Например, водном каталоге могут находиться файлы с именами a f i l e . t x t , A f i l e . t x t и A F IL E .T X T и каждый из них — отдельный файл. Следовательно, когда вводите и м я файла, вы должны учитывать регистр (если и м я файла a f I l e . t x t , а вы укажете A f i l e . t x t , то программа, которую вы используете, сообщит вам, что файл не существует).

Иерархическая файловая система

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

Apple HFS + поддерж ивает и чув­

ствительные и нечувствительные

зует нечувствительны й к регистру

к регистру варианты. Apple исполь­

реж и м по ум олчанию .

Чувствительность к регистру — прежде всего функция файловой системы, а не операционной системы. При получении доступа к файловой системе не-Linux (на съемном диске, в разделе не-Linux на компьютере с двойной загрузкой или при использовании сетевой файловой системы) вы можете обнаружить, что применя­ ются правила, нечувствительные к регистру. Такое развитие событий особенно вероятно при доступе к томам FAT или NTFS, которые распространены на ком­ пьютерах Windows, внешних жестких дисках и USB-flash-накопителях. Дальше все усложняется: во многих программах Linux, например Bash, чувствительность

Работа с каталогами

189

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

Обычно чувствительность к регистру может создать немало проблем, особенно если вы используете ГПИ-программы, которые позволяют щелкать кнопкой мыши и выбирать файлы. Вы должны помнить об этом при копировании файлов или ка­ талогов в FAT, NTFS, HFS + или другие нечувствительные к регистру файловые системы. Если каталог, который вы скопируете, содержит файлы с именами, отли­ чающимися только регистром, в результате на диск попадет только один из файлов.

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

С оздание ка та л о го в

Для создания каталога можно применить команду mkdir. Обычно при использова­ нии этой команды нужно вводить имя одного или нескольких каталогов после команды:

$ m k d ir n e w d ir

$ m k d ir d ir o n e n e w d ir / d ir t w o

В первом примере создается всего один новый каталог — newdir, который будет размещен в текущем каталоге. Во втором примере создаются два новых каталога — dirone и newdir/dirtwo (mkdir создает каталог dirtwo в каталоге newdir, который создан предыдущей командой).

В большинстве случаев вы будете использовать ко­ манду mkdir без каких-либо дополнительных параме­ тров, кроме имени файла, однако вы можете изменить поведение этой команды несколькими способами. □ Установка режима. Параметр -m mode или -mode=mode позволяет задать новому каталогу необходимый

В главе 6 приводится информация

о том, как указать каталог, отлича­

ю щ ийся от текущего рабочего катало­

га, и как изм енить текущ ий рабочий

каталог с пом ощ ью ком анды cd.

190 Гпава 7. Работа с файлами и каталогами

режим доступа, выраженный числом восьмеричной системы счисления (см. главу 14).

□ Создание родительских каталогов. Обычно при указании определенного ка­ талога внутри несуществующего каталога команда mkdir выводит сообщение об ошибке No such f i l e or d irectory и не создает каталог. Так, при вводе коман­ ды mkdir fir s t/s e c o n d выводится сообщение об ошибке, если каталог f i r s t не существует, однако ввод команды mkdir -р fir st/se c o n d создаст оба каталога — f i r s t и вложенный в него подкаталог second.

У даление ка тал огов

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

$ rmdir dirone $ rmdir newdir/dirtwo newdir

В этих примерах удаляются три каталога, созданные ранее в примерах исполь­ зования команды mkdir. Как и команда mkdir, команда rmdir поддерживает не­ сколько параметров; самые важные из них позволяют решать следующие задачи.

□ Игнорировать ошибки и непустые каталоги. Обычно если каталог содержит файлы или другие каталоги, команда rmdir не удаляет его, а возвращает сообще­ ние об ошибке. С параметром –ignore-fail-on-non-em pty команда rmdir все равно не удалит каталог, но сообщение об ошибке выведено не будет.

□ Удаление дерева. Параметр -р или –parents указывает команде rmdir удалить все дерево каталогов. Команда rmdir -р newdir/dirtwo удалит подкаталог newdir/dirtwo, а затем и каталог newdir.

Команда rmdir может удалять только пустые каталоги; если каталог содержит какой-либо файл, команда не выполняется. (Однако вы можете использовать па­ раметр -р, чтобы удалить ряд вложенных каталогов, если ни один из них не содер­ жит файлов вне каталогов.) Конечно, в реальной жизни вам, вероятно, потребует­ ся удалять деревья каталогов, содержащих файлы. Для этого используйте команду rm, описанную в разделе «Удаление файлов», с параметром -г (-R или –recurisve):

$ rm -г newdir

Команда rm удаляет каталог newdir и любые файлы или подкаталоги, которые он содержит. Это делает команду rm с параметром -г потенциально опасной, поэто­ му будьте осторожны.

Работа с каталогами

191

СРЕДСТВА БЕЗОПАСНОСТИ LINUX———————————————————————————

Когда вы входите в систему как обычный пользователь, вы можете случайно удалить соб­ ственные файлы, если допустите ошибку при использовании команды гш или других ко­ манд. Но самой установке Linux серьезного ущерба вы не нанесете. Unix был разработан как многопользовательская ОС с многопользовательскими средствами защиты, а так как Linux — клон Unix, то система Linux унаследовала эти средства защиты (среди прочих — права владения и доступ к файлам). Вы можете удалить только собственные файлы; если быть более точными — вы способны удалить файлы, только если у вас есть разрешение на запись в каталогах, в которых эти файлы расположены. Такой доступ открыт к вашему собственному корневому каталогу, но не к каталогам, содержащим системные файлы Linux. Так что повредить их вы не сможете.

В главе 13 эта тема рассмотрена подробнее, из нее вы также узнаете, как получить полно­ мочия администратора. Однако вместе с полномочиями растет риск повредить систем­ ные файлы Linux, поэтому пользуйтесь этими полномочиями только при необходимости.

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

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

□ вы можете использовать команду touch, чтобы обновить штампы времени ката­ лога, однако вы не можете использовать touch, чтобы создать каталог (для этих целей применяется mkdir);

□ вы можете применить команду ср, чтобы скопировать каталог, однако чтобы скопировать каталог со всем его содержимым, нужно воспользоваться парамет­ рами -г, -R, —recursive, -а или —archive;

□ вы можете использовать команду шѵ, чтобы переместить или переименовать

каталог;

□ вы можете применять команду In с параметром -s, чтобы создать символьную ссылку на каталог. При этом ни одна из популярных файловых систем Linux не поддерживает жесткие ссылки на каталоги.

Предположим, что в корневом каталоге есть каталог Music/Satchmo1, который содержит музыкальные файлы с песнями Луи Армстронга. Вы хотите реорганизовать этот каталог так, чтобы файлы появились под фамилией исполнителя, а не под его прозвищем, но при этом вы хотите сохранить доступ к файлам и «по прозвищу»

i

Satchmo (Сачмо) — прозвище исполнителя Луи Армстронга.

192 Глава 7. Работа с файлами и каталогами

Satchmo, так как ваши аудиоплееры ссылаются на эти файлы именно так. Чтобы достигнуть этой цели, можно ввести следующие команды:

$ cd -/Music $ mv Satchmo Armstrong

$ In -s Armstrong Satchmo

Вы также можете опустить первую команду и определить полный путь к каж­ дому из каталогов или ссылок в командах mv и In. Первые две команды переиме­ новывают каталог ~/Music/Satchmo в -/Music/Armstrong. Последняя команда создает символьную ссылку -/Music/Satchmo, указывающую на ~/Music/Armstrong.

О С Н О В Ы И НЕ Т О Л Ь К О

Значительная часть вашей работы на ком пью тере — это управление файлами. Следовательно, вы

д о л ж н ы знать основны е инструменты управл ениям и ф айлами в Linux. Эти инструм енты вклю чаю т

в себя ком анды для создания, удаления, копирования, перем ещ ения и переим енования файлов,а так­

ж е для создания ссылок на файлы. Каталоги в L in u x — это файлы, содерж ащ ие д р угие файлы, поэтому

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

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

Упражнения

Создайте файл с п о м о щ ь ю touch (или д р уго й п р о гр а м м ы ), а затем по пр а ктикуй те сь, копируя

его с п о м о щ ь ю ср, пе р е им е но вы ва я с п о м о щ ь ю m v, пе р е м е щ а я в д р уго й ка тал о г с п о м о щ ь ю

m v и удаляя с п о м о щ ь ю rm.

Создайте каталог с п о м о щ ь ю m kd ir и по пр а кти куй те сь в и с п о л ьзо ва нии ко м а н д ср, m v и rm (так

ж е ка к с ф айлами). П опробуйте скоп ир о в ать в него ф айлы, а зате м уд ал ить катал ог с п о м о щ ь ю

rm d ir и rm . Сработали ли обе ком анд ы ?

Контрольные вопросы

К а кую и з с л е д у ю щ и х к о м а н д н е о б х о д и м о в в е сти , чтобы п е р е и м е н о в а т ь файл n e w file .tx t

B a file .tx t?

A. m v n e w file .tx ta file .tx t.

Б.

c p n e w file .tx ta file .tx t.

B.

In n e w file .tx ta file .tx t.

Г.

r n n e w file .tx ta file .tx t.

Д .

to u c h n e w file .tx ta file .tx t.

  1. Вы хотите скоп ир о вать катал ог M yF ile s на fla s h -н а ко п и те л ь , на ко то р о м используется файловая

систем а FAT. Каталог M yFiles сод ерж ит следую щ ие файлы:

Работа с каталогами

193

$ Is -1 МуFiles/ total 276 -rw-r-r- 1 jen users 129840 Nov 815:13 contract.odt -rw-r-r- 1 rod users 42667 Nov 815:12 outline.pdf -rw-r-r- 1 sam users 105979 Nov 815:12 Outline.PDF

Flash-н акоп ите л ь м о н ти р о в а н к а к /m e d ia /u s b , следовательно, вы м о ж е те ввести к о м а н д у с р -а М у -

F iles/m edia/usb. С ка ко й пр о б л ем о й вы столкнетесь п р и по п ы тке ско п и р о ва ть э ти файлы?

A, В ы полнение ко м а н д ы заве р ш ится неудачей, т а к ка к ко м а н д а пы тается создать ссылки.

Б.

Каталог MyF і Іезбудетскопирован, но ни один изфайлов, хранящихся в нем, скопирован небудет.

B. На fla s h -накопител е будет нед оставать од но го файла.

Г.

И мя одного файла будет изм е н е н о при ко п и р о в а н и и .

Д.

Команда сработает ко р р е ктн о .

  1. Вы вводите ко м а нд у m kd ir o n e /tw o /th re e и получаете сообщ ение об о ш иб ке No such f i le or directory.

Что м ож но сделать, чтобы реш ить эту проблему? (Выберите все подходящ ие варианты.)

A. Д о ба вить парам етр - p a re n ts к ко м а н д е m kdir.

Б. Запустить три отдельные ком анды m kdir; m kd ir one, m kd ir o n e /tw o и затем m kdir o n e /tw o /th re e .

B. Ввести touch /b in /m k d ir, чтобы уд остовериться, что файл п р о гр а м м ы m k d ir существует.

Г.

Ввести ко м а н д у rm d ir one, чтобы уд ал ить базу н о во го д ерева каталогов, которая меш ает.

Д. Ввести ко м а н д у rm -г, чтобы полностью удалить все м е ш аю щ ее д е р ево каталогов.

  1. Истина или л о ж ь ; вы м о ж ете создать си м вол ьную ссы лку и з о д н о й н и зко у р о в н е в о й ф айловой

системы в д р угую .

  1. Истина или л о ж ь : вы запросто м о ж е т е по вр е д и ть свою уста н овку Linux, д о п ус ти в о пе ч а тку при

вво д е ко м а н д ы rm , если за ш л и в систем у к а к о б ы чны й пользователь.

  1. Истина или л о ж ь: вы м о ж е т е у с та н о в и т ь ш там пы вр е м ен и каталога с п о м о щ ь ю ко м а н д ы touch.

7 . Вы хотите ско п и р о в а ть файл o r ig file .tx t в ка тал о г backups, но файл с и м е н е м o r ig file .tx t у ж е су­

щ ествует в каталоге backups. Вы хотите п р о д о л ж и ть ко пир о ва ние , тол ько если файл в исход ном

каталоге новее того, что находится в каталоге backups. К ом анд а, что б ы в ы п ол н ить это действие,

вы гл яд и т сл ед ую щ им о б ра зо м : с р _______________ o rig file .tx t backups/.

  1. Вы ввели ко м а н д у rm d ir ju n k , чтобы удалить каталог ju n k , од на ко вы п ол н е ние этой ко м а нд ы

заверш ил ось неудачей, та к к а к в каталоге ju n k находится не ско л ько ф айлов текстового пр о ­

цессора. К а кую ко м а н д у вы м о ж ете ввести, чтобы все-таки в ы п о л н и ть э ту о п е р а ц и ю ?

Какой сим вол по д ста но вки соответствует л ю б о м у си м вол у в и м е н и файла?

Какой каталог сод ерж ит в о сн овн о м файлы ко нф игур а ц ии системы?

Глава 8 Поиск, извлечение и архивация данных

Важной функцией любой операционной системы, включая Linux, является работа с данными — хранение, управление и анализ. Вы должны уметь искать, извлекать и защищать данные должным образом. Эта глава посвящена инструментам, пред­ назначенным для поиска, извлечения и архивации данных.

Начнем со знакомства с регулярными выражениями, которые позволяют описывать шаблоны для поиска в файлах. Вы можете использовать их в сочетании со многими командами, две из которых (fin d и grep) будут описаны подробно. В этой главе так­ же рассматриваются инструменты, с помощью которых можно перенаправлять ввод и вывод программ, что бывает полезно во многих ситуациях. В завершение представ­ лены утилиты для создания архивных файлов (они могут пригодиться при передаче большого объема данных по сети или создания резервных копий).

□ Регулярные выражения.

□ Поиск и извлечение данных.

□ Перенаправление ввода и вывода.

□ Архивация данных.

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

Регулярные выражения

195

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

В докум ентации регул ярны е вы ­

раж ения иногда назы ваю т regexp

(сокращ ение от regular expressions).

Существует две основные формы регулярных вы­ ражений: обычная и расширенная. Какую из них нужно использовать, зависит от конкретной программы. Некоторые приложения под­ держивают только одну форму, другие — обе (выбирать между ними можно с по­ мощью переданных параметров). Разница между обычными и расширенными ре­ гулярными выражениями может быть довольно значительной, но их базовые принципы очень похожи.

Простейшим видом регулярных выражений является строка, состоящая из букв и цифр, например HWaddr или LinuxB. Эти шаблоны соответствуют любой строке, в которой они содержатся и длина которой не меньше их самих. К примеру, под шаблон HWaddr подходят строки HWaddr, This is the HWaddr и The HWaddr is unknown. Но настоящая мощь регулярных выражений кроется в нецифровых и небуквенных символах, которые активизируют продвинутые правила сопоставления.

Среди наиболее мощных и в то же время простых возможностей регулярных

выражений можно выделить следующие.

□ Символьные классы. Набор символов, находящийся внутри квадратных ско­ бок ([ ]), называется символьным классом. Ищется совпадение любого символа внутри этих скобок. Например, регулярное выражение b[aeiou]g соответствует словам bag, beg, big, bog и bug. Если после открывающей скобки указать знак «карет» ( Л), то поиск будет выполняться по всем символам, которые не указаны в скобках. Например, шаблон b[Aaeiou]g соответствует строкам bbg и bAg, но не bag или beg.

□ Диапазон. Это вид символьного класса, в котором вместо перечисления каж­ дого символа указываются только начальная и конечная точки, разделенные тире (-). Например, регулярное выражение a[2-4]z соответствует строкам a2z, a3z и a4z.

□ Любой одиночный символ. Точка ( .) представляет любой одиночный символ, кроме перехода на новую строку. Например, шаблон а . z соответствует a2z, abz, aQz и любой другой трехсимвольной строке, которая начинается с а и заканчи­ вается на z.

□ Начало и конец строки. Символ «карет» ( л) представляет начало строки, а знак доллара (*) — ее конец. Например, шаблоны Abag и bag$ позволяют найти слово bag, только если оно является первым и соответственно последним в строке символов.

196 Глава 8. Поиск, извлечение и архивация данных

□ П о в т о р е н и е . В конце регулярного выражения или его части можно указать специальный символ, который обозначает повторение совпавшего элемента. В частности, звездочка (*) указывает на количество совпадений от нуля и боль­ ше. Ее часто используют в сочетании с точкой (то есть . *), чтобы выразить со­ ответствие любой подстроке. Например, шаблон А . ‘Lincoln соответствует любой строке, содержащей фрагменты А и Lincoln в заданном порядке, то есть строки Abe Lincoln и Abraham Lincoln являются всего лишь двумя вариантами из множества возможных.

□ Экранирование. Если вы хотите выполнить сопоставление по одному из специальных символов, таких как точка, вы должны его экранировать, то есть указать перед ним обратную косую черту (). Например, чтобы найти имя компьютера в сети (скажем, www.sybex.com), вам следует экранировать точ­ ки — www. sybex. com.

Расширенные регулярные выражения поддерживают дополнительные возмож­

ности по сопоставлению строк.

□ Дополнительные операторы повторения. Работают аналогично звездочке, но соответствуют только определенному количеству совпадений. В частности, знак «плюс» (+) отвечает количеству совпадений от одного и больше, а знак вопро­ са (?) — от нуля до одного.

□ Несколько возможных подстрок. Вертикальная черта ( | ) разделяет два воз­ можных совпадения, например шаблон car | truck соответствует либо слову саг, либо слову truck.

□ Круглые скобки. Обычные круглые скобки обрамляют подвыражения. С их по­ мощью часто указывается порядок применения операторов, например, вы може­ те заключить в круглые скобки набор слов, разделенных вертикальной чертой, чтобы эти слова рассматривались как группа, каждый элемент которой может совпасть, и чтобы не вовлекать при этом другие части регулярного выражения.

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

Правила регулярных выражений могут показаться запутанными, особенно если вы впервые с ними сталкиваетесь. Здесь помогут примеры их использования с при­ вязкой к конкретным программам. В следующем разделе рассматриваются регу­ лярные выражения на примере программы g re p .

Поиск и извлечение данных 197

В отличие о тд гер , ком анда find не

Поиск и извлечение данных Команда grep, использующая регулярные выражения, помогает в поиске данных. Она находит файлы, скани­ руя их содержимое. Она также возвращает часть этого содержимого, что бывает полезно в случаях, когда вам нужно извлечь лишь небольшую часть информации из файла или вывода программы. Утилита find, как можно догадаться по ее имени, определяет местоположение файлов. Она использует внешние атрибуты, такие как имя файла и его временные отметки. Еще одна команда, wc, предоставляет простую статистику для текстовых файлов. Для извлечения отдельных элементов файла служит программа cut. Еще две утилиты (so rt и cat) позволяют выводить итоговые данные для дальнейшей работы с ними (это может пригодиться при поиске).

В ней поддерживается сопо­

основано на другом (но похож ем )

ставление по шаблону, однако оно

м еханизм е.

использует регулярные выраж ения.

Ком анда дгер

Команда grep ищет файлы, содержащие заданную стро­ ку, и возвращает их имена и (если файл текстовый) найденный фрагмент. С ее помощью также можно вы­ полнять поиск по определенному файлу. Для использо­ вания этой утилиты нужно ввести ее имя, набор необя­ зательных параметров, регулярное выражение и при необходимости определение имени файла. Команда grep поддерживает большое количество параметров (наи­ более популярные перечислены в табл. 8.1).

Таблица 8 .1 . Часто используемые параметры команды дгер

П арам етр (дл и н н ая ф о р м а )

П ар ам етр (к р ат к ая ф о р м а )

О п и са н и е

Если не указать им я файла,

ком анда дгер будет использовать

стандартны й ввод. Зто удобно при

работе с конвейерам и (см . раздел

«Перенаправление ввода и вывода»

данной главы).

–count

-file-файл

-( file

Вместо самих строк, содержащих совпаде­ ние с регулярным выражением, выводит их номера

Этот параметр позволяет использовать ша­ блон, находящийся в заданном файле, вместо того чтобы вводить его в командной строке. Сокращенным вариантом данного параметра является команда fgrep

Продолжение .У

198 Глава 8. Поиск, извлечение и архивация данных

Таблица 8.1 (продолжение)

П ар ам ет р (д л и н н а я ф о р м а )

П ар ам ет р (к р ат к ая ф о р м а )

О п и сан и е

–ignore-case

-recursive

-R или -г

-extended-regexp

-F

По умолчанию поиск осуществляется с учетом регистра. Чтобы изменить это поведение, ис­ пользуйте параметр -і или —ignore-case

Этот параметр позволяет искать не только в самой папке, но и во всех ее подпапках. Чтобы не указывать данный параметр, можно воспользоваться командой rgrep

Команда grep по умолчанию использует обыч­ ные регулярные выражения. Укажите этот пара­ метр, чтобы включить поддержку расширенной формы. Как вариант, можете ввести команду egrep вместо grep, в которой расширенные регу­ лярные выражения используются по умолчанию

Ниже показан пример использования grep в сочетании с обычным регулярным

выражением:

$ grep -г eth0 /etc/*

Эта команда находит все файлы в папке /e tc , содер­ жащие строку eth0 (в большинстве дистрибутивов это идентификатор первого сетевого устройства). Посколь­ ку в примере указан параметр -г, поиск выполняется рекурсивно как по самой папке /e tc , так и по всем ее подпапкам. Для каждого совпавшего файла выводится строка, содержащая искомый текст.

У о бы чны х пользователей нет досту­ па к некоторым файлам в каталоге

/etc. Если ввести эту ком анду без

использования повы ш енны х приви­

легий, результатом будут сообщения

об о ш ибке, в которы х утилита grep

говорит о невозм ожности открыть

те или ины е файлы.

Представьте, что вам нужно найти все файлы в пап­ ке /e tc , содержащие строки ethe или e th i. Для того чтобы указать оба варианта устройств, можно ввести следующую команду, в кото­ рой используется регулярное выражение с диапазоном:

$ grep eth[01] /etc/*

В качестве более сложного примера попробуем найти строки со словами games или mail и последующим nologin в одном-единственном файле /etc/passw d. Эта задача требует применения расширенной формы регулярных выражений; соответствующая команда выглядит так:

$ grep -Е “(games I mail).*nologin” /etc/passwd

Эта команда м ож ет не найти со­

впадений на ваш ем компьютере

вви д у особенностей конфигурации

дистрибутива. Попробуйте указать

вместо gam es и m ail другие слова,

наприм ер pulse или грс.

Поиск и извлечение данных 199

Команда, представленная выше, иллюстрирует еще одну особенность регуляр­ ных выражений, с которой вам, возможно, придется сталкиваться: кавычки команд­ ной строки. Поскольку определенные символы в командной оболочке, такие как вертикальная черта ( |) или звездочка (*), имеют особое назначение, некоторые регулярные выражения следует заключать в кавычки. В противном случае они будут интерпретированы как команды самой оболочки.

Утилиту gгepмoжнo использовать в сочетании с другими командами, просеивая их вывод в поисках важной информации (в этой книге приводится несколько таких примеров). Для этого необходимо выполнять перенаправление ввода и вывода. Данная тема (вместе с дополнительными примерами работы утилиты grep) рас­ сматривается в разделе «Перенаправление ввода и вывода» далее.

Ком анда fin d

Утилита fin d реализует поиск файлов методом простого перебора. Она перебира­ ет заданное дерево каталогов, проверяя имена файлов, дату их создания и другие свойства, чтобы найти те из них, которые соответствуют указанному критерию.

В связи с таким подходом утилита fin d обычно не отличается высокой производительностью. Однако ей присущи гибкость и предсказуемость — если искомый файл существует, она его непременно найдет. Для ее ис­ пользования нужно ввести ее имя, опциональный путь к каталогу (который иногда называют начальным ката­ логом) и набор параметров, некоторые из них используют формат, напоминающий регулярные выражения.

На практике вам придется указы ­

вать либо путь к папке, либо поис­

ковы е критерии, либо и то и другое.

Утилита fin d позволяет указать один или несколько путей, которыми будет

ограничиваться процедура поиска.

В табл. 8.2 собраны часто использующиеся поиско­ вые критерии (полный их набор ищите на справочной странице команды find).

Таблица 8.2. Часто использующиеся поисковые критерии команды find

П ар ам етр

О п и са н и е

Тема привилегий для ф айлов рас­

сматривается в главе 14.

-name шаблон

С помощью этого параметра для поиска файлов указываются и х имена. Имена должны соответствовать определенному шаблону. Этот шаблон формально не является регулярным выражением, но имеет множество похожих возможностей

Продолжение

200 Глава 8. Поиск, извлечение и архивация данных

Таблица 8.2 (продолж ение)

Параметр

Описание

-perm ре­ жим

-size п

Если вам нужно найти файлы с определенными привилегиями, вы мо­ жете это сделать с помощью выражения -perm mode. Режим может быть выражен как в символьном, так и в восьмеричном виде. Если в начале ре­ жима указать +, команда find будет искать файлы с любым из указанных разрешающих битов. Если режим начинается со знака -, при поиске будут учитываться все разрешающие биты, которые были заданы

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

-group имя

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

-gid GID

-user имя

-uid UID

Это выражение позволяет искать файлы, идентификаторы группы (GID) которых равны GID

С помощью этого параметра можно искать файлы, принадлежащие за­ данному пользователю

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

-maxdepth уровни

Если вы хотите выполнить поиск по каталогу и, возможно, определен­ ному количеству его подкаталогов, вы можете задать максимальную глубину с помощью этого выражения

Существует множество дополнительных параметров, а также вариаций при­ веденных выше параметров; fin d — команда с богатыми возможностями. В качестве примера ее использования рассмотрим поиск всех исходных файлов на языке С (которые обычно имеют расширение . с) в домашних каталогах всех пользователей. Если домашние папки находятся в каталоге /horae, команда будет выглядеть так

fin d /home -name “*.с” #

Результатом будет список всех файлов с расшире­

нием .с, которые находятся в дереве папки /horae.

Если вам не хватит привилегий

для получения содержим ого папки,

ком анда fin d вернет вам заданный

путь и сообщение Permission denied.

К ом анда w c

Размер файла в байтах, полученный с помощью команды Is или найденный посред­ ством утилиты fin d , может представлять определенный интерес. Хотя в случае с текстовыми файлами это значение не так полезно. Допустим, вам нужно вычислить,

Поиск и извлечение данных 201

сколько страниц занимает документ, если на каждую страницу приходится 52 стро­ ки текста; для этого вам необходимо знать, сколько в текстовом файле слов или строк. Эту информацию можно получить с помощью утилиты w c Например, чтобы вывести сведения о файле n e w f i l e . txt, только что созданном в текущей папке, нужно ввести:

$ w c n e w f i l e . t x t

3 7

5 9

1 9 9 0

n e w f i l e . t x t

Результат показывает, что файл n e w f i l e . t x t содержит 37 строчек, 59 слов и 1990 байт. Эту информацию утилита w c выводит по умолчанию для любого заданного файла. Чтобы ограничить или расширить вывод утилиты w c , ей можно передавать различные параметры (приводятся в табл. 8.3). Три из них (-1, -w и - с ) используются по умолчанию, поэтому команды w c файл.t x t и\ис - l w c файл, t x t равнозначны. Больше параметров можно узнать на справочной странице команды; здесь же представлены те из них, которые применяются чаще всего.

В некоторы х текстовы х файлах

используются м ногобайтовые

-с и - т м о гу т давать разны е

кодировки; зто означает, что один

сим вол м о ж ет заним ать несколько

байтов. Іа ки м образом , парам етры

результаты, хотя часто их значения

Таблица 8.3. Ч а с т о и с п о л ь з у е м ы е п а р а м е т р ы к о м а н д ы w c

идентичны .

П арам етр

П ар ам етр

О п и сан и е

(дл и н н ая ф о р м а )

(к р атк ая ф о р м а )

-bytes

-chars

-lines

-words

-max-line-length

-m

-i

-w

-L

Выводит количество байтов в файле

Выводит количество символов в файле

Выводит количество строчек в файле

В ы водит количество слов в файле

Выводит длину самой длинной строчки в файле

Имейте в виду, что команда wc работает корректно с обычным текстом, но если текст содержит форматирование, как в случае с HTM L-файлами или файлами текстовых процессоров, результат может оказаться неверным. Для получения статистики по данным такого рода лучше использовать сами текстовые процессо­ ры или другие специализированные редакторы.

Ком анда c u t

При извлечении данных утилита grep помогает получать целые строки (иногда их называют записями). Однако в некоторых ситуациях требуется только часть записи. На этот случай предусмотрена команда cut. Она извлекает текст из

202 Глава 8. Поиск, извлечение и архивация данных

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

Команде cut нужно передать один или несколько параметров с описанием ис­ комого текста, а также одно или несколько имен файлов. Например, домашняя папка пользователя упоминается в шестом поле файла /etc/passwd, где в качестве разделителя используется двоеточие. Таким образом, чтобы извлечь только имена домашних каталогов, нужно выполнить следующую команду:

$ cut -f б -d

/etc/passwd

В табл. 8.4 собраны параметры, которые понадобятся вам при работе с командой cut. Дополнительные пара­ метры и полное описание этой команды ищите на ее справочной странице.

Таблица В.4. Часто используемые параметры команды cut

П ар ам етр (д л и н н а я ф о р м а )

П ар ам етр (к р ат к ая ф о р м а )

О п и сан и е

При использовании ком анды cut из­

влеченная инф ормация выводится

на экран. Однако нужно понимать,

что указанны е файлы остаются

нетронуты м и.

-characters

-delimiter

-fields

-only-delimited

-d

-f

-s

Выбирает только заданные позиции симво­ ла (-ов)

Использует заданный разделитель вместо стандартной табуляции

Выбирает только заданные поля

Строки без разделителя не выводятся (по умолчанию они попадают в вывод, если используется параметр -f)

Вы можете направить результаты команды cut в файл, используя перена­ правление вывода. Подробнее об этом — в разделе «Перенаправление ввода и вывода».

К ом анда s o rt

При работе с большими объемами данных часто требует­ ся их сортировка. Для этого предусмотрена команда sort. Но для достижения желаемого результата вам нужно иметь представление о ее возможностях. Если вы рабо­ таете с простым списком, состоящим только из слов, команду sort можно использовать без каких-либо пара­ метров, как показано ниже:

Команда sort, как и cut, не вносит

изм енений в со держ им ое файлов.

Сортируется только вывод.

Поиск и извлечение данных 203

$ c a t p e t s . t x t f is h dog cat bind $ sort p e ts .tx t bird cat dog f is h

Для сортировки числовых данных могут понадобиться определенные пара­ метры. На рис. 8.1 показаны результаты сортировки чисел с помощью команды cut. Правильного порядка удается добиться только после использования пара­ метра -п.

Т ерм ин ал

®

I

_

Э Р Р Е

0

3

«

г lghtn«ftfubufttu:»*$ (it

td I? 7 9

rlfftitfteMubuntic-S sort number

s. txt

1 1» 12

rtfbtiMAfwboAtv:

M>rt -n nun

t

19 12

rlfhtno.

1


Рис. 8.1. Сортировка списка с числовыми данными

На рис. 8.1 демонстрируется важность выбора подходящего параметра для до­ стижения желаемых результатов. Некоторые из наиболее популярных параметров команды so rt перечислены в табл. 8.5.

204 Глава в. Поиск, извлечение и архивация данных

Таблица 8.5. Часто используемые параметры команды sort

Параметр (д л и н н а я ф о р м а )

-dictionary-order

—ignore-case

-numeric-sort

—оЩрЩ=файл

—reverse

Параметр (к р ат к ая ф о р м а )

О п и сан и е

-d

-f

-n

Учитывает только пропуски и буквен­ но-числовые символы; специальные символы игнорируются

Игнорирует регистр (по умолчанию прописные буквы идут первыми)

Сортирует по числовому значению

Записывает результаты в заданный файл

Сортирует в порядке убывания (обычно сортировка выполняется по возрастанию)

Команда so rt имеет множество других полезных параметров. Обратитесь к ее

справочной странице, чтобы ознакомиться с ними.

К ом анда c a t

Впервые команда cat упоминалась в главе 6. Она часто используется для вывода коротких текстовых файлов, хотя с ее помощью также можно склеивать несколько файлов в один. Обе эти функции представлены на рис. 8.2.

Чтобы отобразить только первые

20 строк файла, используйте вместо

cat ком анду head. Для вывода

последних 20 строчек подойдет

ком анда tail. Чтобы узнать, как

изм енять количество вы водим ы х

строк, обратитесь к справочны м

страницам этих ком анд.

О ** rtghtnan3«buntu:-$ cat fllcA.txt

flghtmangDubunUi: -

рока t t t рока 2 r\ghtianjubuntu:-$ cat fileB.txt строка 2 строка Л rlghtnanfubuntu:»$ cat fllcA.txt строка 1 строка 2 строка 3 с т рок л А r lg h tn a n ju b u n t u :- * , |

п и

Рис. 8.2. Использование команды cat для вывода и объединения файлов

Перенаправление ввода и вывода 205

Обратите внимание, что при использовании одного имени файла в качестве аргумента его содержимое просто выводится на экран, но если указать два файла, их содержимое будет объединено в последовательность. Сами файлы остаются без изменений, объединению подлежит только вывод. Данная функция может оказать­ ся довольно полезной. В разделе «Перенаправление ввода и вывода» рассмотрен процесс сохранения этого вывода для дальнейшего использования.

Перенаправление ввода и вывода Если вы хотите сохранить вывод программы для использования в будущем, може­ те перенаправить его в файл. Вы также можете перенаправить ввод из файла в про­ грамму. Некоторые программы используют эту возможность для обработки данных, например обычных текстовых файлов, пропущенных через программу поиска по шаблону. Помимо перенаправления ввода/вывода в файл и из него, вы можете под­ ключать вывод одной программы к вводу другой. Для этого применяется команда xargs, которая позволяет генерировать параметры командной строки из файлов или программного вывода.

О сновны е о п е р а то р ы п е р е н а п р а вл е н и я

Перенаправление достигается за счет специальных операторов перенаправления’, это короткие сочетания символов, которые указываются после команд и их аргу­ ментов. Наиболее популярные из них собраны в табл. 8.6. Стоит отметить, что бывает два типа вывода:

Наличие двух типов вывода поз­

□ стандартный вывод для обычных программных со­

общений;

□ стандартный вывод ошибок для сообщений об ошиб­

воляет изолировать сообщения

об ош ибках, чтобы не запутывать

програм м ы , которые ожидаю т опре­

деленного ввода о т других программ .

ках.

Таблица 8.6. Часто используемые операторы перенаправления

О п ер атор

Д ей ст в и е

пер ен ап р ав л ен и я

»

Создает новый файл, содержащий стандартный вывод. Если задан­ ный файл уже существует, он перезаписывается

Добавляет стандартный вывод в файл. Если заданного файла не существует, он создается

Продолжение

206 Глава 8. Поиск, извлечение и архивация данных

Таблица 8.6 (продолжение)

О п ер а т о р п ер ен ап р ав л ен и я

Д ей с т в и е

2>

2 »

&>

david -in -etc.txt

Оператор перенаправления > берет вывод команды grep и помещает его в файл с именем d a v id -in -e tc .tx t. Если после этого вам нужно его просмотреть, вы може­ те воспользоваться командой less:

le s s d avid -in -etc.txt #

Будьте осторожны при использова­

нии оператора перенаправления >:

если файл уж е существует, его

содержимое будет перезаписано.

Перенаправление ввода и вывода 207

Binary f i l e / e t c / a li a s e s . d b matches / e t c/group:wheel:x :10:root, david /etc/group:audio:x:18:mythtv,david,pulse /etc/grou p :cdrom:x :19:haldaemon,david

[ . . . ]

В этом примере мы могли обойтись вводом обычной команды grep david /e tc /* , однако в некоторых случа­ ях перенаправление имеет свои преимущества. Пред­ ставьте, что какая-то команда возвращает несколько сообщений об ошибках. Вы могли бы перенаправить стандартный вывод ошибок в файл и выполнить поиск интересующих вас строк; после этого вы могли бы по­ вторить данную процедуру с той же командой или ее измененной версией.

М ногие ком анды м огут приним ать

параметры из командной строки или

файла, которые влияют на много­

словность их вывода. Узнать об этих

параметрах м ож но из соответству­

ю щ их справочных страниц.

В этом примере иллюстрируется разделение двух типов стандартного вывода. Если ввести команду grep david /e tc /* от имени обычного пользователя (воз­ можно, придется ввести собственное имя вместо david), итоговый результат, скорее всего, не будет отличаться от полученного ранее; однако, помимо перечня файлов, в которых упоминается имя пользователя, вам могут встретиться сообщения об ошибках, поскольку у вас не хватит привилегий для чтения некоторых файлов в папке /etc:

grep: /e t c / s e c u r e t t y : Permission denied grep: /etc/shadow: Permission denied

Информация о файлах, в которых встречается стро­ ка david, попадает в стандартный вывод, а ошибки ото­ бражаются с помощью стандартного вывода ошибок. Если же они вас не интересуют, то вы можете перена­ править их вфайл устройства /dev/null, играющий роль мусорной корзины для данных, от которых вы хотите избавиться:

$ grep david / e t c / * 2> /d ev/n u ll

Единственное отличие между

перенаправлением стандартного

вывода с помощ ью оператора >

и перенаправлением стандартного

вывода ош ибок с помощ ью опе­

ратора 2 > заключается в цифре 1

Именно зта цифра представляет

стандартный вывод ошибок

в командной строке.

Аналогично если перенаправить в файл только стан­ дартный вывод, вы увидите на экране сообщения об ошибках; однако эти ошибки не попадут в созданный вами файл (например, david- in - e tc .tx t из более раннего примера). Чтобы привыкнуть к тому, как работают операторы перенаправления, можете поэкспериментировать с каждым из них на примере команды grep david /etc /* (предварительно подставив свое имя вместо david).

208 Глава 8. Поиск, извлечение и архивация данных

К онвейеры

Еще один способ перенаправления вывода в командной строке — использование конвейеров. Они направляют стандартный вывод одной программы в стандартный ввод другой. Конвейер создается с помощью специального оператора, обознача­ емого вертикальной чертой ( | ) между двумя командами; эта клавиша обычно на­ ходится над Enter и доступна при удерживании Shift.

Конвейеры можно применять по-разному. Например, вы можете пропустить длинный вывод какой-то программы через команду less, которая позволит листать его в виде страниц.

В примере, представленном ниже, команда cut из­ влекает домашние папки пользователей из файла / e t c / pas swd и передает и х в виде стандартного ввода команде less, облегчающей просмотр:

$ cut -f б -d

/etc/passwd | le s s

Команда less описывается в главе 6.

Файл /etc/passwd и учетные записи

пользователей рассматриваются

в главе 12.

Часто команду grep используют в сочетании с кон­

вейерами для поиска ключевых слов в программном выводе. В этом примере ко­ манда cut извлекает из файла /etc /p a ssw d стандартные командные оболочки пользователей и передает их команде grep для поиска ключевого слова bash:

$ cut -f 7 -d

/etc/passwd | grep bash

Вам не обязательно ограничивать длину конвейера двумя составными частями. Скажем, предыдущий пример можно было бы сделать более полезным, добавив в него еще один оператор конвейера, который совместно с подключенной к его концу командой wc будет определять количество пользователей, в чьих записях в файле /etc/passw d указана командная оболочка bash:

$ cut - f 7 -d

/etc/passwd | grep bash | wc -1 237

Здесь в конвейер помещены три команды. Теперь мы знаем, что в системе на­ ходятся 237 пользователей, в чьих записях в файле /etc/passw d значится команд­ ная оболочка bash.

Генерирование ко м а н д н ы х с тр о к

Конвейеры могут пригодиться для решения довольно нетривиальных задач. Пред­ ставьте, что вы хотите удалить каждый файл в дереве каталогов, чье имя заканчи­ вается тильдой (~). Такие имена обычно дают своим резервным копиям опреде­ ленные текстовые редакторы. Если дерево каталогов достаточно большое, это может оказаться непростой задачей. Стандартная команда для удаления файлов

Перенаправление ввода и вывода 209

(пт, описанная в главе 7) не предоставляет параметров для поиска и удаления данных по такому узкому критерию. Команда fin d (подробно описанная ранее) может выполнить поиск, но она не умеет удалять.

Решение заключается в объединении результатов поиска для создания цепочки

командных строк на основе гт. Этого можно достичь тремя способами.

□ Использовать утилиту xargs. Она применяется в конвейерах для построения команд на основе стандартного ввода. Ее базовый синтаксис выглядит следу­ ющим образом:

xargs [параметры] [ команда [аргументы]]

Здесь команда — это команда, которую вы хотите выполнить; аргументы — список аргументов, которые вы ей передаете; параметры — параметры самой утилиты xargs, они не передаются команде. Когда вы запустите утилиту xargs, она вызовет коман­ ду по одному разу для каждого слова, переданного ей через стандартный ввод; при этом слово становится аргументом заданной команды. Если вы хотите передать команде несколько параметров, их нужно заключить в двойные кавычки.

Возьмем для примера процедуру удаления всех резервных файлов, обозначен­ ных символом тильды. Для этого вывод fin d нужно пропустить через утилиту xargs, которая затем вызывает команду гт:

$ find . / -name

| xargs гт

Первая часть этого конвейера (find . / -name “«•”) находит в текущей папке ( . / ) или ее подпапках все файлы, имена которых заканчиваются тильдой (~). Затем этот список передается утилите xargs, которая добавляет каждый най­ денный файл к команде гт. Нетривиальная задача поиска и удаления всех этих резервных файлов решена.

□ Добавить обратные апострофы. Обратный апостроф ( ‘) во многом напомина­ ет утилиту xargs. Его можно найти на клавиатуре слева от клавиши 1. Это не то же самое, что одинарная кавычка ( 1), которая в большинстве клавиатур нахо­ дится справа от точки с запятой (;).

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

$ rm ‘fin d . / -пате

Использование обратных апострофов называется подстановкой команд, посколь­ ку вы предоставляете замену для одного из аргументов команды. В приведенном

210 Глава 8. Поиск, извлечение и архивация данных

выше примере результаты команды fin d занимают место имени файла в аргу­ менте команды rm.

□ Определить формат $ (). Обратный апостроф ( ‘) очень легко перепутать с оди­ нарной кавычкой ( 1), поэтому он постепенно выходит из употребления. Вместо него рекомендуется использовать другую форму подстановки команд (если она доступна в вашем дистрибутиве) — формат $():

$ rm $(find . / -name

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

Архивация данных Инструмент для архивации собирает группу файлов в единый «пакет», который можно легко перемещать в рамках одной системы, записывать на DVD, Flash-диски и другие съемные носители или передавать по сети. Система Linux поддерживает несколько таких инструментов, наиболее известные — t a r и zip. Помимо умения работать с этими командами, вы должны понимать, к каким последствиям приводит сжатие данных с их помощью.

К ом анда ta r

В Linux иногда используется другая

програм м а архивации под назва­

Название команды t a r расшифровывается как tape archiver (архиватор на магнитной ленте), но вы можете использовать ее для создания резервных копий данных (которые также называются архивами) на жестких дис­ ках и других носителях, не только на лентах, tar — по­ пулярный инструмент для архивации различных дан­ ных в один файл — архив; при этом исходные файлы остаются нетронутыми на вашем диске. Поскольку итоговый архивный файл может оказаться довольно большим, его часто сжимают на лету (итоговый результат называется tarball). Сжатые архивы применяются для передачи множества файлов между компьютерами в виде единого целого, так, например, распространяется исходный код.

от tar, но имеет свои особенности

реализации.

нием сріо. Она мало чем отличается

Утилита tar — сложный инструмент со множеством параметров, но большинство задач, с которыми вы буде­ те сталкиваться, можно решить с помощью нескольких основных команд, перечисленных в табл. 8.7. Существу­ ют также модификаторы, которые влияют на поведение

В отличие от большинства про-

; " С В

• V Linux,tar

i f " !

использовать однобуквенные пара

метры без тире (-) впереди.

Архивация данных 211

этих команд (они собраны в табл. 8.8). При запуске ta r используется одна команда и, как правило, хотя бы один модификатор.

Таблица 8.7. Команды утилиты tar

К ом ан д а

—create

-concatenate

-append

-update

—diff или —compare

-list

-extract или -get

С о к р а щ ен и е

О п и сан и е

c

A

Г

u

d

t

X

Создает архив

Добавляет к архиву tar-файлы

Добавляет к архиву обычные файлы

Добавляет файлы, которые являются более новыми, чем те, что находятся в архиве

Сравнивает архив с файлами на диске

Выводит содержимое архива

Извлекает файлы из архива

Таблица 8.8. Модификаторы утилиты tar

М од и ф и к ат ор

С о к р а щ ен и е

О п и сан и е

-directory каталог

-file [хост:] файл

-listed- incremental файл

-one-file- system

C

f

g

-multi-volume M

-tape-length N L

-same- permissions

–absolute- names

P

P

Перед выполнением операций переходит в указан­ ный каталог

Использует в качестве архива файл на компьютере с именем хоста

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

Архивирует или восстанавливает только одну фай­ ловую систему (раздел)

Создает или извлекает многотомный архив

Меняет тома после N килобайт

Сохраняет всю защитную информацию

Оставляет начальную косую черту (/) в именах файлов

Продолжение &

212 Глава 8, Поиск, извлечение и архивация данных

Таблица 8.8 (продолжение)

Модификатор Сокращение

Описание

-verbose

V

-verify

-exclude файл

-exclude-from файл

-gzip или -unzip

-bzip2

W *

X

z

j (в некоторых старых версиях используют­ ся I или у)

Выводит список всех считываемых или извле­ каемых файлов; в сочетании с параметром —list выводит имена файлов, их владельцев и временные отметки

Проверяет целостность архива после записи

Исключает файл из архива

Исключает из архива файлы, перечисленные в файле

Сжимает архив с помощью утилиты gzip

Сжимает архив с помощью утилиты bzip2

    • X Z

J

Сжимает архив с помощью утилиты xz

На рис. 8.3 показан пример копирования файлов в сжатый архив. Файлы, раз­ мещенные в папке /home/rightman/work, архивируются на съемный USB-диск. Путь подключения этого диска — /ru n /m e d ia /rig h tm a n / TRAVELDRIVE, как видно на рис. 8 .3 . Команде t a r пере­ даются параметры czvf для сжатия с помощью gzip (z), вывода архивируемых файлов (ѵ) и создания файла архива ( f ). Параметр с инициирует процесс архивации. Обратите внимание, что на рис. 8.3 из имен архи­ вируемых файлов убирается начальная косая черта ( /) (в этом примере такие имена называются member names). Это упрощает извлечение файлов в новом месте. Например, если подключить упомянутый выше USB-диск к другой системе и скопировать файл work.tgz в папку, извлечение архива можно будет выполнить с помощью следующей команды:

Утилита tar сохраняет системную

ж ивает такие метаданные.

на которой он хранится, не поддер­

ибнф орм ацию о владельце и приви­

легиях, д аж е если файловая система,

$ tar xzvf work.tgz

Эта команда создает в текущей рабочей папке подпапку с именем home/rightman/ work и наполняет ее файлами из сжатого архива. Как видите, по сравнению с при­ мером с рис. 8.3 у команды t a r изменился всего один параметр: с (создать) был заменен на х (извлечь).

Архивация данных 213

Рис. 8.3. Создание сжатого архива

Если вы не знаете, что находится в архиве, перед началом извлечения рекомен­ дуется просмотреть его содержимое с помощью команды - - l i s t . Обычно архивные файлы собраны в единый подкаталог, но бывает так, что все они извлекаются в те­ кущую рабочую папку. Если она у же наполнена большим количеством файлов, это может затруднить отслеживание извлеченных данных.

С жатие

В Linux программы gzip, bzip2 и xz предназначены для сжатия отдельных файлов. Например, с помощью следующей команды можно сжать большое изображение:

$ xz biggraphics.tiff

Результатом будет файл с тем же именем, только ^

с новым расширением, которое указывает на формат сжатия. В данном конкретном случае мы получим файл b ig g ra p h ic s .tiff .xz.

Обычно утилита дпробеспечивает наименьшую степень сжатия, a xz—

наибольшую (поэтому ядро Linux

теперь сжимается с помощью xz).

Большинство графических программ не смогут про­ читать файлы, сжатые таким способом. Для работы с этими файлами вы должны их сначала распаковать с помощью подходящей программы. В случае с архивом b i g g r a p h i c s .t if f .xz (из предыдущего примера) понадобится следующая команда:

$ unxz biggraphics.tiff.xz

214 Глава Ѳ. Поиск, извлечение и архивация данных

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

Таблица 8.9. Программы для сжатия и распаковывания, а также расширения имен файлов

П р огр ам м а д л я сж ат и я П р огр ам м а д л я расп ак ов ы ван и я

Р а с ш и р е н и е и м ен и ф ай ла

gzip

bzip2

x z

gunzip

bunzip2

unxz

•gz

,bz2

.XZ

Программа t a r предоставляет поддержку всех трех стандартов сжатия, приве­ денных выше, а сжатые архивы часто имеют собственные уникальные расширения, указывающие на тип используемого сжатия:

□ -tgz — для архивов, сжатых с помощью gzip;

.tb z или . tbz2 — для архивов, сжатых с помощью bzip2;

. txz — для архивов, сжатых с помощью xz.

При создании сжатого архива (когда для ta r указаны параметры z, j или 3) программа сжатия обрабатывает весь конечный файл целиком, а не каждый его элемент отдельно. Это помогает увеличить степень сжатия, од­ нако усложняет процедуру извлечения файлов из архи­ ва в случае, если тот был поврежден.

Программы gzip, bzip2 и xz выполняют сжатие без потеръ-, это означает, что данные, восстановленные из сжатого файла, идентичны исходным. Некоторые гра­ фические, аудио- и аудиовизуальные форматы исполь- зуютсжатие с потерями, при котором часть информации теряется. Такой подход нельзя применять к программным, конфигурационным и, как правило, пользовательским файлам; любая потеря данных в них может ока­ заться катастрофической. По этой причине t a r поддерживает только те инстру­ менты, которые обеспечивают сжатие без потерь.

К ом анда zip

За пределами мира Unix и Linux роль наиболее популярного типа сжатых архивов, аналогичного tar, отведена формату zip. Linux предоставляет команды zip и unzip

Архивация данных 215

для создания и извлечения zip-архивов. Файлы, упакованные таким образом, обыч­ но имеют расширение .zip.

В большинстве случаев для создания zip-архива достаточно передать утилите

zip его название и список файлов:

$ z ip n e w z ip .z ip a f i l e . t x t f i g u r e . t i f

Эта команда создает архив newzip.zip, хранящий файлы a f i l e . t x t и f i g u r e . t i f (исходные файлы остаются на диске нетронутыми). Иногда для достижения жела­ емого результата утилите zip следует передать определенные параметры, наиболее популярные из которых представлены в табл. 8.10. Это далеко не полный перечень параметров данной утилиты; подробности ищите на ее справочной странице.

Таблица 8.10. Часто используемые параметры команды zip

П арам етр (д л и н н ая ф о р м а )

П а р ам ет р (к р ат к ая ф о р м а )

О п и сан и е

От -0 до -9

-delete

-encrypt

-freshen

-d

-e

-f

-fix или -fixfix

-F или -FF

-filesync

-FS

–grow

-help

■g

-h или -?

Устанавливает степень сжатия; -0 означает отсутствие сжатия, -1 применяет мини­ мальное (но быстрое) сжатие и так дальше вплоть до -9 (максимальное сжатие при низкой скорости)

Удаляет из архива заданные файлы

Шифрует архив с помощью пароля (ути­ лита zip попросит васего ввести)

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

Пытается восстановить поврежденный архив. Параметр — fix/-F отвечает за по­ верхностные исправления, в то время как параметр –fixfix/-FF проводит более глубокое восстановление

Обновляет файлы в архиве, если он и успели измениться с момента его создания, а также удаляет их, если были удалены их оригина­ лы, хранящиеся в файловой системе

Добавляет файлы в существующий архив

Выводит краткую справочную информацию

Продолжение £

216 Глава 8. Поиск, извлечение и архивация данных

Таблица 8.10 (продолжение)

П ар ам етр (д л и н н ая ф о р м а )

П ар ам етр (к р атк ая ф о р м а )

О п и сан и е

-m ove

-recurse -paths

-m

-split -size размер

-s размер

Перемещает файлы в zip-архив; это означа­ ет, что оригиналы удаляются

Включает в архив файлы и подпапки внут­ ри заданных папок

Создает потенциально многотомный архив, каждый том которого не может быть больше значения «размер» байт (для опре­ деления более крупных единиц размера в конце значения можно указать буквы к, ш, g или t)

-exclude файлы

-х файлы

Исключает из архива заданные файлы

-symlinks

  • у

Помещает в архив символьные ссылки в их изначальном виде (а не файлы, на которые они указывают, как это делается по умол­ чанию)

Из всех параметров, приведенных в табл. 8.10, наиболее важным можно назвать -г (по крайней мере если вам нужно сжать целое дерево каталогов). Без него архив не будет содержать подкаталоги. Учитывая производительность современных про­ цессоров, также имеет смысл регулярно использовать параметр -9, который по­ зволяет достичь максимального сжатия.

Для распаковки и извлечения файлов из zip-архива

воспользуйтесь программой unzip:

$ unzip anarchive.zip

Эта команда извлекает в текущую папку файлы из архива anarchive.zip. Как и zip, программа unzip под­ держивает большое количество параметров, наиболее важные из которых представлены в табл. 8.11.

Таблица 8.11. Часто используемые параметры команды unzip

П ар ам етр

О п и са н и е

Zip-архивы обычно содержат целый

набор файлов в главной папке, по­

этому их рекомендуется извлекать

в отдельную пустую подпапку,

созданную специально для этого.

-f

-1

Извлекает только те файлы из архива, которые имеют более старые копии в файловой системе

Выводит содержимое архива без его извлечения

Архивация данных 217

Параметр

О п и сан и е

-t

-L

-п

Извлекает файлы в конвейер

Проверяет целостность файлов в архиве

Обновляет файлы; этот параметр похож на -f, но извлекает только те файлы, которых нет на диске

Как и -1, выводит содержимое архива, но в более подробном виде

Переводит имена файлов в нижний регистр, если они были созданы в операционной системе, которая поддерживает только прописные буквы (например, DOS)

Запрещает перезапись существующих файлов

Перезаписывает существующие файлы без подтверждения

Обычно при использовании программы unzip достаточно указать лишь имя архивного файла. Но время от времени у вас будет возникать необходимость в при­ менении одного или нескольких параметров. Особенно полезным является пара­ метр -1. позволяющий просматривать содержимое архива без его извлечения.

О С Н О В Ы И НЕ Т О Л Ь К О

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

справиться ин струм е нты дгер и fin d . Утилита дгер п о д д е р ж и ва е т р е гул яр ны е вы р а ж е ни я, о писы ­

ваю щ ие текст, которы й н у ж н о найти в ф айлах ил и вы во д е д р уго й п р о гр а м м ы , в виде ш аблонов.

Утилиты wc, c u t и so rt п о м о га ю т в и зв л е че н ии и у п о р я д о ч е н и и ин ф орм ации д л я д ал ьне й ш е го ее

анализа. Ком анда cat уп о р я д о ч и в а е т д а н н ы е , скл е и в а я и х в е д и н ы й файл (кр о м е того, она по­

зволяет про см а тр ива ть просты е текстовы е файлы). Если ва м н у ж н о вы вести на экр ан тол ько часть

файла, пригодятся п р о гр а м м ы head и ta il. П ол ученны й вы во д м о ж н о на пр а вить в утил иту дгер (или

в д р угую п р о гр а м м у или файл), испол ьзуя операторы пе р е направл ения; э то т п о д хо д прим еняется

во м но ж е стве ин струм е нтов ко м а н д н о й стр о ки в Linux. П р о гр а м м ы ta r и zip позвол яю т создавать

а рхивы , сод ерж ащ ие пр о и зв ол ь н ое ко л иче ство файлов. С жаты е ар хивы , созд аваем ы е утилитой tar,

являются о б щ е пр и н яты м ср е д ство м распространения исходного ко д а и даж е б и на р ны х п р о гр а м м

м е ж д у р а зн ы м и ко м п ь ю те р а м и под уп ра вл е ни ем Linux. С жатие без потерь, которое используется

в этой ко м а нд е , достигается за счет ко м а н д xz, gzip и bzip2 (их м о ж н о запускать отдельно).

Упражнения

Вы полните п о и с к ф айлов в своей д о м а ш н е й п а п ке и в системе в ц ел ом , испол ьзуя утил иты fin d

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

онны х файлах в каталоге / e t c

218 Глава 8. Поиск, извлечение и архивация данных

ОСНОВЫ И НЕ т о л ь к о

С ожмите не скол ько э кзе м п л я р о в разны х ти п о в д а нн ы х (текстовы е файлы и циф ровы е фото­

граф ии), используя утилиты gzip, bzip2 и xz. Ка кие файлы сж им а ю тся хорош о? Какой инструм ент

л учш е всего п о д хо д ит для ка ж д о го типа данных?

Контрольные вопросы

К а ка я и з п е р е ч и сл е н н ы х ко м а н д вы в е д е т и з файла w o r ld .tx t с т р о ч ки , со д е р ж а щ и е слова

changes и changed?

A.

grep change[ds] w o rld .tx t.

Б.

ta r ch a n g e [d-s] w o rld .tx t.

B.

fin d “ch a n g e ’d |s”‘w o rld .tx t.

Г.

cat w o rld .tx t changes changed.

Д .

fin d change! A ds] w o rld .tx t.

К а ка я из пр и ве д е нн ы х н и ж е о пер а ци й пе р е на пр а вл е ния по звол я ет д о б а в и ть стандартны й вы ­

вод ко м а нд ы к у ж е сущ е ствую щ е м у файлу, не перезапи сы вая его содерж им ое?

А.

Б.

В.

Г.

д.

1

2 >

& >

»

  1. Вы получили от коллеги архив с и м е н е м data79.tar, но преж де, че м его распаковы вать, вы хотите

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

A,

ta tu v fd a ta 7 9 .ta r.

Б.

ta r c v f data79.tar.

B,

ta rx v fd a ta 7 9 .ta r.

Г.

t a r t v f data79.tar.

Д.

ta r A vf data79.tar.

  1. И стина или л о ж ь: регул яр но е вы р а ж е ние L in u [A x ].* ld s соответствует строке Linus Torvalds.

  2. Истина или лож ь: ко м а нд а fin d позволяет находить файлы, исходя и з их р азм еров.

  3. Истина или л о ж ь: чтобы с ж а т ь файлы, за а р хивир о ван ны е с по м о щ ь ю пр о гр а м м ы zip, необхо­

дим о по д кл ю ч и ть к ней через конве й е р вне ш н ие утилиты , такие к а к gzip или bzip2.

Архивация данных 219

7 . Символ, ко торы й обозначает начало с тр о ки в р е гул яр ны х в ы р а ж е н и я х :________________.

К о м а н д а ______________ _ м о ж е т извл ечь и з записей файла зад а н ны е поля.

Закончите следую щ ую ко м а нд у, чтобы пе р е на пр а вить стандартны й вы во д и стандартны й в ы ­

вод о ш и б о к п р о гр а м м ы b ig p ro g в файл o u t.tx t:

$ bigprog _________ out.txt.

К о м ан д ы gzip, bzip2 и xz в ы п о л н я ю т сж а ти е б е з ________________, при ко то р о м извл е че н ны е

д анны е полностью совпадаю т со с в о и м и исхо д ны м и вер сиям и д о сж атия.

Глава 9 Процессы и их данные

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

□ Управление пакетами.

□ Иерархия процессов.

□ Обнаружение запущенных процессов.

□ Лог-файлы.

Управление пакетами Управление пакетами существенно варьируется в зависимости от дистрибутива. Тем не менее определенные принципы работы — общие для большинства разновид­ ностей Linux, поэтому в первую очередь сосредоточимся на них, а потом уже рас­ смотрим базовые функции двух основных систем управления пакетами. В конце раздела приведен пример работы с менеджером пакетов RPM (RPM Package Manager) и пакетной системой дистрибутива Debian.

Управление пакетами 221

П ринципы уп р а вл е н и я пакетам и в Linux

Если вы уже устанавливали программное обеспечение в системе Windows, то вы знаете, что надо дважды щелкнуть кнопкой мыши на установщике, который по­ местит все программные файлы в нужные места. Такие установщики напоминают файлы пакетов в системе Linux, однако есть и различия. В Linux пакеты обладают следующими характеристиками:

□ каждый пакет представляет собой единый файл, который можно хранить на

диске или передавать по Интернету;

□ файлы пакетов в Linux, в отличие от установщиков в Windows, не являются программами; для установки приложений они используют внешние инстру­ менты;

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

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

М ногие програм м ны е пакеты

зависят от библиотечны х пакетов;

библиотеки предоставляют код,

который используется м ногим и

програм м ам и.

□ пакеты содержат информацию об архитектуре, чтобы определить тип централь­ ного процессора (х86, х86-64, ARM и т. д.), для которого они предназначены. Специальное обозначение имеют пакеты, которые не зависят от архитектуры, например шрифты или темы рабочего стола;

□ бинарные пакеты (содержащие исполняемые про­ граммы, собранные для определенного процессора) обычно собираются из исходных пакетов (состоящих из исходного кода, понятного для программиста). Имея исходный пакет, вы можете превратить его в бинарный, что полезно в некоторых ситуациях.

Пакетные менеджеры хранят базу данных со све­ дениями о каждом установленном пакете, в том числе его название, номер версии и местоположение всех его файлов. Эта информация позволяет быстро уда­ лить пакет, определить, установлен ли уже пакет в си­ стеме (если да, то какая из версий является более новой).

222 Глава 9. Процессы и их данные

Как у с тр о е н ы с и с те м ы уп р а вл е н и я паке там и

В т а б л .1.1 собраны особенности

Как было отмечено выше, наиболее распространенными (хотя и не единственными) пакетными менеджерами являются RPM и Debian. Они отличаются друг от друга различными техническими деталями, включая команды, которые используются для управления пакетами, а так­ же формат их пакетных файлов. Вы не можете устано­ вить пакет из Debian в систему, основанную на RPM, и наоборот. Установка пакета в дистрибутиве, для которого он не предназначен, — рискованное дело, даже если тип пакетов совпадает (зависимости сторонних и род­ ных пакетов могут конфликтовать между собой).

популярны х дистрибутивов Linux,

включая систем у пакетов, которая

в них используется.

Изначально пакетные менеджеры работали локально. Чтобы установить пакет на своем компьютере, вам сначала нужно было загрузить его из Интернета или получить в каком-то другом месте. Только после этого можно было приступать к его установке с помощью локальной команды. Однако такой подход может ока­ заться довольно утомительным, если у пакета много зависимостей; вы можете попробовать выполнить установку, найти неудовлетворенные зависимости, за­ грузить их, обнаружить, что они тоже зависят от других пакетов, которые нужно где-то искать, и т. д. В итоге после отслеживания всех этих зависимых друг от друга пакетов их может набраться с десяток, а то и больше.

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

На практике для управления программным обеспечением в системе Linux нужно взаимодействовать с сетевым репозиторием, для этого предусмотрены как ТПИ-, так и ГПИ-утилиты. Типичная процедура установки программы выглядит примерно так.

  1. Пользователь запускает команду для установки программы.

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

  3. Пользователь соглашается продолжить установку (в противном случае процесс останавливается).

  4. Программное обеспечение загружает все необходи­

мые пакеты.

  1. Программное обеспечение устанавливает все пакеты.

Б ольш инство дистрибутивов м ож но

сконф игурировать так, чтобы они

использовали локальны е носители

вм есто интернет-репозиториев или

в дополнение к ним .

Управление пакетами 223

Обновление программ происходит похожим образом, хотя при этом вероят­ ность того, что вам придется загружать пакеты-зависимости, меньше. Процеду­ ра удаления, естественно, может быть полностью вы­ полнена локально. Многие дистрибутивы время от времени сверяются со своими репозиториями и уве­ домляют пользователя о доступных обновлениях. Та­ ким образом, вы можете поддерживать свою систему в актуальном состоянии, всего лишь нажав несколько кнопок.

доступны х обновлений сразу же

после установки дистрибутива.

Вы можете обнаруж ить м нож ество

В качестве примера на рис. 9.1 представлена утилита Центр приложений (Software Update) из состава дистрибутива Fedora 24, которая выводит список доступных обновлений.

Для управления пакетами необходим администраторский доступ (см. главу 13). Чтобы поддерживать систему в актуальном состоянии, достаточно согласиться с автоматически появляющимся предложением установки обновлений и ввести администраторский пароль (в некоторых дистрибутивах).

Рис. 9.1. Большинство дистрибутивов Linux сообщают о доступных обновлениях для вашего программного обеспечения

224 Гпава 9. Процессы и их данные

У п р а вл е н и е с и с те м а м и на б а зе Red H at

В число дистрибутивов, основанных на RPM, входят Red Hat, Fedora, CentOS, SUSE Enterprise, openSUSE и Mandriva. Основным инструментом, который ис­ пользуется в них для установки программного обеспечения, является консольная команда rpm. Эта программа работает с локальными файлами. Для доступа к репо­ зиториям необходимо использовать другой инструмент, какой именно — зависит от дистрибутива:

□ в Red Hat, Fedora и CentOS это ТПИ-утилита у urn или различные ГП И-надстройки

вокруг нее, такие как Yumex;

□ в SUSE Enterprise и openSUSE используется утилита z ip p e r или ее ГІІИ-

надстройка

например, YaST2;

□ в Mandriva это ТПИ-утилита urpmi или ГПИ-приложение Rpmdrake.

Ввиду такого разнообразия, особенно сетевых обновлений, вряд ли есть смысл подробно описывать здесь каждый из этих инструментов. К счастью, ГП И-утилиты просты в использовании. ТПИ-инструменты тоже не очень сложные, хотя для по­ нимания некоторых тонкостей придется изучить их справочные страницы. Обыч­ но в них используются интуитивно понятные команды, например install (уста­ новить) для установки пакета:

yum install yumex #

В дистрибутивах Red Hat, Fedora и CentOS с помо­ щью этой команды можно установить ГПИ-приложение Yumex. Точно так же можно удалить любой пакет или обновить все приложения на компьютере, используя команды remove и upgrade соответственно.

yum remove zsh #

yum upgrade #

Если вы хотите вы полнить сразу две

о пе р а ц и и —

обновить приложения

и удалить пакеты, — начинать

лучш е с удаления. Так вы избежите

загрузки некоторых файлов, что

сократит время обновления.

В этом примере сначала удаляется пакет zsh, затем обновляются оставшиеся в системе пакеты. Обе эти команды сгенерируют многострочный вывод; вас так­ же могут попросить о подтверждении. Обратитесь к справочной странице коман­ ды yum (или любой другой, используемой в вашем дистрибутиве), чтобы узнать больше.

Если вам нужно работать с файлами R PM -пакетов напрямую, вы должны знать, что они имеют расширение . rpm. В их названиях обычно содержатся обо­ значения архитектуры (такие как 1386 или х8б_64) и часто — дистрибутива, для которого они предназначены (например, fc21 для Fedora 21). К примеру, название samba-4.1.17-1.fc21.x86_64. rpm указывает на пакет Samba версии 4.1.17 первого

Управление пакетами 225

выпуска, собранного для дистрибутива Fedora 21 на платформе х86-64. Чтобы установить этот пакет с помощью утилиты rpm, нужно ввести следующую команду:

rpm -і samba-4.1.17-1.fc21.x86_64.npm #

Это выглядит немного сложнее, чем пример с командой yum, так как для уста­

новки пакета нужно знать полное имя его файла.

У правл ение с и с те м а м и на базе D ebian

Разработчики дистрибутива Debian GNU/Linux создали свою систему пакетов, которая используется и в других системах, производных от Debian, таких как Ubuntu и Mint. Поверх базовой системы управления пакетами Debian доступна утилита Advanced Package Tool (APT), которая предоставляет доступ к сетевым репозиториям. Самым низкоуровневым интерфейсом к системе пакетов Debian является команда dpkg. Это своеобраз­ ный аналог утилиты rpm, применяемой в системах, ос­ нованных на RPM. Чтобы воспользоваться командой dpkg, вам, как и в случае с rpm, необходимо знать точное имя пакета:

Во м ногих дистрибутивах,

основанны х на RPM, существуют

сторонние реализации утилиты APT.

Подробности м ож но найти на стра­

нице apt4rpm .sourceforge.net. Как

м и н и м ум о д и н RPM-совм естим ы й

дистрибутив (PCLinuxOS) использует

утилиту APT как часть системы.

dpkg -i samba_3.6.1-B_amd64.deb #

Существует несколько ТПИ- и ГПИ-инструментов, которые предоставляют интерфейс поверх команды dpkg. Наиболее важные из них — ТПИ-утилита apt-get и ГІІИ-приложение Synaptic (рис. 9.2). Как можно догадаться по их названиям, они предоставляют доступ к сетевым репозиториям посредством системы APT.

В системе Debian названия пакетов заканчиваются расширением .deb. Как и в слу­ чае с RPM-системами, эти имена обычно содержат обозначения версии и архитек­ туры (такие как І386 или amd64). Например, название samba_3.6.l-3_amd64.deb указывает на пакет Samba версии 3.6.1 третьей ревизии, собранный для процессоров AMD64 (х86-64). Этот файл можно установить с помощью утилит dpkg или apt-get; последняя позволяет загрузить пакет из Интернета вместе с его зависимостями, ис­ пользуя подкоманду install:

apt-get install samba #

Как и в случае с RPM -системами, вы также можете удалять или обновлять па­

кеты, установленные на компьютере:

apt-get remove zsh #

apt-get upgrade #

226 Глава 9. Процессы и их данные

М е н е д ж е р п а к е т о в S y n a p t ic

Ф .іи л Ираик.і Пакет Ндстроики С п р а в к е

С

h

Q

О б н о в и т ь О т м е т и т ь в с ё

П р и м е н и т ь

С в о й с т в а

П о и с к

ПШ Ш Ш Ш Ш Ш Ш С U (jimp LWV!£i • ЛЯН Н НіННННІИИНІЦТхТМ ^ і ^ ея г у

5 9 7 «

П а к е т

У с т а н о в л е н н а я ве П о с л е д н я я в е реи» О п и с а н и е

к п Ъ

r e m o t e е я е с и Ы о А o f X M in d

x s a n e - c o m m o n

x s a n e - d b g

« s c a v e n g e r

0 .9 9 9 - 3 u b u n t u i

x s a n e a r c h i t e c t u r e In d e p e n

0 .9 9 9 - 3 u b u n tu 1

1 .4 .4 -9

f e a t u r e f u l g r a p h ic a l f r o n t e *

L o d e - r u n n e r - U k e p l a t f o r m ^

feeturefulgraphlcel frontand for SANE (Scanner Access Now Easy)

П о л у ч и - ъ и з о б р а ж е н и е > ц и и і П о л у ч и т ь с п и с о к и ѵ е а и е и и * V i s it H o m e p a g e

x s a n e c a n b e r u n as a s t a n d - a l o n e p r o g r a m o r t h r o u g h t h e C IM P Im a g e

m a n i p u la t i o n p r o g r a m , in s t a n d - a l o n e m o d e . x s a n e c a n s a v e a n Im a g e t o a f i le In a v a r l e t y o f Im a g e f o r m a t s , s e r v e a s a f r o n t e n d t o a f a x p r o g r a m , o r s e n d an Im a g e to a p r i n t e r .

5 A N E s ta n d s f o r ‘ S c a n n e r A cc e ss N o w E a s y ’ a n d Is an a p p lic a t io n

n r n n r a m m l n n I n h w f a r f » /А Р ІІ t h a t n r n v IH e s s h a n d a rH l7 e H а г г і к с hn a n u

Р а з д е л ьі

С о с т о я н и е

П р о и с х о ж д е н и е

С п е ц и а л ь н ы е ф и л ь т р ы

Р е з у л ь т а т ы п о и с к а

1________ A r c h i t e c t u r e

)

5 3 7 4 4 п а к е т о в в с п и с к е , 175В у с т а н о в л е н о , О с о ш и б к а м и , 0 д л я

г в и о м и ^ о б м о о л е н и я О д л я у д а л е н и я

Рис. 9.2. Приложение Synaptic позволяет искать, выбирать, устанавливать и удалять программное обеспечение в Debian-совместимых системах

Инструмент APT, как и лежащая в его основе утилита dpkg, обладает большой мощью. Подробности об их использовании можно узнать на справочных страницах этих программ.

Иерархия процессов Ядро Linux — основа любого дистрибутива. Оно управляет памятью, позволяет программам получать доступ к жесткому диску, распределяет процессорное время и занимается другими низкоуровневыми задачами. Ядро загружается на раннем этапе загрузки системы и отвечает за управление всеми остальными экземплярами программного обеспечения на компьютере.

Вы м ожете сами указать программу,

Один из способов, с помощью которых ядро может навести порядок в потенциально хаотичном наборе про­ граммного обеспечения, — установление иерархии. При загрузке ядро выполняет всего одну программу — обыч­ но это /s b in /in it. Процесс i n i t отвечает за запуск всех основных задач в Linux, таких как управление входом в систему и постоянно работающие серверы. Программы такого рода, если они запущены напрямую из програм­ мы in it, называются потомками (дочерними). Потомок программы in it, в свою очередь, может запускать собственные дочерние программы. Это происходит,

первого процесса, добавив параметр in it= в строку параметров ядра загрузчика. Например, чтобы запу­

стить Bash, укажите in it= /b in /b a s h .

которая запускается в качестве

Обнаружение запущенных процессов 227

когда вы входите в систему. Процесс, который запускает какой-то другой процесс, называется родителем.

Результатом является древовидная иерархия процессов («деревья» в информа­

тике часто изображаются перевернутыми).

На рис. 9.3 показано небольшое подмножество общей (и куда более масштабной) иерархии процессов, выпол­ няющихся в типичной системе Linux: некоторые из них связаны с текстовым входом в систему, включая утилиту login, которая именно этим и занимается, а также две командные оболочки Bash и некоторые пользовательские программы. В реальной системе Linux число работающих процессов может достигать десятков, а то и сотен. Количество одновременно запу­ щенных процессов на компьютере, на котором автор набирает эти строки, равно 2131

«удочеряются» программ ой in it

Время от времени процессы могут

завершаться, оставляя после себя за­

пущ енных потомков. Такие процессы

Рис. 9.3. В системе Linux процессы упорядочены в виде иерархического дерева

У каждого процесса — свой идентификационный номер (Process ID, или PID). Номера начинаются с еди­ ницы, поэтому PID программы i n i t обычно равен 1. Каждый процесс также обладает идентификатором сво­ его родителя (Parent Process ID, или PPID). Эти номера активно используются в инструментах для управления процессами, особенно это касается PID.

Внутри ядра сведения о процессах

хранятся в таблице процессов.

Для просмотра и редактирования

этой таблицы предусмотрены такие

инструм енты , как р$ и to p (рассма­

триваются ниж е).

Обнаружение запущенных процессов Прежде чем приступать к управлению процессами, их сначала нужно обнару­ жить. В этом могут помочь утилиты ps и top. Обе предоставляют различные способы поиска процессов, например по названию или по используемым ресурсам.

228 Глава 9. Процессы и их данные

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

И д е н тиф и кац ия п р о ц е с с о в с п о м о щ ь ю ути л и ты ps

Наиболее простой инструмент идентификации процессов — утилита ps, которая генерирует их список. Пример ее работы показан в листинге 9.1. Параметр - и огра­ ничивает вывод только теми процессами, которые принадлежат определенному пользователю (в нашем случае это rich), a - -fo re s t иллюстрирует связь между родителями и потомками.

Листинг 9.1. Вывод команды

ps -u rich - -forest

$ ps -u rich –forest

PID

TTY

2451 2551

2496 2498 2505

2506 2544

pts/3 pts/3

? pts/l pts/1

? ?

TIME 00:00:00 00:00:00

00:00:00

00:00:00 00:00:00 00:00:00 00:00:00

CMD bash

PS kvt

bash

_ nedit

_ csh

_ xeyes

19221 ?

00:00:01

dfm

Еще один пример использования команды ps пред­ ставлен в листинге 9.2. Параметр и добавляет дополни­ тельный столбец с информацией, а параметр и ric h ограничивает вывод процессами, принадлежащими пользователю rich. Команда ps поддерживает огромное количество параметров (подробности можно узнать на ее справочной странице).

Листинг 9.2. Вывод команды ps u U rich

Версия ком анды ps, которая исполь­

зуется в больш инстве дистрибути­

вов Linux, сочетает в себе возмож­

ности более старых реализаций.

В результате м ы им еем огром ны й

(иногда д а ж е избы точны й) вы бор

парам етров.

$ ps u U rich

USER PID

%CPU

%MEM

rich 192210.0 0.0 rich 2451 0.2 rich 2496 rich 2498 rich 2505 rich 2506

0.0 0.1 0.0

1.5 0.8 3.2 0.8 2.6 0.7

vsz 4484 1856 6232 1860 4784 2124

RSS 1984 1048 4124 1044

3332 1012

TTY

STAT

? S pts/3 S ? s pts/1 S pts/1 S s ?

START May07

16:13 16:17 16:17

16:17 16:17

TIME

0:01

0:00 0:00

0:00 0:00

0:00

COMMAND dfm

-bash /opt/kd bash

nedit /bin/cs

Обнаружение запущенных процессов 229

rich 2544 0.0 1.0

2576 1360 ?

S

16:17 0:00 xeyes

rich 2556 0.0 0.7

2588 916

pts/3 R

16:18 0:00 ps u U

рам етрам и, использование утилиты

названия програм м вместе с их па­

Поскольку ком анда ps ах вы водит

Учитывая такое большое количество параметров, у разных пользователей могут быть собственные пред­ почтения относительно того, как применять эту про­ грамму. Например, команда ps ах обычно выводит нуж­ ную нам информацию, включая значения PID и имена программ (вместе с аргументами командной строки) для всех запущенных на компьютере процессов. Добавив параметр и (как в ps аих), мы получим имена пользова­ телей, загрузку центрального процессора и еще несколько интересных подробностей. Однако такой обширный диапазон генерируемой информации может оказаться чрезмерным. Чтобы его ограничить, можно пропустить результат через утилиту grep, которая устраняет строчки, не соответствующие заданному поисковому кри­ терию. Например, если вам нужно узнать номер PID для процесса gedit, вы може­ те сделать это следующим образом:

grep д л я поиска строки в выводе

грам м ы , но и саму утилиту g re p

возвращ ает не только иском ы е про­

$ ps ах I grep gedit 27946 pts/8 SI 0:00 gedit 27950 pts/8 S+ 0:00 grep-colour=auto gedit

Данная команда показывает, что процесс gedit имеет номер PID, равный 27946. Обычно это наиболее ценная информация при использовании команды ps, по­ скольку значение PID применяется для изменения приоритета процесса или его завершения.

И д ентиф и кац ия п р о ц е с с о в с п о м о щ ью у ти л и ты to p

Команда ps может вернуть сведения о приоритете процесса и использовании ре­ сурсов ЦПУ, однако результат обычно сортируется по номеру PID и относится к какому-то определенному моменту времени. Если вам нужно быстро обнаружить процессы с повышенным потреблением памяти или процессора либо если вы хо­ тите изучить, как изменяется потребление ресурсов со временем, для этого лучше всего подойдет утилита top. В сущности, она представляет собой интерактивную версию команды ps. На рис. 9.4 показана утилита top, запущенная в окне Терминал среды GNOME (GNOME Terminal).

Утилита top по умолчанию сортирует записи по использованию центрального процессора, обновляя результаты каждые несколько секунд. Чтобы определить, вышло ли «прожорливое» приложение из-под контроля, нужно знать назначение

230 Глава 9. Процессы и их данные

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

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

О г ~

r ig h t m a n ff tu b u n t u : ~

9 6 : 9 1 : 3 2 up 16 min.

top (a s k s : 240 t o t a l , 2 r u n n in g , 238 s l e e p i n g , X C p u (s ): КиБ Mem : КиБ Swap:

9 ,9 n i , 9 5 ,3 29B1320 f r e e . 2994076 f r e e ,

4138472 t o t a l , 2094076 t o t a l ,

2 , 4 us,

1 u s e r ,

1 , 9 s y ,

load a ve ra g e : в .ѳ ѳ , 9 .9 S , 0 , 1 5 0 zombie о stopped, 1 , 4 wa,

9 .0 h i ,

i d ,

9 ,9 s i , 9 .9 s t

658316 u s e d , 0 used.

578836 b u f f / t a i h e 3969828 a v a i l Mem

PID USER 3850 root 5198 г i ij h 7 man 4690 right, man 3234 root r ightnan 1831 1 r oot 2 root 3 root 4 root 5 root 7 root В root 9 root 10 root root 11 root 1 2 13

PR NI 0 20 9 29 0 20 0 20 0 29 0 70 0 26 0 20 20 6 0 20 70 0 0 20 0 ’ t 6 f t 20 0 0 *20 0 - 20

RES VIRT 57304 253480 32 704 1 18880 333888 140924 9280 39188 5140 0 0 0 0 0 0 0 0 0 0 0

53364 155320 2412 8 0 0 9 0 0 0 0 0 0 0 0

SHR в XCPU XMEM 34836 * 1 . 4 2 ,3 9 , 8 27792 s 1 , 7 60164 s 3 ,4 0 . 7 8432 s 0 ,3 9 , 2 0, 3 33100 s 9 ,9 0 , 0 3816 s 0 , 1 9 . 9 0 s 0 ,0 0,0 0,0 0 s 9 , 9 9,0 9 s 0 s 0,0 0 ,5 0,0 0 s 0 .0 0 s O.o 0 , 0 0 s 0 ,0 9,0 0 s 0,0 0 .0 0 s 0, [) 0 ,0 0 s 0 ,0 0 ,0

  • 111._ 2 j ® 0

TIME+ COMMAND

0 :0 5 .5 8 Xorg 9 :9 9 .8 5 gnome t e r m i i 0 : 0 9 . 1 3 comptz 0 : 0 1 . 1 4 vn to o ls d 0 :0 0 .6 6 n a u t i l u s 0 : 0 1 . 9 3 %yite»4l 9 :9 9 .0 0 kt hreadd 0 :0 0 .0 9 k s o f t i r q d / 0 0 :0 0 .0 2 kw orker/ ѳ і ѳ 0:0 0 .0 0 kwor k e r / 0 : OH 0 :0 0 .3 7 rcu sched 0 :0 0 .0 0 rcu bh 0 :0 0 .0 0 n t g r a t i o n / 0 0 :0 0 .0 0 wdtchdog/0 0 :0 0 .0 0 kd e vtn pfs 0 :0 9 .0 0 netns 0 :0 0 .0 0


Рис. 9 .4 . Команда top выводит краткую системную информацию и сведения о процессах, наиболее интенсивно использующих ресурсы ЦПУ

Среди данных, предоставляемых утилитой top, есть средняя загрузка (load average), с помощью которой измеряется требовательность приложений к цен­ тральному процессору. На рис. 9.4 в верхней строчке можно наблюдать сразу три оценки средней загрузки; они относятся к текущему значению и двум пре­ дыдущим замерам. Средняя загрузка может быть интерпретирована следующим образом:

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

грузка равна 0;

□ в системе, в которой только одна программа выполняет ресурсоемкую задачу,

средняя загрузка равна 1;

□ более высокие показатели средней загрузки на однопроцессорных системах говорят о том, что программы конкурируют за свободное процессорное время;

Обнаружение запущенных процессов 231

□ на компьютере с несколькими процессорами/ядрами конкуренция за процессорное время может начинать­ ся уже после того, как средняя загрузка достигнет количества этих процессоров/ядер. Например, сред­ няя загрузка4 . 0 в системе с четырехъядерным ЦПУ сигнализирует о том, что процессы требуют ровно столько процессорного времени, сколько компьютер им может предоставить.

Таблица 9 .1 . Команды, часто используемые в утилите top

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

Больш инство компьютеров, кото­ рые сейчас продаются, имеют не­ сколько ядер; одноядерные модели доминировали на рынке примерно до 2006 года

h или ?

Нажатие этих клавиш приводит к выводу справочной информации

к

q

Г

S

р

М

Эта команда позволяет завершить процесс. Программа top запросит номер PID; если процесс можно завершить, она это сделает

Эта команда позволяет выйти из программы top

Вы можете изменить приоритет процесса с помощью этой команды

Эта команда изменяет частоту обновления выводимых данных, которую вам нужно будет ввести (в секундах)

Эта команда сортирует данные по использованию ЦПУ (действует по умол­ чанию)

С помощью этой команды данные можно отсортировать по использованию памяти

Средняя загрузка может пригодиться при определе- нии процессов, вышедших из-под контроля. Например, если средняя загрузка системы обычно равна 0.5, но вдруг замирает на отметке 2.5, это может свидетельство­ вать о зависших процессах (тех, которые не отвечают). Зависшие процессы иногда потребляют слишком много процессорного времени. Утилита top помогает их обна­ ружить и в случае необходимости остановить.

И зм ерение п о тр е б л е н и я пам яти

Команда w, описанная в главе 13, позволяет узнать о потреблении процессорного времени целыми терм инальным и сессиями.

Наиболее важными ресурсами, которые потребляются процессами, являются про­ цессорное время и память. Как уже было отмечено, программа top по умолчанию сортирует процессы по процессорному времени, поэтому вы можете определить

232 Глава 9. Процессы и их данные

приложения, которые расходуют больше всего ресурсов ЦПУ. Внутри программы top можно нажать клавишу М, чтобы выполнить сортировку по памяти и узнать процессы, которые потребляют ее больше остальных. Но как и в случае с процес­ сорным временем, нельзя однозначно сказать, что процесс расходует слишком много памяти, только на основании того, что он находится на вершине списка; некоторым программам память действительно нужна в больших объемах. Однако иногда это потребление оказывается чрезмерным — либо из-за неэффективности кода, написанного программистами, либо в результате утечки памяти (вид про­ граммной ошибки, когда приложение запрашивает у ядра память, но, закончив с ней работать, не может ее освободить). Программы, имеющие этот дефект, по­ стоянно увеличивают расход памяти, иногда даже мешают работать другим при­ ложениям. В качестве кратковременного решения такую программу можно оста­ новить и запустить снова, благодаря этому потребляемые ею ресурсы будут сброшены в начальное состояние. Проблема продолжит повторяться, но если утечка па­ мяти небольшая, вы успеете тем временем выполнить какую-то полезную работу.

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

Если вы хотите изучить общее потребление памяти компьютером, задействуйте команду fre e . Она пред­ ставляет отчет об общем состоянии памяти в системе:

$ free

t o t a l used

free

shared

Mem: 7914888 7734456 180432 -/+ buffers/cache: 4299080 3615808 6291452 1030736 5260716 Swap:

buffers 190656

0

cached 3244720

Строчка, начинающаяся с Меи:, показывает общую статистику по памяти произ­ вольного доступа ( Random Access Memory, или RAM), включая общий объем памя­ ти на компьютере (за вычетом того, что используется материнской платой и ядром), а также объем используемой и свободной памяти. В этом примере видно, что боль­ шая часть памяти компьютера уже задействована. Это нормально, поскольку систе­ ма Linux обычно использует свободную память для буферов и кэша, что помогает ускорить доступ к диску. Поэтому данная информация не представляет особого интереса; в первую очередь следует обращать внимание на строчку, начинающуюся с -/+ buffers/cache:, в которой показан общий объем памяти, используемый про­ граммами. В нашем случае задействовано 4 299 080 Кбайт из 7914 888 Кбайт, а 3615808 Кбайт остаются свободными. Иными словами, приложения потребляют чуть более половины всей памяти компьютера, поэтому не должно быть никаких проблем с производительностью, связанных с этим видом ресурсов.

Лог-файлы 233

В строчке, начинающейся со Swap:, указано занятое пространство подкачки Linux. Это место на диске, которое используется как дополнение к памяти. Систе­ ма Linux задействует пространство подкачки, когда заканчивается RAM или когда она решает, что RAM лучше использовать для буферов и кэша, чем для пока что неактивных программ. В нашем примере из 6291 452 Кбайт пространства подкач­ ки занято 1030736 Кбайт, а 5260716 Кбайт остаются свободными. Потребление пространства подкачки обычно остается умеренным; если же оно возрастает, у вас могут возникнуть проблемы с производительностью. В долгосрочной перспективе подобные проблемы лучше решать за счет увеличения объема памяти компьютера. Если производительность падает из-за чрезмерного использования пространства подкачки и вам нужно немедленно исправить ситуацию, вы можете остановить процессы, потребляющие слишком много памяти. Программы с утечками памяти тоже могут быть причиной такого рода проблем; их закрытие может восстановить производительность системы до нормального уровня.

Команда fre e поддерживает несколько параметров, большинство из которых изменяют формат вывода. Наиболее полезен параметр -ш, позволяющий выводить данные в мегабайтах (Мбайт) вместо килобайт (Кбайт).

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

Р аспол ож ение л о г-ф а й л о в

Система Linux хранит большинство лог-файлов в дере­ ве каталогов /var/log. Наиболее примечательные из них перечислены в табл. 9.2. Кроме того, многие серверные программы, которые не упоминаются в этой книге, до­ бавляют в папку /v a r/lo g свои собственные подпапки с лог-файлами. Если вы испытываете проблемы при

Разные дистрибутивы по-разному ведут свои журналы, поэтому неко­ торые файлы, описанные в табл. 9.2, могут отсутствовать в вашей систе­ ме или иметь другие имена.

234 Глава 9. Процессы и их данные

работе с таким сервером, проверка его журнала может быть отправной точкой по­ иска их причин.

Таблица 9.2. Важные лог-файлы

Файл

boot.log

cron

cups/

gdm/

messages или syslog

secure

Описание

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

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

В этой папке хранятся лог-файлы, связанные с системой печати Linux

В этой папке хранятся лог-файлы, связанные с программой GNOME Display Manager, которая во многих дистрибутивах отвечает за графи­ ческий вход в систему

Это лог-файл общего назначения. Он содержит сообщения от многих демонов, у которых нет собственных журналов

В этомфайле можно найти сообщения, связанные с безопасностью, в том числе уведомления о применении пользователем команд su, sudo и дру­ гих инструментов, предоставляющих администраторские привилегии

Xorg.O.log

В этом файле хранится информация о последнем запуске оконной системы X

Лог-файлы часто чередуются — старые файлы уда­ ляются, последний из них получает имя с датой или номером, и только после этого создается новый файл. Например, если чередование происходит 1 декабря 2016 года,файл /var/log/messages превращается в /ѵаг/ log/m essages-20161201, /v a r /lo g /m e s s a g e s - l.g z или что-то похожее, а его место занимает новый файл с его прежним именем. Это позволяет контролировать раз­ меры лог-файлов.

Чередование лог-файлов проис­ ходит ночью ; если вы выключите компьютер, оно будет отложено. Время от времени оставляйте систему включенной на ночь, чтобы лог-файлы могли замениться.

Большинство лог-файлов содержат обычный текст, поэтому их можно откры­ вать с помощью любых инструментов для работы с текстовыми файлами, таких как команда l e s s или текстовый редактор. Особенно полезна утилита t a i l , кото­ рая выводит последние десять строчек файла (это число можно изменить с по­ мощью параметра -п), например команда t a i l /var/log/m essages покажет по­ следние десять строчек файла messages.

Лог-файлы 235

Не все программы записывают свои сообщения в журнал. Как правило, это делают только демоны; обычные пользовательские приложения выводят сообще­ ния об ошибках по-другому — в графических диалоговых окнах или текстовых терминалах. Если вам кажется, что программа должна вести журнал, но вы никак не можете его найти, сверьтесь с ее документацией. Как вариант, можно вос­ пользоваться утилитой grep, чтобы попытаться найти лог-файлы, в которые программа записывает свои сообщения. К примеру, команда grep sshd /ѵ аг/ log/* находит все файлы, в названии которых есть подстрока sshd (название демона SSH).

СОЗДАНИЕ ЛО Г-Ф АЙ ЛО В————————————————————————————————-

Некоторые программы создают собственные лог-файлы, однако большинство делает это с помощью инструмента «демон системного журнала». Обычно он имеет название syslog или syslogd Как и другие демоны, запускается во время загрузки системы с помощью стартовых сценариев. Демон системного журнала доступен в виде нескольких пакетов. Некоторые из них предоставляют отдельный инструмент, klog или klogd, предназначен­ ный специально для работы с сообщениями ядра.

С помощью соответствующего конфигурационного файла можно корректировать по­ ведение демона журнала, изменяя файлы, в которые записываются сообщения опреде­ ленного типа. Имя этого файла зависит от конкретного демона, который вы используете, но обычно это /etc/rsyslog.conf или что-то похожее. Подробности о конфигурации лог- файлов выходят за рамки этой книги, но вам следует знать, что они могут отличаться в зависимости от дистрибутива.

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

Генерирование б о л е е п о д р о б н ы х за п и с е й для л о г-ф а й л о в

Иногда лог-файлы не предоставляют информацию, необходимую для выявления источника проблемы. К счастью, многие программы, которые ведут журналы, могут быть сконфигурированы для более подробного вывода. Однако это иногда может усложнить поиск нужных сведений среди всех сгенерированных записей.

Процедура увеличения количества подробностей в лог-файлах варьируется в зависимости от программы. Обычно это требует указания параметра в соответ­ ствующем конфигурационном файле. Чтобы узнать, как именно это делается, следует свериться с программной документацией.

236 Глава 9. Процессы и их данные

Б уф ер уровня ядра

У ядра есть буфер, который похож на лог-файл, однако, в отличие от лог-файлов, он хранит информацию в памяти, а не на диске. Как и в случае с любым другим журналом, его содержимое изменяется во время работы компьютера. Чтобы увидеть это содержимое, достаточно ввести команду dmesg. Информации, которую она выво­ дит, может быть слишком много, поэтому обычно ее вывод пропускают через утилиту less:

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

$ dmesg I le s s

Если вы знаете, что нужная вам информация связана с определенной строкой, можете искать ее с помощью утилиты grep. Например, чтобы найти сообщения буфера уровня ядра о первом жестком диске /dev/sda/, можно ввести следующую команду:

$ dmesg I grep sda

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

Некоторые дистрибутивы при первой загрузке помещают копию буфера уров­ ня ядра в /var/log/dm esg или в похожий файл. Вы можете сверяться с ним, если компьютер работает слишком долго и наиболее старые записи утеряны. Если в дис­ трибутиве по умолчанию нет этого файла, но вы хотите его создать, добавьте сле­ дующую строчку в конце файла / e t c / r c . d /r c . local:

dmesg > /var/log/dm esg

ОСНОВЫ И НЕ ТОЛЬКО

В клю чен н ы й ко м п ью тер под уп р авл ен и ем оп е рац и он но й си стем ы Lin u x м ож но р ассм а тр и в а ть как

набор вы п о л н яю щ и хся п рограм м или про цессо в. У п р авл е н и е п ро ц ессам и н ач и н а е тся с уп р авлен и я

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

грпт или d p kg. Ч то б ы узн а ть , каки е процессы зап ущ е н ы в д анны й м о м ен т, м ож но во сп о л ь зо в а ть ся

ком анд ам и ps и top. С п ом ощ ью л о г-ф а й л о в м ож но п о лучи ть св ед ен и я о д е й ств и я х, в ы п о л н яе м ы х

Лог-файлы 237

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

ского интерф ей са, к а к э т о д е л а ю т д р уги е п р о гр ам м ы ,

Упражнения

Н аход и тся ли в а к туа л ь н о м со сто яни и п р о гр а м м н о е об есп ечен и е в а ш е го д и стр и б ути в а ? Чтобы

п р о в е р и ть это, н ай д и те в м еню н а сто л ьн о й среды п ун к т для зап уска си стем ы уп р а в л е н и я п а­

кетам и . К ом п ью тер с уста р е в ш и м и п р о грам м ам и не защ и щ е н о т о ш и б о к и и м е е т у я зв и м о сти ,

поэтом у ре гул я р н о е об н о вл ен и е п р о гр а м м край не важ но!

В вед и те ком анд у ps ах | less и п р о см о тр и те сп и сок п ро ц ессо в. О м н о ги х из них вы м ож ете у з н а ть

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

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

Контрольные вопросы

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

пакетов в м е сте со всем и и х з а в и си м о стя м и на к о м п ь ю те р е с д и стр и б ути в о м D ebian?

А .

Б.

В.

Г.

yum .

zypper.

dm esg.

rpm .

a p t-g e t.

д. Как н а зы в а е тся п ро цесс, кото ры й о б ы ч н о п е р в ы м за п у ск а е тся яд р о м Lin u x (п о м и м о сам ого

яд р а)?

A.

Б.

В.

Г. д.

init.

Bash.

cron.

lo gin .

grub.

Где х р а н и тся б о л ь ш и н ств о л о г-ф ай л о в на к о м п ью тер ах под уп р а в л е н и е м си стем ы Linux?

A, /var/log.

Б.

/etc/lo ggin g.

B.

Г.

/usr/log,

/h o m e /lo gg in g.

Д .

/log/usr.

238 Глава 9. Процессы и их данные

ОСНОВЫ И НЕ ТОЛЬКО

И сти на или лож ь: с п о м о щ ью п о д хо д я щ и х к о м а н д м о ж н о у с та н а в л и в а ть к а к сам и п ро грам м ы , та к и лю бое п р о гр а м м н о е о б есп ечен и е , о т ко то рого он и з а в и с я т (при усл о в и и н ал и чи я д о ступ а

в И нтерн ет).

И сти н а и л и л о ж ь : п р о ц е сс, к о то р ы й к о м а н д а to p в ы в о д и т п е р в ы м в сп и ск е , п о ум о л чан и ю

п о тр е б л я е т б о л ь ш е в се го р е с у р со в про цессо ра.

И сти н а или л о ж ь : в ы в о д ком анды d m e sg после н е ск о л ь к и х н е д е л ь р а б о ты си стем ы м о ж е т

о тл и ч а ть с я от то го , ч то ге н е р и р у е тся ср азу после в к л ю ч е н и я к о м п ь ю те р а .

В б о л ь ш и н с т в е д и с т р и б у т и в о в L in u x и н ф о р м а ц и я о б у с т а н о в л е н н ы х п а к е т а х х р а н и т с я

в _ _ _ _ _ _ _ _ _ _ _ _ (д в а с л о в а ).

8 .

В ы и сп о л ь зу е те ком анд н ую о б о л о ч к у B ash и в в о д и те в н е й к о м а н д у e m acs, ч то б ы з а п у сти ть

од н ои м енны й те к сто в ы й ред акто р. В это м случае em acs я в л я е т с я _ _ _ _ _ _ _ _ _ _ _ _ по отн ош ени ю

к Bash.

С и сте м н ы е со об щ ен и я о б щ его х ар актер а м ож но найти в ф а й л а х /va r/lo g/m e ssa ge s или /ѵаг/ log/

, в зав и си м о сти от д и стр и б ути в а .

Ком ан д а, с п о м о щ ью которой м ож но п р о ч и та ть со о б щ е н и я , сге н е р и р о в а н н ы е во в р е м я про­

цесса за гр у зк и и х р а н я щ и е ся в буф ере ур о в н я ядра, н а з ы в а е тс я _ _ _ _ _ _ _ _ _ _ _ _

Глава 10 Редактирование файлов

Наиболее простой и гибкий формат компьютерных документов — текстовый файл. Как правило, конфигурационные файлы и сценарии состоят из текста. И посколь­ ку их приходится часто изменять, вам необходимо уметь редактировать текстовые файлы. Этой теме и посвящена данная глава. Особое внимание будет уделено про­ стым консольным текстовым редакторам, таким как pico, nano и ѵі. Сначала мы рассмотрим основное применение текстовых файлов, затем вы узнаете, как выбрать подходящий текстовый редактор. Естественно, чтобы изменить текстовый документ (новый либо уже существующий), нужно запустить программу для его редактиро­ вания. Редакторы рісо и nano похожи, поэтому работа с ними описывается в одном и том же разделе. В конце главы рассматривается программа ѵі, которая по совре­ менным меркам представляет собой довольно необычный редактор.

□ Текстовые файлы.

□ Выбор редактора.

□ Запуск редактора.

□ Редактирование файлов с помощью программ рісо и nano.

□ Редактирование файлов с помощью программы ѵі.

Текстовые файлы

Текстовый редактор предоставляет возможность редактировать документы, хра­ нящиеся в виде простого текста. Когда-то общепринятым форматом был стандарт­ ный американский код для обмена информацией (American Standard Code for Information Interchange, ASCII), но в наши дни обычно используются стандарты

240 Глава 10. Редактирование файлов

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

как U nicode-файл. ASCII является

подм нож еством Unicode.

Файл, закодированный в формате

ASCII, м ож но также рассматривать

ASCII И UNICODE ————————————————————————————————

Стандарт ASCII датируется 1960-ми годами. Это 7-битный код, то есть поддерживает максимум 27 (128) символов (на практике ASCII использует 8 бит, что открывает доступ к дополнительным 128 знакам; они выделены для различных служебных сим­ волов, а также применяются в расширениях ASCII). Он был создан для кодирования цифр, знаков и букв английского языка. По этой причине, а также из-за ограниченно­ го количества доступных символов данный стандарт плохо подходит для других язы­ ков — в нем просто не хватает места для удовлетворения всех требований элементов алфавитов, отличных от английского.

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

Стандарт Unicode более современный. Он предоставляет значительно больший набор сим­ волов, позволяя кодировать любой алфавит на планете, находящийся в активном употребле­ нии; это в том числе относится и к огромным логографическим системам письма, которые применяются в китайском и японском языках. Этот стандарт требует намного больше битов, поэтому для его эффективного кодирования было придумано несколько способов. К счастью, количество кодировок Unicode (Unicode Transformation Format, или UTF) ограничено в сравнении с кодовыми страницами. В некоторых из них, таких как UTF-8, первые символы кодируются так же, как и в ASCII, поэтому ASCII-файл совместим с UTF-8. Многие совре­ менные текстовые редакторы используют эту или другую разновидность Unicode по умол­ чанию, поэтому с их помощью можно записывать текстовые файлы на любом удобном для вас языке. Иногда может понадобиться установить параметры локализации, чтобы сообщить системе Linux о типе клавиатуры, которую вы используете; вам также придется указать ко­ довую страницу по умолчанию, если она до сих пор применяется в вашей программе.

Длина строк в текстовых файлах варьируется от нуля символов до размера са­ мого файла, что позволяет хранить любое количество данных. Некоторые файлы

Выбор редактора 241

можно редактировать обычным пользователям, но есть и такие, что играют важную роль в администрировании системы Linux. Ниже перечислены основные типы фай­ лов:

□ файлы, содержащие человеческий язык;

□ файлы, содержащие язык программирования;

□ файлы с форматированным текстом;

□ программные и системные конфигурационные файлы;

□ программные лог-файлы.

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

Выбор редактора Любой дистрибутив Linux содержит богатый выбор текстовых редакторов. Все они делятся на две категории: с текстовым интерфейсом и с графическим интер­ фейсом. Новичкам (а иногда и специалистам) обычно удобнее работать с ГПИ- редакторами. Но если графическая среда недоступна, приходится использовать командную строку. Поэтому рекомендуем вам познакомиться хотя бы с одним консольным редактором. Среди наиболее популярных можно выделить следу­ ющие.

□ ѵі. Один из основных редакторов в системах Unix. Имеет небольшой размер и обычно устанавливается по умолчанию, поэтому вы можете рассчитывать, что он будет присутствовать в любом компьютере под управлением Linux. Однако по современным меркам редактор выглядит довольно странно — в нем ис­ пользуются разные режимы редактирования, между которыми нужно постоянно переключаться, чтобы

В больш инстве д истрибутивов Linux

используется улучш енная версия

редактора ѵі под названием vim

(от ѵі im proved). Его все ещ е м ож но

запускать с п ом ощ ью ком анды ѵі.

242 Глава 10. Редактирование файлов

выполнять те или иные действия. Многие опытные администраторы Unix- и Linux-систем любят программу ѵі за ее гибкость, мощность и малый размер.

□ emacs. Ещеодин редактор, входящий в число основных в системах Unix. Это большая программа со множе­ ством функций, поэтому ее реже устанавливают по умолчанию, особенно в компактных, легковесныхдис- трибутивах. Принципом работы редактор напоминает текстовые редакторы, знакомые новичкам, однако ко­ манды могут показаться довольно странными.

□ рісо. Программа emacs стала источником вдохнове­

Ком анды для редактирования тек­

ста в среде Bash были см оделирова­

ны по п рим еру тех, что применяются

в emacs, поэтому изучение данного

текстового редактора поможет при

работе с этой ком андной оболочкой.

ния для разработчиков нескольких небольших текстовых редакторов, которые лишены многих продвинутых возможностей своего прародителя в угоду про­ стоте. Одним из таких редакторов является рісо, который изначально был ча­ стью пакета для работы с электронной почтой под названием pine.

□ папо. Это клон редактора рісо, обладающий некото­ рыми дополнительными возможностями, что, впро­ чем, не мешает ему оставаться компактным, легко­ весным и простым в использовании.

Редактор рісо входит не во все

дистрибутивы . Иногда вместо него

устанавливается програм м а папо,

которую тож е м о ж но запускать с по­

Наверное, начинать лучше всего с редактора nano ввиду его простоты. Если он еще не установлен, его можно найти в репозиториях большинства дистрибути­ вов (чтобы узнать, как установить пакет nano, обратитесь к главе 9). Приложение рісо во многом похоже на nano, однако последнее обладает дополнительными воз­ можностями, что делает его более мощным редактором. На рис. 10.1 показано ТПИ-приложение nano с открытым файлом под названием животные.tx t.

м ощ ью ком анды рісо.

Рис. 10.1. Редактор папо позволяет редактироватыекстовые файлы в командной строке

Запуск редактора 243

Помимо консольных, существует и множество текстовых редакторов с графи­

ческим интерфейсом, включая следующие.

□ eraacs. Этот редактор обладает как текстовым, так и графическим интерфейсом. Правда, в графическом режиме некоторые его функции ведут себя немного не­ обычно, например, полоса прокрутки для перемещения по файлу отображается в левой части окна, а не справа, как это обычно принято.

□ gedit. Среда рабочего стола GNOME предоставляет интегрированный тек­ стовый редактор gedit. Он довольно прост и часто устанавливается по умол­ чанию.

□ KWrite и Kate. По аналогии с тем, как программа gedit интегрирована в среду GNOME, редакторы KW rite и Kate являются частью рабочего стола KDE (К Desktop Environment). KW rite отличается более продвинутыми возможно­ стями, a Kate имеет несколько дополнительных функций, по сравнению с ged it, однако ни один из них не сравнится с emacs.

□ Geany. Этот редактор не привязан ни к какой определенной среде рабочего стола; он компактный, легковесный и достаточно мощный. Работает и в других системах помимо Linux, в том числе в Windows. Это удобно, если вы хотите использовать один и тот же редактор на разных платформах.

Для пользователя-новичка в системе Linux подойдет любой из перечисленных ГПИ-редакторов. Все они предоставляют основной набор функций, необходимых для редактирования текстов. Выбор может зависеть от того, какой из них установ­ лен по умолчанию в вашей системе. Если говорить о долгосрочной перспективе, то вам, наверное, лучше опробовать различные текстовые редакторы, чтобы найти для себя подходящий.

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

Текстовый редактор можно также запустить из ко­ мандной строки (от имени обычного пользователя, что­ бы отредактировать собственные файлы с помощью стандартных привилегий). Для изменения системных

О том , как получить привилегии

администратора, необходим ые для

редактирования систем ны х тексто­

вы х файлов, рассказано в главе 12.

244 Глава 10. Редактирование файлов

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

$ nano

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

В центре верхней строки имеется надпись Новый буфер (New Buffer) (рис. 10.2). Вы можете начать вводить нужный вам текст. При сохранении файла (см. подраз­ дел «Сохранение внесенных изменений в редакторе nano» в следующем разделе) nano спросит у вас его имя.

Рис. 10.2. Редактор nano, запущенный без указания имени файла

Как вариант, можете указать имя файла во время запуска текстового редактора, например, следующим образом:

$ nano aMepHKaHCKafl_Hoeenna.txt

Если вы сделаете опечатку, пало ото­

бразит пустой файл. Следовательно,

если вы видите пустой редактор

вместо содержимого нужного вам

В этом примере открывается и отображается файл американская_новелла.1хС Если его не существует, nano покажет внизу экрана надпись Новый файл (New File) (в том месте, где на рис. 10.1 выводится Прочитано 5 строк (Read 5 lines)). Если в третьей строчке снизу показано предупреждение Warning: no write permission, значит, у вас нет привилегий для изменения загружен­ ного файла.

при написании его имени.

файла, вы , скорее всего, ошиблись

Если вы все равно хотите отредактировать этот файл, вам придется либо из­ менить его привилегии, как описывается в главе 14, либо запустить nano от имени администратора.

Редактирование файлов в программах рісо и nano 245

Редактирование файлов в программах рісо и nano Если вы уже знакомы с консольными текстовыми редакторами, у вас не должно возникнуть особых проблем при работе с рісо или nano. Если же ваш опыт редак­ тирования текста ограничивается работой в графической среде, вам придется из­ учить несколько комбинаций клавиш. К примеру, для перемещения по документу вместо мыши нужно использовать клавиатуру. Операции вставки, замены и уда­ ления текста аналогичны тем, что используются в текстовых редакторах или про­ цессорах с графическим интерфейсом.

С оглаш ения, п р и н я ты е в те ксто в ы х р е д а кто р а х

У каждого текстового редактора есть свой набор соглашений относительно того, как отображать информацию на экране, как работать с текстом и т. д. Большинство консольных текстовых редакторов похожи до определенной степени, например одна или несколько строк вверху или внизу выводят краткие сведения или запро­ сы. На рис. 10.1 и 10.2 приложение nano выводит следующую информацию.

□ Панель заголовка. Первая строка экрана отводится под заголовок. В ней ука­

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

□ Строка состояния. В третьей строке снизу отобра­ жается информация о состоянии и взаимодействии с пользователем. В ней редактор будет запрашивать у вас имя файла при сохранении документа или текст, который вы хотите найти в результате поиска.

□ Сочетания клавиш. В двух нижних строках редакто­ ра собраны некоторые часто использующиеся опера­ ции вместе с сочетаниями клавиш, которые их вы­ зывают.

Помимо управляющих символов, nano использует метасимволы для активации некоторых функций. Эти сочетания состоят из двух клавиш, первой может быть Esc, Alt или Meta (в зависимости от настроек клавиату­ ры). В документации к редактору nano метапоследова­ тельности обозначаются как М-к, где к — определенная

В докум ентации к редактору nano

сказано, что з н а к Л , указанны й

перед буквой, обозначает управ­

ляю щ ий символ. В зго й книге для

обозначения подобны х сочетаний

клавиш вместо данного знака ис­

пользуется ком бинация C trl+ .

Клавиша M eta отсутствует на боль­

ш инстве соврем енны х клавиатур

(сверьтесь с докум ентацией от п ро­

изводителя клавиатуры ). В качестве

зам ены д ля воспроизведения мета­

последовательностей в редакторе

пало сначала стоит воспользоваться

клавиш ей Esc. Если не сработает,

замените ее клавиш ей Alt.

246 Глава 10. Редактирование файлов

клавиша. Например, последовательность М-? позволяет перейти к последней строчке документа. Стоит отметить, что это два отдельных нажатия клавиш, в от­ личие от сочетаний, начинающихся с Ctrl; то есть для перехода к последней строч­ ке документа сначала нажимается и отпускается Esc (или Alt, или Meta) и только потом нажимается клавиша со знаком вопроса (?), включая модификатор Shift.

О сн овн ы е о п е р а ц и и р е д а кти р о в а н и я те кста в п р о гр а м м е nano

Чтобы понять, как работает редактор nano, рассмотрим процедуры создания и ре­ дактирования фай лажи B O T H b ie .tx t (см. рис. 10.1). Вы можете следовать приведен­ ным здесь инструкциям. Прежде всего файл должен содержать виды животных, как показано в листинге 10.1. Сохранив содержимое файла, добавим новый вид животных с помощью текстового редактора.

Листинг 10.1. Демонстрационный ф айл ж и в о т н ы е ^

собака кошка п т и ч к а рыбка

Данный пример начинается с запуска редактора nano

и создания с его помощью

пустого файла с именем животные. tx t.

  1. Откройте программу терминала и, находясь в своей домашней папке, введите команду nano животные. txt, после чего нажмите клавишу Enter. В центре панели заголовка должна появиться надпись Файл: живот­ н ы е ^ (File: животныеіхі), а в центре строки состо­ яния вы должны увидеть статус Новый файл (New File). Это говорит о том, что вы создали пустой файл с именем животные.tx t.

Если редактор nano не установлен

в ваш ей системе, вы можете

исправить это, воспользовавшись

инф орм ацией из главы 9.

  1. Чтобы добавить первый вид животных, введите слово с о б а к а и нажмите кла­ вишу Enter. Повторите то же самое для остальных записей, приведенных в листинге 10.1.

Н а этом этапе экран редактора должен напоминать рис. 10.1, который демон­

стрирует редактирование файла животные.tx t в программе nano.

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

Редактирование файлов в программах рісо и папо 247

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

курсором.

  1. Нажмите клавишу Enter. В результате между словами птичка и рыбка появится

новая строка.

  1. Перейдите к этой строке, нажав один раз клавишу f •

  2. Введите слово крокодил, но не. нажимайте Enter.

Второй способ создания новой записи позволяет продемонстрировать операции

копирования, вырезания и вставки текста в редакторе.

  1. С помощью клавиш управления курсором перейдите к началу строки со словом крокодил, которое вы только что ввели; курсор должен остановиться на первой букве к.

  2. Нажмите М-6 (второе нажатие — это цифра 6; пом­ ните, что в зависимости от настроек клавиатуры в качестве метаклавиши могут выступать Esc или Alt). Внешне ничего не должно поменяться, однако это сочетание клавиш копирует в буфер строку, на кото­ рой находится курсор. Сам курсор должен переме­ ститься на букву р в слове рыбка.

  3. Нажмите Ctrl+U. Это сочетание вставляет содержимое буфера в текущую позицию в файле. Слово крокодил должно теперь находиться в двух разных строках.

  4. С помощью клавиш управления курсором перейдите к началу второй строки со словом крокодил, которую вы только что создали; курсор должен остановиться на первой букве к.

В ком бинациях с м етасимволам и

сначала нажим ается Esc (или M eta,

или A lt) и только п о т о м —

следу­

ющая клавиш а. Не удерж ивайте

клавиш и, как это делается в сочета­

ниях, начинаю щ ихся с Ctrl.

Как вариант, сочетание клавиш

C trl+ K вырезает текст, то есть

убирает его из файла и копирует

в буфер. Это м ож ет пригодиться при

перем ещ ении стр о к в другое место

файла.

  1. Нажмите сочетание клавиш Ctrl+K, чтобы целиком вырезать вторую строку со словом крокодил. Курсор должен переместиться в начало строки со словом рыбка.

  2. Нажмите Ctrl+N, чтобы перейти к следующей строке в файле. Курсор должен

остановиться ниже строки со словом рыбка.

  1. Введите слово хомяк, чтобы добавить еще один вид

животных.

Аналогичным способом можно внести дополнитель­ ные изменения. И хотя программа nano является кон­ сольной, принципиально она мало чем отличается от

Чтобы сохранить новый файл

ж и в о тн ы е .ш , созданный в редак­

торе папо, прочитайте следую щ ий

подраздел.

248 Глава 10. Редактирование файлов

текстовых редакторов и процессоров с ГПИ; вам просто надо знать сочетания клавиш для нужных вам функций.

Нажатие Ctrl+G выводит справочную документацию, в которой собраны возмож­ ности программы пало. Это пригодится по мере знакомства с данным редактором. В число дополнительных функций, которые могут быть полезны, входят:

□ перемещение в начало или конец файла. Как и в других редакторах, для пере­ Page Up, Page Down, мещения курсора можно использовать клавиши f» 1» •*—. Home и End. Чтобы перейти в начало файла, нужно нажать М-; для перехода в конец файла предусмотрено сочетание М-/;

□ копирование или перемещение нескольких строк. Если вам нужно скопировать или переместить последовательность строк, вы можете это сделать с помощью операций М-6 или Ctrl+K, повторив их несколько раз; nano сохраняет все скопи­ рованные или вырезанные строки, поэтому после нажатия Ctrl+U все они встав­ ляются обратно;

□ вставка файла. Нажатием СМ+Яили F5 можно вставить другой файл в текущую

позицию курсора;

□ поиск текста. Нажатие Ctrl+W или F6 активизирует функцию поиска. Редактор попросит вас ввести поисковый запрос. Когда вы это сделаете и нажмете Enter, nano найдет первое вхождение введенного запроса в файле. При повторном на­ жатии Ctrl+W или F6 будет использован ранее введенный вами запрос, поэтому таким способом можно искать один и тот же текст снова и снова. Вы также можете повторить последнюю операцию поиска, нажав M-W;

□ замена текста. Вы можете заменить один текст другим, нажав Ctrl+\ или M-R. Программа попросит вас ввести поисковый запрос и то, на что его нужно по­ менять. Затем начнется поиск — и вам будет предложено подтвердить замену. Если вы хотите заменить все вхождения запроса без подтверждения каждой операции, нажмите клавишу А при первом запросе.

С охр а н е н и е вн е се н н ы х и з м е н е н и й в р е д а кто р е nano

Внеся изменения в файл, вы, вероятно, захотите их сохранить. Один из способов это сделать — использование сочетания Ctrl+O (это буква О, а не цифра 0). Если его нажать, nano попросит ввести имя файла:

Имя файла для записи1:

i В англ, версии: Write Selection to File.

Редактирование файлов с помощью программы ѵі 249

Обычно в поле ввода уже находится исходное имя, поэтому, если оно вас устраи­ вает, вы можете нажать клавишу Enter и сохранить файл. Вы можете также ввести новое имя, удалив предварительно старое. Если вы запустили nano без указания имени файла, этот запрос как раз подходит для его ввода.

Сохранить файл можно также с помощью сочетания клавиш Ctrl+X. Эта коман­ да закрывает редактор nano, но если ваш файл был изменен, вы увидите следующую строку подтверждения:

С о х р а н и ть изменённы й буф ер?

(ИНАЧЕ ВСЕ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ)1

Чтобы сохранить изменения, нажмите клавишу Y. Программа покажет вам ту же строку подтверждения, что и при нажатии Ctrl+O, поэтому при желании можно изменить имя файла. Выполнив сохранение, nano завершает работу.

Если ранее в этой главе вы следовали инструкциям по созданию и редактиро­ ванию файла животные.tx t, можете выполнить приведенные ниже шаги, чтобы сохранить внесенные вами изменения.

  1. Нажмите Ctrl+O, чтобы начать процедуру сохранения файла (в редакторе nano

с открытым файлом животные.tx t).

  1. В строке состояния должны появиться слова Имя файла для записи: животные, txt. Нажмите клавишу Enter, чтобы сохранить файл. В строке состояния должен поя­ виться текст наподобие Записано б строкѣ

  2. Нажмите сочетание клавиш Ctrl+X, чтобы выйти из редактора nano и вернуться

в командную строку.

Чтобы набраться опыта работы с редактором nano, попробуйте внести различные изменения в файл животные, tx t с помощью разных команд. Не забудьте вниматель­ но ознакомиться со справочной документацией, которую можно открыть и закрыть с помощью сочетаний Ctrl+G и Ctrl+X соответственно.

Редактирование файлов с помощью программы ѵі Программа ѵі была первым полноэкранным текстовым редактором, написанным для системы Unix. Она создавалась достаточно компактной для того, чтобы по­ мещаться на крошечных старомодных системах экстренной загрузки, основанных

1 В англ, версии: Save modified buffer (ANSWERING “No” WILL DESTROY CHANGES). ■’ В англ, версии: Wrote 6 lines.

250 Глава 10. Редактирование файлов

на дискетах. В какой-то момент проект GNU разработал открытую замену редак­ тору ѵі, добавив в него несколько улучшений и назвав vim. И хотя большинство дистрибутивов поставляются вместе с программой vim, ее по-прежнему часто на­ зывают ѵі. Она сохранила прямую совместимость с версиями ѵі, и для ее запуска обычно используется команда ѵі (хотя в некоторых дистрибутивах применяется команда vim). Информация, представленная в данном разделе, относится к обоим этим редакторам.

Программа ѵі подходит для редактирования конфигурационных файлов, но в полной мере ее потенциал раскрывается при работе с программным кодом, на­ пример со сценариями командной оболочки. Несмотря на то что многие считают этот текстовый редактор сложным в использовании, знакомство с ним принесет вам несомненную пользу.

Р еж им ы р е д а кто р а ѵі

Для того чтобы использовать программу ѵі, сначала необходимо разобраться в режимах, в которых она работает. Затем можно будет приступить к редакти­ рованию. В любой момент времени ѵі находится в одном из описанных далее режимов.

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

□ Режим двоеточия (или последней строки). Для работы с файлами (сохране­ ния текущего файла или запуска внешней программы) предусмотрен режим двоеточия. Чтобы попасть в него из командного режима, нужно ввести двое­ точие (:), за которым обычно должна следовать соответствующая команда. После выполнения такой команды ѵі автоматически возвращается в команд­ ный режим.

□ Режим ввода. Создан для ввода текста. Большинство нажатий клавиш на клавиатуре приводит к появлению символов на экране. Исключение — клави­ ша Esc, которая позволяет выйти из режима ввода и вернуться в командный режим.

К сожалению, терминология, относящаяся к режимам редактора ѵі, является непоследовательной. Например, командный режим иногда называют нормальным, а режим ввода порой упоминается как режим вставки или режим редактирования. Режим двоеточия в некоторых источниках вообще не считается режимом; вместо этого применяется термин *команды двоеточия».

Редактирование файлов с помощью программы ѵі 251

ПАКЕТ РЕДАКТОРА ѴІ/ѴІМ В ВАШЕЙ СИСТЕМЕ_________________________________

В вашей Linux-системе по умолчанию может не оказаться полного установленного паке­ та с редактором ѵі/ѵіш. Например, в дистрибутиве могут быть предустановлены пакеты vim.tiny или vim.minimal. И хотя они позволяют запускать редактор, некоторыефункции, включая те, что описаны в этой главе, могут оказаться недоступными. Если вы хотите изучить и использовать приложение ѵі в полном объеме, лучше установить полный пакет под названием vim.

Чтобы проверить, есть ли ѵі в вашей системе, введите команду type ѵі. Результат должен содержать имя программы (ѵі или vim) и ее местоположение. Например:

$type ѵі ѵі является /usr/bin/vi1

Получив название программы и каталог, в котором она установлена, введите команду с синтаксисом readlink -f /путь/программа, чтобы определить, ссылается ли она на другой файл (ссылки на файлы рассматриваются в главе 7). Вы можете получить результат, по­ хожий на следующий:

$ readlink -f /usr/bin/vi /usr/bin/vim.tiny

После этого следует проверить пакет, в котором поставляется программа (хотя в неко­ торых случаях по названию программы нельзя определить, в состав какого пакета она входит). Для получения этой информации воспользуйтесь подходящим инструментом для управления программными пакетами. В нашем примере используется дистрибутив Ubuntu, поэтому выполняем команду dpkg -S с применением администраторских при­ вилегий (о том, как их получить, читайте в главе 12).

$ sudo dkpg -S /usr/bin/vim.tiny [sudo] пароль для rightman: vim-tiny: /usr/bin/vim.tiny

Как видите, в нашем случае установлен пакет vim.tiny. Если ваш пакет называется vim или vim.basic, у вас не должно возникнуть проблем с командами редактора ѵі. В про­ тивном случае, чтобы получить возможность выполнять дальнейшие инструкции, нуж­ но установить пакет vim. В дистрибутиве Ubuntu, например, это делается с помощью команды apt-get install vim (установка пакетов рассматривается в главе 9).

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

1 В англ, версии: ѵі is hashed /usr/bin/vi.

252 Глава 10. Редактирование файлов

О сн о вн ы е п р о ц е д ур ы р е д а кти р о в а н и я те кста в п р о гр а м м е ѵі

В качестве примера для изучения редактора ѵі рассмотрим процедуру создания и изменения файла животные.tx t, описанную в подразделе «Основные операции редактирования текста в программе nano» предыдущего раздела. Содержимое этого файла приводится в листинге 10.1.

Первыми шагами будет запуск программы ѵі и соз­

дание с ее помощью пустого файла животные.tx t.

  1. Откройте программу терминала и, находясь в своей домашней папке, введите команду ѵі животные.txt, после чего нажмите клавишу Enter. В строке сообще­ ний внизу окна должна появиться надпись “живот­ ные, txt” [New File]. Это говорит о том, что вы создали новый пустой файл с именем животные.txt.

Если вы создали файл ж и в о тн ы е .» !

ранее и хотите следовать приведен­

ным здесь инструкциям , нужно его

удалить; для этого введите команду

rm ж и в о тн ы е .» ! и наж м ите Enter.

  1. Вы находитесь в командном режиме. Чтобы войти в режим ввода, нажмите клавишу I. Об успешном выполнении этой команды должно свидетельствовать слово - -INSERT- - в строке сообщений внизу окна.

  2. Чтобы добавить первый вид животных, введите собака и нажмите Enter. По­ вторите то же самое для остальных записей, приведенных в листинге 10.1.

  3. Нажмите Esc, чтобы выйти из режима ввода. Обратите внимание, что надпись –INSERT– исчезла из строки сообщений. Теперь редактор ѵі находится в ко­ мандном режиме.

  4. Нажмите :, чтобы войти в режим двоеточия, введи­ те команду wq и нажмите Enter. В результате содер­ жимое буфера редактора ѵі будет записано в файл животные, txt (команда w), а сам редактор будет за­ крыт (команда q), после чего вы опять окажетесь в командной строке.

  5. Введите команду ѵі животные.tx t и нажмите Enter

для повторного открытия файла животные.tx t,

Результат ваших действий будет похож на рис. 10.3, на котором изображен редактор ѵі в командном режиме с файлом животные.tx t. Как видите, в некоторых систе­ мах слева выводятся знаки «тильда» (~), сигнализиру­ ющие об окончании файла.

У вас м о ж е т в о з н и кн уть искуш ение

воспользоваться стандартны м и

д л я текстовы х процессоров

сочетаниям и кл а в и ш , наприм ер

C trl+ S для сохранения файла.

Это не о ч е н ь удачная идея, по­

ско л ь ку такая ко м б и на ци я клавиш

м о ж е т п ривести к зависанию тер­

м инал а. Чтобы вернуть терм инал

в рабочее состояние, необходим о

н аж ать C trl+Q .

Редактирование файлов с помощью программы ѵі 253

На рис. 10.3 программа ѵі показана сразу после загрузки файла, поэтому в ниж­ ней строке выводится состояние последней команды — из файла животные.txt загружены четыре строчки и 48 символов (4 lines, 48 characters).

rightm tngbubuntu: ~

|о6лКі) К04К4 п ти ч ка |>чЧ 1

“flllM TM M txt” 4 l i n e s , 48 ch«» ас t e r s

Рис. 10.3. Внизу окна редактора ѵ і находится строка состояния, которая показывает программные сообщения

Как и в случае с nano, редактор ѵі позволяет добавлять новые записи в файл животные.tx t — либо вводя их полностью с нуля, либо дублируя существующие строки и затем изменяя их соответствующим образом. В первом случае нужно вы­ полнить следующие шаги.

  1. Перейдите в начало строки со словом bird, используя клавиши управления

курсором.

  1. Нажмите клавишу О (букву О, а не цифру 0). Сразу под текущей строкой появит­

ся новая — перейдите к ней и переключитесь в режим ввода.

  1. Введите новую запись: крокодил.

  2. Нажмите Esc, чтобы вернуться из режима ввода в командный режим.

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

струкциям, приведенным ниже.

  1. Перейдите в начало строки со словом крокодил, которую вы только что создали, при необходимости используя клавиши управления курсором. Курсор должен остановиться на первой букве к.

  2. Скопируйте строку с текстом. Для этого воспользуйтесь командой уу, предва­ рительно указав количество строк, которые нужно копировать. В нашем случае нужно ввести Іуу (при этом ненужно нажимать Enter). Внешне ничего изменит­ ся, однако строка, в которой находится курсор, попадет в буфер.

  3. Переместите курсор в строку со словом птичка. Она находится над тем местом,

где должна быть создана новая строка.

254 Глава 10. Редактирование файлов

  1. Введите р (снова без нажатия Enter), ѵі вставит со­ держимое буфера (крокодил) в строку, в которой установлен курсор. Теперь в файле будут две одина­ ковые строки со словом крокодил. Курсор должен находиться в начале первой из них.

  2. Переместите курсор на первую букву к в слове кро­

Если вы хотите вставить текст, на­

чиная со строки, которая находится

над курсором, используйте про­

писную ком анду Р.

кодил, которое вы только что вставили, если он еще не там. Эта строка должна быть удалена.

  1. Команда dd действует так же, как и уу, только, помимо копирования строк в буфер, она их еще и удаляет. Введите dd, чтобы удалить строку reptile. Теперь файл должен содержать только один экземпляр этого слова.

  2. Сохраните файл и выйдите из редактора, введя ZZ.

Эта команда является аналогом :wq.

Существует множество дополнительных команд,

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

Команды уу и dd являются особым

подвидом команд у и d соот­

ветственно, которые копируют

и удаляют текст в объемах, указыва­

ем ы х в виде следующего символа,

наприм ер, команда d w удаляет

идущ ее следом слово.

□ Изменение регистра. Представьте, что вам нужно изменить регистр слова в файле. Вместо того чтобы переключаться в режим ввода и заново набирать все слово, вы можете воспользоваться клавишей ~ (тильда) в командном режиме. Установите курсор на первом символе, который вы хотите изменить, и нажи­ майте ~, пока не добьетесь желаемого результата.

□ Отмена. Для того чтобы отменить любое изменение, введите и в командном

режиме.

□ Открытие текста. Ввод буквы о в командном режиме открывает текст, то есть вставляет новую строку сразу после текущей и переключает редактор в режим ввода.

□ Поиск. Чтобы найти в файле какой-либо текст, введите его в командном режи­ ме сразу после символов / или ?. Первый выполняет поиск в прямом направле­ нии, второй — в обратном.

□ Изменение текста. Символ с в командном режиме изменяет текст. Он работает по аналогии с команда­ ми d или у: cw изменяет следующее слово, а сс — всю строку.

□ Переход к строке. Клавиша G позволяет перейти к заданной строке. Нажатие клавиш Н и L перемеща­ ет курсор на верхнюю/нижнюю строку экрана.

Если нуж но изм енить метод

кодирования конца строки в файле

с W indow s на U nin/Linux, откройте

файл в редакторе ѵі и введите

ком анду :s e tff= u n ix .

Редактирование файлов с помощью программы ѵі 255

□ Глобальная замена. Чтобы заменить все вхождения одной подстроки другой, введите команду :Хs / ис­ ходная/новая/g, где указываются исходная строка и ее замена — новая строка. Чтобы сузить диапазон за­ мены, введите вместо символа % номера начальной и конечной строк, разделенные запятой.

Символы /д в конце ком анды

м ож но опустить, если исходная под­

строка встречается в лю бой из строк

не более одного раза.

Редактор ѵі далеко не ограничивается возможностями, описанными здесь; он довольно мощный, и некоторые пользователи Linux отдают ему предпочтение. Ему посвящены отдельные книги, в которых содержится гораздо больше подробностей. Также можно посетить сайт проекта ѵі по адресу www.vim.org.

С охранение вн есе нн ы х и зм е н е н и й в р е д а кто р е ѵі

Чтобы сохранить изменения, не выходя из редактора, введите :w в командном ре­ жиме. Это переключит ѵі в режим двоеточия и запустит команду м, записывающую файл под именем, которое вы указали при запуске редактора. С помощью других команд можно выполнять следующие действия.

□ Редактирование нового файла. Команда : е инициирует редактирование ново­ го файла. Например, команда :е /etc /in itt ab загружает файл /etc/ini tt ab. Загрузка будет отменена, если текущий файл не был сохранен с момента по­ следнего изменения. Чтобы загрузить файл в любом случае, добавьте в конце команды :е восклицательный знак (!).

□ Вставка существующего файла. Команда : г вставляет содержимое существу­

ющего файла в текущий.

□ Выполнение внешней команды. Команда режима двоеточия : I позволяет за­ пускать внешние программы. Например, если ввести : I Is, запустится утилита Is, которая выведет список файлов в текущей папке.

□ Выход. Используйте команду :q, чтобы выйти из программы. Как и в случае с :е, эта команда сработает только при сохранении внесенных вами изменений или добавлении в конце восклицательного знака (: q !).

Команды двоеточия вроде тех, что приведены выше, можно комбинировать для последовательного выполнения действий. Например, как уже было показано ранее, команда :wq записывает изменения и закрывает программу ѵі.

256 Глава 10. Редактирование файлов

ОСНОВЫ И НЕ ТОЛЬКО

Текстовы е ф айлы , со д ерж им ое кото ры х код и р уется с п о м о щ ью ста н д а р то в A SCII и U nicode, игр аю т

важ н ую ро ль на б о л ь ш и н ств е к о м п ью тер н ы х п латф о рм , но в Lin u x их зн а ч е н и е особ ен но велико.

П ричина в то м , ч то в си сте м а х Lin u x к о н ф и гур ац и о н н ы е ф айлы и м е ю т п р е и м ущ е ств е н н о те к сто ­

вый ф орм ат, позтом у ум ен и е р аб отать с таки м и п ри лож ен и я м и , как pico, nano и ѵі, п о зво л и т вам

р е д а к ти р о в а ть м н оги е из них. П ом и м о ум е н и я со зд а в а ть sh e ll-сц е н а р и и в Linux, вы д олж ны б ы ть

зн ако м ы х о тя бы с од ним те к сто в ы м р ед акто р о м . О т ва с тр е б ую тся как м и н и м ум о сно вны е навы ки

работы с те к сто м , но чем б о л ьш е вы зн а е те о п ои ске, р ед а к ти р о в а н и и и п ер е м ещ ен и и те к сто в ы х

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

Упражнения

З а п у сти те ред акто р nano, что бы со зд а ть новы й ф айл, и вв е д и те како й -н и б уд ь а б за ц из этой гл а­

вы. П е р е чи тай те те к ст и и сп р авь те лю б ы е най д ен ны е о п е ч а тк и . Если вы не наш ли ни одной —

п озд равля ем ! Но в этом сл у ч а е н ар о чн о вн е си те о ш и б ки и затем и сп р ав ь те их.

З а п у сти те ред акто р ѵі, ч то б ы создать но вы й ф айл. В в е д и те к о н тр о л ь н ы е воп р осы из этой главы

и зате м в с та в ь те о тв е ты . В о сп о л ь зуй те сь р а зн ы м и ф ун к ц и я м и р е д а к ти р о в а н и я (и зм е н е н и е

р е ги стр а и поиск по те к сту ).

Контрольные вопросы

У каж и те тип ф айло в, п ро см отр и ре д а к ти р о в а н и е кото ры х в п ап о и м е е т м е н ь ш е в с е го см ы сла.

A.

Текстовы й ф айл в код и р овке U nicode.

Б.

B.

Г.

Сц енарий ком анд н ой оболочки.

Текстовы й ф айл в код и р овке ASCII.

Д о к ум е н т тек сто в о го процессора LibreO ffice.

Д .

К онф и гурац и о нны й ф айл в си сте м е Linux.

К а к о е со четан и е кл а в и ш а к ти в и зи р уе т ф ункцию поиска в р ед а к то р а х р і с о и п а п о (укаж и те все п од ход я щ и е вар и ан ты )?

А.

Б.

В.

F3.

F6.

Esc-S.

C trl+ F .

Г. д. К а к б ы вы уд алили д в е с тр о ч к и те к ста из ф айла с п о м о щ ью ред акто ра ѵ і ?

C trl+ W .

А.

У ста н о в и ть курсор в первую стр о к у и в в е сти 2 d d в ком ан д н ом реж им е.

Б.

У ста н о в и ть курсор в последню ю стр о к у и в в е сти 2 уу в ком ан д н о м реж им е.

Редактирование файлов с помощью программы ѵі 257

В.

У ста н о в и ть кур со р в н а ч а л о первой с тр о к и и, нахо д я сь в реж и м е ввод а, д важ д ы н а ж а ть J,,

уд е рж и вая к л а в и ш у Sh ift, п осле ч е го н а ж а ть к л а в и ш у D elete.

Г.

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

C trl+ K .

Д .

В ы д ел и ть текст м ы ш ь ю и затем в ы б р а ть п ун к т м еню F ile ► Delete (Ф айл

► Уд али ть).

И стина или лож ь: ста н д а р т U nicode п од ход и т д л я к о д и р о ван и я евр о п ей ски х, но не ази атски х

я зы ко в.

И сти н а или л о ж ь : ГП И -р е д а к то р ы с п од д ерж ко й A SCII л у ч ш е к о н со л ьн ы х а налогов, та к как по­

зв о л я ю т ф о р м а ти р о в а ть те к с т с п ом ощ ью п о д ч е р ки ван и я, кур си в а и р а зн ы х ш ри ф то в.

И стина или ло ж ь: если вы никогда р а н ь ш е не п о л ь зо в а л и сь те к сто в ы м р е д акто ром , л у ч ш е всего

н а ч ать с папо.

Кодировка ASCII п о д д е р ж и в а е т_ _ _ _ _ _ _ _ _ _ _ ун и к а ль н ы х си м воло в (не у ч и ты в ая служ еб ны е).

В ред акто ре nano су щ е ств у е т тр и со че тан и я к л а в и ш , к о то р ы е а к ти в и зи р ую т ф ункц и ю поиска

и зам ен ы : F 6 ,_ _ _ _ _ _ _ _ _ _ _ _ и _ _ _ _ _ _ _ _ _ _ _ _ .

Ч то бы о тм е н и ть и зм е н е н и я в ко м ан д н о м реж и м е р ед акто ра ѵі, м о ж н о в в е с т и _ _ _ _ _ _ _ _ _ _ _ .

Чтобы со хр ан и ть и зм е н е н и я и в ы й ти из ред акто ра ѵ і , нуж н о в в е с т и _ _ _ _ _ _ _ _ _ _ _ _ в к о м а н д ­

ном реж им е.

Глава 11 Создание сценариев

Сценарий (скрипт) — это программа, написанная на интерпретируемом языке и, как правило, взаимодействующая с командной оболочкой (shell) или скомпилирован­ ным приложением. В среде Linux многие сценарии являются shell-сценариіши, основанными на Bash или другой командной оболочке (по своему назначению они похожи на пакетные файлы в Windows). Вы можете создавать shell-сценарии для автоматизации рутинных повторяемых действий или выполнения новых и сложных задач. Таким образом, в Linux осуществляются многие загрузочные операции, по­ этому освоение сценариев поможет вам управлять процессом загрузки.

В этой главе рассматриваются shell-сценарии на основе интерпретатора Bash. Мы начнем с создания нового сценариевого файла, после чего познакомимся с не­ сколькими важными возможностями сценариев, которые пригодятся для выпол­ нения более сложных задач.

□ С чего начинается сценарий.

□ Команды.

□ Аргументы.

□ Переменные.

□ Условные выражения.

□ Циклы.

□ Функции.

□ Значение завершения сценария.

Если хотите знать больше. Создание shell-сценариев может оказаться довольно непростым занятием. Данная глава охватывает лишь малую часть того, чего можно достичь с помощью сценариев. Больше информации по этой теме можно найти

С чего начинается сценарий 259

в третьем издании книги Ричарда Блума и Кристины Бреснахен Linux Command Line and Shell Scripting Bible (Wiley, 2015).

С чего начинается сценарий Сценарии командной оболочки представляют собой обычные текстовые файлы, поэтому создаются они в текстовых редакторах, таких как nano или рісо (см. гла­ ву 10). Shell-сценарий начинается со строки, определяющей оболочку, с помощью которой он выполняется. Например:

#!/bin/bash

Первые два символа — специальный код, который сигнализирует ядру Linux о том, что это сценарий и что оставшуюся часть строки следует использовать в каче­ стве пути к программе-интерпретатору этого сценария (иногда эту строку называют shebang, hashbang, hashpling или pound bang). В языках, на которых пишутся shell- сценарии, символ решетки (# ) применяется для обо­ значения комментариев, поэтому, в отличие от ядра, интерпретатор игнорирует данную строку.

После того как вы начнете созда­

вать более слож ны е сценарии,

у вас появится необходим ость

в хорош ем текстовом редакторе.

Если вы используется граф ический

рабочий стол, проблем возникать

не долж но — програм м ы KW rite

и GNOME Gedit отлично подходят

для написания текстовых shell-

сценариев. О днако, если вы работа­

оказаться не так просто. Редактор ѵі

ете в к о м а н д н о й строке, все м ож ет

наиболее стары й, и работать в нем

В большинстве систем /b in / sh является символьной ссылкой, указывающей на /bin/bash, но этот путь может ссылаться и на другую командную оболочку. Использо­ вание /b in /sh дает гарантию того, что в любой системе Linux найдется подходящая программа для выполнения вашего сценария. Однако если сценарий использует функции, характерные для какой-то определенной ко­ мандной оболочки, вместо /b in /sh вам следует указать именно ее, например bin/bash или /b in /tc s h . В этой главе рассматриваются shell-сценарии на основе Bash. Простой код, написанный для этого интерпретатора, может работать и в других командных оболочках, но чем сложнее примеры, тем больше вероятность того, что они не смогут запускаться где-либо еще.

п рям о в среде ком андной строки.

ют ф ункции оконного интерфейса

такие ка к рісо и nano, предоставля­

неудобно. Более новы е редакторы,

Закончив с написанием сценария, вы должны модифицировать его таким образом, чтобы он стал исполняемым. Для этого используется команда chmod, более подробно описанная в главе 14. Пока что вам достаточно знать о том, что разрешить выполнение для всех пользователей можно с помощью параметра а+х. Например, чтобы сделать исполняемым файл под названием my-script, нужно ввести следующую команду:

$ chmod а+х my-script

260 Глава 11. Создание сценариев

После этого вы сможете выполнить данный сценарий, набрав его имя; возмож­ но, вам придется добавить в начале ./, чтобы сообщить системе Linux о том, что сценарий нужно запускать из текущей папки, а не искать текущий путь. Вы также можете запустить файл, указав его имя после вызова программы командной обо­ лочки (например, bash my-script), но в целом лучше сделать его исполняемым. Если сценарий запускается регулярно, его можно переместить по одному из путей, указанных в переменной среды PATH, например /usr/local/bin. После этого для запуска сценария вам больше не нужно будет вводить его полный путь или пере­ мещаться в его папку; достаточно лишь набрать my-script.

Команды Одна из базовых возможностей shell-сценариев — запуск команд. Эти команды могут быть как внешними (так вы можете запускать другие программы), так и встроенными в оболочку. Большинство команд, которые вы набираете в команд­ ной строке, являются внешними; это программы, находящиеся в /Ып, /usr/bin и других каталогах, указанных в переменной PATH. Как и в случае с внутренними командами, для запуска нужно добавить их имена в сценарий. Там же можно ука­ зать их параметры. Представьте, что вам нужно открыть два окна, xterm и почтовое приложение КМаіІ.

Сценарий командной оболочки, который выполняет

эту задачу, показан в ли-

стинге 11.1.

Л и с т и н г 1 1 .1 . Простой сценарий дл я запуска трех программ

#!/bin/bash /usr/bin/xterm &

/usr/bin/xterm & /usr/bin/kmail &

П рое кт Fedora занимается стан­ дартизацией дистрибутивов Linux, пытаясь избавиться от каталога /bin. На сегодняшний день все программы в Fedora 2 4, находящиеся внутри /Ып, ссылаются на каталог /usr/bin, но однажды все они будут туда перенесены.

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

Команды 261

No such file or directory, попробуйте ввести which команда (где команда — вы­ зываемая команда) — это должно помочь вам определить ее местоположение.

Каждая строчка в листинге 11.1, отвечающая за запуск программы, заканчива­ ется амперсандом (&). Этот символ дает указание командной оболочке переходить к следующей строке, не ожидая завершения предыдущей. Если убрать амперсанды из листинга 11.1, откроется только первое окно xterm и, пока вы его не закроете, второе окно не будет запущено. Аналогично приложение КМаіІ запустится только после закрытия второго окна xterm.

Запуск нескольких программ из одного файла может сэкономить время при загрузке системы и в других ситуациях, но следует помнить, что сценарии часто используются для последовательного выполнения команд, которые каким-то об­ разом манипулируют данными. В таких сценариях обычно нет амперсандов в кон­ це команд, поскольку программы должны запускаться одна за другой, а некоторые из них могут полагаться на вывод своих предшественниц. Перечислить все коман­ ды такого рода не представляется возможным, поскольку таким образом можно запустить любое приложение, доступное для установки в Linux, даже другой сце­ нарий. Ниже представлен список команд, часто встречающихся в сценариях.

□ Обычные утилиты для работы с файлами. В сценариях часто используются утилиты для работы с файлами, например Is, mv, ср и ни. С их помощью можно автоматизировать рутинные задачи, связанные с обслуживанием.

□ grep. Данная команда описана в главе 8. Она выводит местоположение файлов

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

□ find. В то время как grep ищет шаблоны внутри файлов, команда find выпол­ няет поиск по их именам, владельцам и другим аналогичным свойствам. Под­ робнее об этом — в главе 8.

□ cut. Эта команда извлекает текст из полей файла. Она часто применяется для получения изменяющейся информации из файла, содержимое которого соот­ ветствует определенному шаблону. Для ее применения нужно указать один или несколько параметров, описывающих интересующие вас данные, и одно или несколько имен файлов в конце. Например, файл /etc/passw d состоит из полей, разделенных двоеточиями, и в шестом из них находятся домашние папки пользователя. Следовательно, чтобы извлечь эти данные, нужно ввести cut -f б -d /etc/passwd. Эту же команду можно использовать в сценарии; в таком случае извлеченную информацию имеет смысл сохранить в перемен­ ную или передать следующей команде.

□ sed. Эта программа обладает многими возможностями, характерными для тек­ стовых редакторов (такими как операции поиска и замены), но делает это с по­ мощью параметров, введенных в командной строке или набранных в сценарии.

262 Глава 11. Создание сценариев

□ echo. Иногда сценарий должен вывести сообщение пользователю; утилита echo как раз предназначена для выполнения этой задачи. Вы можете передавать ей различные параметры или ограничиться строкой, которую нужно показать. На­ пример, код echo “Нажмите клавишу Enter” даетсценарию команду отобразить указанную строку. С помощью команды echo также можно выводить значения переменных (см. раздел «Переменные»),

□ mail. Команда mail может применяться внутри сце­ нария для отправки электронной почты. Передайте ей параметр -s тема, чтобы указать тему письма, и укажите электронный адрес в качестве последнего аргумента. Если эта команда используется в команд­ ной строке, ввод сообщения завершается комбинацией клавиш Ctrl+D; в сцена­ рии тему письма можно опустить, а текст сообщения указать в виде внешнего файла с помощью перенаправления ввода. Вы можете использовать эту коман­ ду для отправки писем администратору, чтобы сообщать о действиях загрузоч­ ного или любого другого сценария, запускаемого автоматически.

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

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

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

Переменные, которые передаются сценарию, часто называют параметрами или аргументами. В коде они представлены в виде знака доллара ($), за которым еле-

Аргументы 263

дует число, начиная с нуля. $0 обозначает имя самого сценария, $1 — его первый параметр, $2 — второй параметр и т. д. Чтобы продемонстрировать, как из этого можно извлечь какую-то пользу, рассмотрим процесс добавления пользователя. Как описано в главе 13, создание новой учетной записи обычно подразумевает ис­ пользование как минимум двух команд — useradd и passwd.

В качестве примера, как сценарий с переменной-аргументом может помочь в такой ситуации, приведем листинг 11.2. Код создает учетную запись и изменяет ее пароль (запрос на ввод пароля появляется при запуске сценария). Попутно для учетной записи создается соответствующая папка в дереве каталогов / shared, ссылка на которую размещается в домашнем каталоге пользователя. Кроме того, в зависимости от системной политики изменяются привилегии и данные о вла­ дельце; это может пригодиться позже.

Листинг 11.2. Сценарий, который автоматизирует рутинное создание устных записей

#!/bin/bash useradd -m $1 passwd $1 mkdir -p /shared/$l chown $1.users /sh a re d /$ l chmod 775 /sh a re d /$ l In -s /shared/$l /home/$l/shared chown $1.users /hom e/$l/shared

Для того чтобы воспользоваться листингом 11.2, достаточно ввести имя сце­ нария с выбранными вами именем пользователя и паролем (пароль вводится дважды). Например, если сценарий называется mkuser, вы можете запустить его следующим образом:

mkuser ajones #

Changing password fo r user ajones New password: Retype new password: passwd: a l l au th en ticatio n tokens updated successfully

Большинство сценарных программ выводят что-то на экран, только если стал­ киваются с проблемами, поэтому взаимодействие с пользователем (включая ввод пароля, который, к слову, при этом не отображается) является сугубо результатом вызова команды passwd. В итоге код, приведенный в листинге 11.2, уменьшает количество вводимых строк с семи до одной. При этом каждая строка работает с именем пользователя, поэтому данный сценарий также снижает вероятность воз­ никновения проблем, связанных с опечатками.

264 Глава 11. Создание сценариев

Переменные

Некоторые переменные присваиваются внутри сценариев, например, с помощью вывода команды. Такие переменные тоже имеют в начале знак доллара, но обычно им дают имена, которые начинаются с буквы (к примеру, $ A d d r или $ N a m e ) ; как вы вскоре увидите, во время присваивания значений знак доллара опускается. Впо­ следствии такие переменные можно использовать в виде параметров обычной команды (только в этом случае команде будут передаваться их значения).

В качестве примера рассмотрим листинг 11.3, который с помощью утилиты ping проверяет, работает ли маршрутизатор компьютера. В данном сценарии име­ ются две переменные. Первая, $ір, извлекается из вывода программы route с ис­ пользованием команд grep, t r и cut. Команда, чей вывод присваивается перемен­ ной, должна иметь в начале и конце знак обратного апострофа ( ‘) , который на большинстве клавиатур находится на той же клавише, что и тильда (~). Это не обычные одинарные кавычки (которые делят одну клавишу с двойными кавыч­ ками). Вторая переменная, $ping, указывает на программу ping. Ее можно легко опустить с последующим использованием полного пути к этой программе или всего лишь ее имени (исходя из того, что переменная среды $ Р А Т Н поможет ее найти). Переменные такого рода иногда применяются, чтобы упростить внесение последующих правок в сценарий. Например, если команда ping будет перемещена, вам придется изменить только одну строчку кода. Переменные также можно ис­ пользовать в сочетании с условными выражениями, расширяя список систем, на которых работает сценарий, например, в некоторых системах утилита ping может называться как-то иначе.

Л и с т и н г 1 1 .3 . Сценарий, демонстрирующий присваивание и использование переменных

#!/bin/bash

I g r e p UG

|

t r

  • s

"

"

|

c u t

  • f 2

  • d

……..

  • n

і р = 1 r o u t e ping="/bin/ping" e c h o

" C h e c k i n g

$ p i n g

  • c 5 $ i p

t o s e e

i f

$ i p

i s u p . . . "

В строке, начинающемся с ір = ,

используются знаки обратного

апострофа, чтобы присвоить вывод

находящ ейся внутри них цепочки

ком анд перем енной ір. Данная

На практике сценарий, показанный в листинге 11.3, используется путем ввода его имени. Результатом долж­ но быть сообщение C h e c k i n g to s e e 1 92 .16 8 .1.1 i s u p (вместо 1 92 .16 8 .1.1 должен быть указан адрес шлю­ за, который используется по умолчанию в компьютере) и вывод команды p i n g , которая должна попытаться послать маршрутизатору пять пакетов. Если маршру­ тизатор работает и его конфигурация позволяет отвечать на «пинги», вы увидите пять возвращенных пакетов и краткую сводку следующего вида:

м етодика описана в главе 8.

i f

Переменные 265

$ routercheck Checking to see if 192.168.1.1 is up… PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=l ttl=65 time=23.0 ms 64 bytes from 192.168.1.1: icmp_seq=2 ttl=63 time=0.176 ms 64 bytes from 192.168.1.1: icmp_seq=3 ttl=63 time=0.214 ms 64 bytes from 192.168.1.1: icmp_seq=4 ttl=63 time=0.204 ms 64 bytes from 192.168.1.1: icmp_seq=5 ttl=63 time=0.191 ms

— 192.168.1.1 ping statistics— 5 packets transmitted, 5 received, 0% packet loss, time 4001ms

rtt min/avg/max/mdev = 0.176/4.758/23.005/9.123 ms

Если маршрутизатор не отвечает, вы увидите сообщения об ошибках, указыва­

ющих на то, что узел недоступен.

Листинг 11.3 имеет ограниченное применение и содержит ошибки. Например, он идентифицирует шлюз компьютера всего лишь по наличию строки UG в выводе команды route маршрутизатора. Если компьютер имеет две записи о маршрутах, такой подход не сработает, что, вероятно, приведет к неправильному поведению сценария. Однако листинг 11.3 и не должен быть безупречным; его назначение — проиллюстрировать присваивание и использование переменных.

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

Вы можете использовать аналогичный подход для получения имени текущего компьютера (с помощью команды hostname), текущей даты (команда date), обще­ го времени беспрерывной работы системы (команда uptime), свободного места на диске (команда df) и т. д. Переменные могут быть весьма полезными, если при­ менять их в связке с условными выражениями (описаны ниже), поскольку это позволяет выполнять разные действия в зависимости от того, какое условие было выполнено. Например, сценарий, устанавливающий программное обеспечение, может проверить наличие свободного дискового пространства, в случае если его недостаточно — прервет установку.

Помимо инициализации переменных с помощью оператора присваива­ ния (=), вы можете считывать их из стандартного ввода, используя команду read. Например, read response позволяет прочитать ввод и передать его пере­ менной $response. Такой способ присваивания переменных подходит для ин­ терактивных сценариев.

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

266 Глава 11. Создание сценариев

Результат представлен в листинге 11.4. Для запуска сценария достаточно ввести его название; в командной строке ничего указывать не требуется. Стартовав, сценарий запросит имя пользователя и, как только вы его введете, попытается создать на его основе учетную запись.

Листинг 11.4. И з м е н е н н а я в ер си я л и с ти н га 1 1 .2 , в к о то р о й п р о и схо д и т в заи м о д е й ств и е с пол ьзовател ем

I/ bin/bash #

echo -n “Enter a username:"

read name useradd -m $name passwd $name mkdir -p /shared/$name chown $name.users /shared/$name chmod 775 /shared/$name In -s /shared/$name /home/$name/shared chown $name.users /home/$name/shared

Существует специальный вид переменных — переменные среды. Их присваи­ вание и считывание происходит так же, как в случае с обычными переменными shell-сценариев. Разница заключается в том, что сценарий или программа, которая задает переменную среды, использует команду export, предоставляемую интер­ претатором Bash; это делается для того, чтобы переменная была доступна про­ граммам, запущенным в той же командной оболочке, или самому сценарию, вы­ полнившему присваивание. Другими словами, вы можете задать переменную среды в одном сценарии, а использовать ее в другом, запущенном позже.

Такие переменные чаще всего задаются в shell-сценариях начальной загруз­ ки, но они доступны и из используемых вами сценариев. Например, вызывая программы, работающие с Х-сервером, вы можете проверить наличие пере­ менной среды {DISPLAY и, если она еще не задана, прервать запуск. Имена пере­ менных среды принято записывать в верхнем регистре, тогда как для других переменных внутри shell-сценариев используется нижний или смешанный регистр.

Стоит отдельно остановиться на одной особой пере­ менной $?. Она хранит код завершения (или возвращае­ мое значение) последней запущенной команды. Боль­ шинство программ возвращают 0 (при нормальном завершении работы) либо другое значение, чтобы ука­ зать на ошибку. Вы можете отобразить этот код с по­ мощью команды echo или использовать его в условном выражении (см. ниже), чтобы обработать ошибку в своем сценарии.

означают ее коды завершения.

програм м ы , чтобы узнать, что

Сверьтесь со справочной страницей

Условные выражения 267

Условные выражения Сценарные языки поддерживают несколько видов условных выражений. Это по­ зволяет сценариям выбирать одно из действий в зависимости от конкретного усло­ вия (обычно это значение переменной). Широко распространенная команда, кото­ рая использует условные выражения, — if. Она дает возможность системе выбрать одно из двух действий на основе того, является ли истинным определенное условие. Условное выражение указывается в квадратных скобках вслед за ключевым словом i f и может принимать множество форм. Например, выражение -f файл истинно, если файл существует и является обычным файлом; -s файл истинно, если файл существует и имеет размер больше нуля; а строкаі == строка2 истинно, если обе строки имеют одинаковые значения.

Условные выражения можно комбинировать с помощью операторов логическо­ го И (&&) либо логического ИЛИ (| | ). В первом случае условие истинно, только если истинны выражения по обе стороны оператора. Во втором случае для этого достаточно истинности хотя бы одного выражения. Чтобы лучше понять, как при­ меняются условные выражения, рассмотрим следующий фрагмент кода:

if [ - s /tm p/tem pstuff ]

then

echo “/tm p/tem pstuff found; abortingl” ex it

f i

Этот фрагмент приводит к завершению сценария в случае существования файла /tm p/tem pstuff. Ключевое слово then обозначает начало последователь­ ности строк, которые выполняются, только если условие истинно, a f i ( i f наобо­ рот) указывает на конец блока i f . Такой код может пригодиться в сценарии, который создает и затем удаляет этот файл, так как его присутствие говорит о том, что предыдущий вызов данного сценария был неудачным или еще не за­ вершился.

Условные выражения вместо квадратных скобок могут содержать ключевое

слово te s t;

i f t e s t -s /tm p/tem pstuff

Вы также можете проверить возвращаемое значение команды, используя ее

в качестве условия:

i f [ команда ]

then

дополнительные - команды

f i

268 Гпава 11. Создание сценариев

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

Условные выражения могут быть дополнены инструкцией else:

i f [ услобное-выражение ]

then

команды

e lse

другие-команды

f i

Код такого вида выполняет либо команды, либо другие-команды, в зависимости от проверки условного-выражения. Это полезно в случае, если на каком-то участке программы должно произойти что-то, но что именно — зависит от определенного условия. Например, у вас может возникнуть необходимость выбрать для запуска одно из приложений для архивации файлов, исходя из данных, введенных пользо­ вателем.

Но что делать, если количество возможных вариантов больше двух, к примеру, если пользователь может ввести одно из четырех значений? Вы можете использо­ вать несколько вложенных инструкций if/th e n /e ls e , но такой код быстро стано­ вится неуклюжим.

Более элегантное решение — использование команды оператора case:

case слово in

шаблон1) команда(ы);; шаблоні) команда(ы);;

• 9 •

esae

В случае с оператором case выражение слово, как правило, является переменной, а каждый шаблон — ее потенциальным значением. Шаблоны можно расширять по примеру имен файлов, используя те же подстановоч­ ные символы и правила расширения (например, * обо­ значает любую строку). Так можно сопоставлять произ­ вольное количество шаблонов. Каждый набор команд должен завершаться двойной точкой с запятой ( ;; ) , а должно находиться ключевое слово esac (case наоборот).

Расширение им ен файлов с помощью звездочек (*), знаков вопроса (?) и д руги х специальных

сим волов иногда называют глоби- рованием (globbing).

в конце выражения case

Интерпретатор Bash выполняет команды, связанные с первым шаблоном, кото­ рый соответствует выражению слово. Затем поток выполнения переходит к строч­ ке, следующей за инструкцией esae; любые команды, находящиеся на пропущенном

Циклы 269

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

Циклы Условные выражения иногда используются в циклах. Цикл заставляет сценарий повторять выполнение за­ дачи, пока не будет удовлетворено определенное условие (или до тех пор, пока оно выполняется). В листинге 11.5 показан цикл, который проигрывает все аудиофайлы .wav в каталоге.

Л и с ти н г 1 1 .5 . С ц е н а р и й , в ы п о л н я ю щ и й к о м а н д у д л я к а ж д о г о п о д х о д я щ е г о ф а й л а в к а т а л о г е

!/bin/bash #

fo r d in ‘I s ♦.wav’; do aplay $d done

Команда aplay представляет собой

проигры ватель аудиофайлов. В не­

которых системах вам , возм ож но,

придется использовать вместо нее

play или ка кую -то д р у гу ю ком анду.

Цикл for выполняется по одному разу для каждого элемента в списке, сгенери­ рованном командой Is * .wav. Каждый из этих элементов (имен файлов), в свою очередь, присваивается переменной $d и передается команде aplay.

При создании циклов fo r может пригодиться команда seq (хотя это не единствен- ноеее назначение). Она генерирует список чисел в диапазоне, указанном с помощью двух аргументов. Например, seq 110 возвращает десять строчек, в каждой из которых указано число от 1 до 10. Вы можете запустить цикл fo r х in ’ seq 1 1Ѳ *, чтобы вы­ полнить его десять раз, инкрементируя значение х на каждой итерации. Если передать команде seq только один параметр, она интерпретирует его как конечную точку, взяв за начало значение 1. Если указать три параметра, они будут приняты за отправную точку, величину инкремента и конечное значение.

Инструкция while является еще одним видом циклов, выполняющимся до тех пор, пока его условие остается истинным. Простейшая форма этого цикла выглядит так:

while [ условие ] do

команды

done

Цикл u n til внешне похож на while, но продолжает выполнение до тех пор, пока

его условие ложно, то есть пока оно не становится истинным.

270 Гпава 11. Создание сценариев

Функции Функция — это часть сценария, которая выполняет отдельную подзадачу и может быть вызвана по имени из других участков кода. Чтобы ее объявить, нужно указать круглые скобки после имени функции, а содержимое поместить в фигурные скобки:

мояфункция() {

команды

}

Перед именем функции можно по желанию указать ключевое слово function. Функция вызывается по имени, как будто это обычная внутренняя или внешняя команда. Функции могут пригодиться при создании модульных сценариев. Напри­ мер, если вам необходимо выполнить полдесятка отдельных вычислительных операций, вы можете поместить каждую из них внутрь функции и затем вызывать их все по очереди. В листинге 11.6 демонстрируется применение функций в простой программе, которая копирует файл и, если итоговое имя файла уже занято, аварий­ но завершается, возвращая сообщение об ошибке. Данный сценарий принимает имена исходного и итогового файлов, чтобы потом передать их функции.

Л и с т и н г 1 1 .6 . Сценарий, демонстрирующий использование функций

#/bin/bash

d o it() {

ср $1 $2

}

function check() {

if t -s $2 ]

then

echo “Target file exists! Exiting!” exit

fi

}

check $1 $2

doit $1 $2

Сохранив листинг 11.6 под именем saf егср, вы сможете использовать его следу­ ющим образом (исходя из того, что файл o rig in a l. tx t существует, a d e s t. tx t — нет):

$ ./safercp original.txt dest.txt

$ ./safercp original.txt dest.txt Target file exists! Exiting!

Значение завершения сценария 271

Первое выполнение сценария будет успешным, поскольку файл d e s t.t x t не существует. Однако при втором запуске у вас уже будет файл с таким именем, по­ этому сценарий аварийно завершится и вернет сообщение об ошибке.

Стоит отметить, что функции не выполняются в том порядке, котором они раз­ мещены в коде. Их выполнение происходит только в случае их вызова в основном теле сценария, которое в листинге 11.6 состоит всего из двух строчек в конце — по одной на каждый вызов.

Значение завершения сценария Обычно значение завершения сценария такое же, как у последней вызванной им команды; то есть сценарий возвращает $?. Однако с помощью команды e x it вы можете управлять этим значением или выйти из сценария в любой момент. Если вызвать инструкцию e x it без каких-либо параметров, сценарий немедлен­ но прекратит работу, вернув стандартный код завершения $?. Это может при­ годиться при обработке ошибок или в случае прерывания текущей операции по какой-либо причине. Например, если сценарий обнаруживает ошибку или если пользователь решает прекратить выполнение, вы можете вызвать e x it, чтобы выйти.

Если передать инструкции e x it числовое значение от 0 до 255, сценарий оста­ новится и вернет соответствующий код завершения. Вы можете использовать данную возможность для того, чтобы сообщать об ошибках другим программам, которые могут вызвать ваш сценарий. Однако при этом вам, возможно, придется дополнить свой код, чтобы отслеживать причины преждевременного завершения. К примеру, вы можете добавить переменную (скажем, Jtermcause) для хранения причины остановки сценария. Присвойте ей 0 в самом начале; затем, если обнару­ жите проблему, приводящую к преждевременному завершению, поменяйте ее значение на какое-то другое (вы можете использовать любые числовые коды по своему усмотрению; строгих правил на этот счет нет). При завершении сценария не забудьте передать Jtermcause команде exit:

e x it Jtermcause

ОСНОВЫ И НЕ ТОЛЬКО

О пы тны е п ользователи и а д м и н и стр а то р ы о п е рац и он но й си стем ы Lin u x д о лж н ы и м е ть хотя бы по­

верхн о стн ое п р е д ста в л е н и е о sh e ll-сц е н ар и ях. М ногие ко н ф и гур ац и о н н ы е и за гр у зо ч н ы е ф айлы , по

сути , я вл я ю тся сц ен ар и я м и ; в о зм о ж н о сть ч и та ть их (и д аж е и зм е н я ть ) п ом ож ет а д м и н и стр и р о в ать

272 Глава 11. Создание сценариев

ОСНОВЫ И НЕ т о л ь к о

систем у. У м ение пи сать sh e ll-сц е н ар и и п о зв о л я е т уп р о щ а ть р ути н н ы е оп е рац и и и со зд а в а ть под­

ход ящ и е д л я ваш их зад а ч и н стр ум е н ты , св я зы в а я воедино р а зл и ч н ы е п р о гр ам м ы .

Упражнения

Н а п и ш и те сц енар ий , кото ры й ко п и р ует ф айл, з а п р а ш и в а я у п о л ь зо в а те л я и сход ное и и тоговое

и м я, вм е сто то го чтобы п р и н и м а ть а р гум е н ты в ко м ан д н о й стр о к е , как это д е л а е т ути л и та ср.

Н еко торы е те к сто в ы е р е д акто ры о ста в л я ю т п осле себя р е зе р в н ы е ф ай лы , им ена которы х на­ чи н аю тся с ти л ьд ы ( ~ ) . Н а п и ш и те сц ен ар и й , которы й при п ер е д ач е ем у в к а ч е с тв е а р гум ен та

им ени папки и щ ет в ней все ф айлы подобного рода. З а в е р ш и в поиск, сц енарий долж ен сп р оси ть

у п о л ь зо в а те л я отд ельн ое со гласи е на уд ален и е каж д о го ф айла и в ы п о л н я ть уд ален и е, только

если п о л ь зо в а те л ь ввел Y.

Контрольные вопросы

П осле то го как в ы созд али sh e ll-сц е н ар и й в те к сто в о м ред акто р е, какой ваш сле д ую щ и й ш аг

перед те м , ка к з а п у сти ть это т сц енар ий п утем ввод а его им ени?

A.

У ста н о в и ть один или не сколько и сп о л н яе м ы х б и то в с п о м о щ ью ком анд ы ch m od.

Б.

B.

С к о п и р о в а ть сц енар ий в п ап ку /usr/bin/scripts.

С к о м п и л и р о в ать сц енар ий п уте м в во д а bash и м я _ с ц е н а р и я , гд е и м я _ с ц е н а р и я — им я

сц ен ар и я .

Г.

П р о в е р и ть сц ен ар и й на ви русы .

Д .

З а п у сти ть п р о вер ку ор ф о гр аф и и , что бы у б е д и ть ся в о тс у тств и и ош и б ок.

  1. О п и ш и те р езул ьтат р а б о ты сл е д ую щ его н е б о л ьш о го сц ен ар и я под н а зв а н и е м с р і, если он вы ­

з ы в а е тся к а к с р і big.c big.cc:

#!/bin/bash

ср $2 $1

A.

Б.

B.

Г.

Результат б уд ет та к и м ж е , как и у ко м ан д ы ср, — коп и р о в а н и е со д ерж и м ого big.c в big.cc.

К ом п и ли рует п р о гр а м м у на я зы к е С b ig.c и в ы з ы в а е т р е зул ь та т big.cc.

К оп и рует со д ер ж и м о е big.cc в big.c, уд ал я я b ig .c

К о н ве р ти р уе т п р о гр а м м у на я з ы к е С (b ig .c) в п р о гр а м м у на я з ы к е C + + (b ig.cc).

Д . П е р вая стр о ч к а сц ен ар и я н е п р а в и л ь н а я , п о э то м у о н н е б уд е т раб о тать.

К аково н а зн а ч е н и е усл о в н ы х вы р аж е н и й в sh e ll-сц е н а р и я х?

А.

П р е д о тв р а щ а ю т вы п о л н е н и е сц е н а р и я , если н е со б лю д аю тся л и ц е н зи о н н ы е усло ви я .

Б. О то б р аж аю т и нф ор м ац и ю о ср ед е ко м п ью тер а, в кото рой в ы п о л н я е тся сц енар ий .

Значение завершения сценария 273

В .

П о зво л я ю т сц енар ию в ы п о л н я ть р а зн ы е д е й ств и я в о т в е т на и зм ен я ю щ и еся д анн ы е.

Г.

П о зво л я ю т сц ен ар и я м о б у ч а ть ся по п р и м ер у усл о в н ы х реф лексов.

Д . Д аю т в о зм о ж н о сть за п у ск а ть сц енар ии то л ь к о в оп р ед елен н ое в р е м я суток.

И стина или лож ь: п о л ь зо в а те л ь в в о д и т m yscript laser.txt, что бы з а п у сти ть сц енар ий с им енем

m yscrip t. П ерем енная $0 в н утр и m yscrip t х р ан и т зн а ч е н и е laser.txt.

И сти на или л о ж ь : и н с тр у к ц и и к о м а н д н о й о б о л о ч к и B a sh , в ы п о л н я ю щ и е ц и кл ы , со д е р ж а т

ком анд ы for, w h ile и until.

И стина или л о ж ь : сле д ую щ и й сц енар ий о д н о вр ем ен н о зап у ск а е т тр и эк зе м п л я р а п ро гр ам м ы

te rm inal:

#!/bin/bash

te rm in al

te rm in al terminal

Вы написали про стой sh e ll-сц е н а р и й , кото ры й в ы п о л н я е т то л ь к о о д н у ф ункц и ю — зап у ск а е т

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

С п ом ощ ью какой ком анд ы м о ж н о за п р а ш и в а ть у п о л ь зо в а те л я ввод д а н н ы х в н у тр и сц енар ия?

Какую сц енар ную к о м а н д у в о б о л о ч к е B ash м о ж н о и с п о л ь з о в а ть д л я у п р а в л е н и я п о то ко м

вы п о л н е н и я п р о гр а м м ы в за в и си м о сти от п ере м ен ной , ко то р ая м о ж е т п р и н и м а ть м н о ж е ств о

зн ачен и й (та к и х как буквы ал ф ави та)?

Какую сц енарную к о м ан д у в об о л о чке B ash м о ж н о и сп о л ь зо в а ть д л я зад а н и я во зв р а щ а е м о го

зн а че н и я , которое ге н ер и р уется сц ен ар и е м , вне з а в и си м о сти о т д р уги х ком анд , и сп о л ь зую щ и х­

ся в сценарии?

Глава 12 Основы безопасности

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

□ Знакомство с учетными записями.

□ Инструменты для работы с учетными записями.

□ Работа от имени суперпользователя.

Знакомство с учетными записями Учетные записи позволяют нескольким пользователям работать за одним компьютером, не мешая друг другу. Они также дают возможность системным администра­ торам следить за тем, кто использует системные ресурсы или делает то, что делать не следует. Учетные записи

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

несколько учетных записей. То есть

компьютер с одним пользователем

может иметь несколько админи­

страторов, которые поддерживают

его в рабочем состоянии.

Знакомство с учетными записями 275

помогают пользователям работать за компьютером, а администраторам — админи­ стрировать его. Чтобы начать ими управлять, необходимо сначала понять их свойства.

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

С войства уч е тн ы х з а п и с е й

Большинство свойств, которыми обладают учетные записи,описаны в файле / e t c / passwd; каждая строчка (запись) этого файла содержит двоеточия в качестве раз­ делителей и соответствует отдельному пользователю. Запись может выглядеть следующим образом:

r ic h :x :1 0 0 3 :100:Rich B lum :/hom e/rich:/bin/bash

Данная запись состоит из следующих полей.

□ Имя пользователя. Имя учетной записи — наиболее важное ее свойство. Боль­ шинство имен пользователей в Linux состоят из строчных букв и иногда цифр, например r ic h или th x ll3 8 . В некоторых дистрибутивах также допускаются знаки подчеркивания (_), тире ( - ) и доллара ($ ) в конце.

□ Пароль. Учетные записи пользователей обычно защищены паролем, без кото­ рого нельзя войти в систему. Большинство системных учетных записей (см. да­ лее в этой главе) не имеют пароля, поэтому они не могут войти в систему (ис­ ключение — суперпользователь, который снабжен паролем в большинстве дистрибутивов). Поле пароля в файле /etc/p assw d обычно содержит символ х — это код, который означает, что пароль хранится в файле /etc/sh ad ow (мы вер­ немся к этому чуть позже).

□ UID. На самом деле имя пользователя служит всего лишь меткой, которую компьютер отображает для нас. Сам же компьютер отслеживает учетные записи по идентификационному номеру (Unique Identification Number, UID). В большинстве дистрибутивов номера пользовательских идентификаторов начинаются с 1000 и выше, в то время как меньшие числа зарезервированы для системных учетных записей.

идентиф икаторы пользователей

В некоторых дистрибутивах

начинаются с циф ры 500, а не с 1000.

□ GID. Пользователи привязаны к одной или не­ скольким группам, которые во многом похожи на учетные записи, хотя и являются их наборами. Одна

Владение файлами и привилегии

описаны в главе 14.

276 Глава 12. Основы безопасности

из главных задач групп — дифференцировать доступ к файлам между раз­ личными пользователями. Каждая учетная запись напрямую связана с основ­ ной группой через идентификатор группы (Group Identification, GID); в вы­ шеприведенном примере это число 100. Подобные связи также можно создавать путем включения идентификаторов учетных записей в описание самих групп (см. главу 13).

□ Комментарий. Поле комментария обычно содержит полное имя пользователя (в нашем примере это Rich Blum), хотя в дополнение или вместо этого в нем может находиться и другая информация.

□ Домашняя папка. Пользовательские и некоторые системные учетные записи имеют домашние папки (в нашем примере это /home/nich). Это место, которое служит для пользователя «домом». Обычно домашней папкой учетной записи владеет она сама. Доступ к домашней папке можно облегчить с помощью опре­ деленных инструментов и процедур, например сослаться на нее можно с по­ мощью тильды (~), если указать ее перед именем файла.

□ Командная оболочка по умолчанию. С каждой учетной записью по умолчанию связана определенная командная оболочка. В Linux в этом качестве обычно выступает интерпретатор Bash (/b in /b a s h ), но пользователи при желании могут это изменить. Большинство системных учетных записей, отличных от суперпользователя, по умолчанию связаны с программой /u sr/sb in /n o lo g in (или /sb in /n o lo g in ), которая выводит сообщение о том, что данная запись недоступна; это сделано из соображений безопасности. Похожим образом работает программа / b i n / f a lse, но без вывода сообщения.

При взгляде на имя файла /etc/passwd может сложиться впечатление, что в нем хранится информация о паролях. Так было много лет назад, но сегодня все обсто­ ит иначе. Исторически сложилось, что этот файл должен быть доступен для чтения всем пользователям, поэтому хранить в нем пароли, даже в хешированном виде и с применением модификаторов, рискованно. В совре­ менных системах пароли находятся в другом файле — /etc/shadow, который обычные пользователи не могут прочитать. Он связывает между собой учетные записи и хешированные, модифицированные пароли. Эта ин­ формация позволяет деактивизировать учетную запись по прошествии какого-то времени или в случае, если пользователь долго не менял пароль. Типичный файл /etc/shadow выглядит следующим образом:

рованных («соленых») хешей. Это

Пароли хранятся виде модифици­

(«соли»). Для человека результат

вводимый пользователем, тоже

ной математической процедуры с до­ бавлением случайной информации

выглядит как бессмыслица. Пароль,

достигается за пет однонаправлен­

rich:$l$E/moFkeT5UnTQ3KqZUoA4Fl2tPUo Іс:16860:5:30:14:-1 :-1 :

модифицируется и хешируется; если

хеши совпадают, разрешается доступ.

Знакомство с учетными записями 277

Значения всех полей, разделенных двоеточиями, описаны далее.

□ Имя пользователя. Каждая строчка начинается с имени пользователя, которое указывает на соответствующие записи в файле /etc/passw d. Стоит отметить, что UID в /etc/shadow не используется.

□ Пароль. Поле пароля хранит модифицированный хеш, поэтому не несет в себе никакого внешнего сходства с паролем. Беспарольные учетные записи (заблокированные — такие, в которые нельзя войти) обозначаются звездочкой (*) или восклицательным знаком ( I). Это обычная практика для учетных за­ писей, которые используются самой системой.

□ Последнее изменение пароля. Следующее поле (16860 в нашем примере) — это дата последнего из­ менения пароля. Она хранится в виде количества дней, прошедших с 1 января 1970 года.

Первое января 1970 года называют

Unix- или POSIX-временем (или эрой,

что не совсем правильно); это время,

прошедшее с полуночи упомянутой

даты по UTC (всемирное координиро­

ванное время). Оно часто использует­

ся в системах Unix/Linux. В 2038 году POSIX-время может вызвать

проблемы на любом компьютере

с 32-битным процессором, поскольку

32 бит больше не будет хватать для

хранения времени в атом формате.

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

□ Когда необходимо будет изменить пароль. Это поле (30 в нашем примере) показывает количество дней, оставшихся до того момента, когда опять потре­ буется поменять пароль (с момента последнего изменения).

□ Когда следует предупреждать о б истечении действия пароля. Если в вашей системе используются временные пароли, имеет смысл заблаговременно преду­ преждать пользователя о приближении даты истечения их срока действия. Обыч­ но устанавливается значение 7. Но если сотрудники вашей компании берут двухнедельный отпуск, лучше поменять цифру на 14, как в нашем примере.

□ Период между истечением срока действия и деактивацией. Операционная система Linux позволяет устанавливать задержку между истечением срока действия учетной записи и ее полной деактивацией. Просроченная учетная за­ пись либо блокируется, либо требует немедленного изменения пароля сразу после входа в систему. В обоих случаях пароль остается нетронутым. Однако пароль деактивированной учетной записи стирается, а сама она может быть повторно активирована лишь системным администратором. Значение -1 в дан­ ном поле (как показано в нашем примере) говорит о том, что эта функция вы­ ключена.

278 Гпава 12. Основы безопасности

□ Дата окончания срока действия. Это поле содержит дату окончания срока действия учетной записи. Формат такой же, как и в случае с датой последнего изменения пароля, — количество дней, прошедших с 1 января 1970 года. Как и в предыдущем примере, значение -1 указывает на то, что эта функция отклю­ чена.

□ Специальный флаг. Это поле зарезервировано для возможного использования в будущем и обычно игнорируется или содержит произвольное значение. В на­ шем примере оно пустое.

Если в поле, связанном с исчислением дней, указаны значения вида - і или 99999, это говорит о том, что соответствующая функция отключена. Содержимое файла /etc/sh a d o w лучше редактировать с помощью таких команд, как usenmod (см. главу 13) и chage. Однако понимание формата этого файла позволит вам про­ сматривать хранящиеся в нем значения и находить любые несоответствия, которые могут свидетельствовать о взломе системы.

Файл /etc/sh ad ow обычно имеет ограниченный д о ­ ступ и принадлежит суперпользователю. Данная особен­ ность крайне важна для работы всей системы теневых

паролей, поскольку она не дает обычным пользователям прочитать содержимое /etc/shadow и заполучить список паролей, пусть даже в хешированном и модифицирован­ ном виде. С другой стороны, файл /etc/p a ssw d должен оставаться доступным для чтения обычными пользова­ телями и не требует повышенных привилегий.

Важно понимать, что учетнаязапись — это не програм­ ма или двоичный файл. Учетная информация разбросана по нескольким конфигурационным файлам, например /etc/p a ssw d , /etc/shadow , /e tc /g r o u p и другим, ссыла­

ющимся на учетные записи. Файлы пользователя находят­ ся в его домашней папке, а иногда и в других местах Таким образом, управление учетными записями не всегда сво­ дится к работе с одним или двумя файлами. В связи с этим для создания учетных записей, управления ими и их уда­ ления используются различные утилиты (см. главу 13).

О п р е д е л е н и е уч е тн ы х за п и се й

Многие путают термины «зашифро­

ванный» и «хешированный», когда

речь идет о компьютерах. Вы може­ те расшифровать зашифрованный

объект, но вы никак не можете

расхешировать то, что было за-

хешировано. Пароли в системе Linux

хешированы и модифицированы,

хотя иногда в документации можно

встретить некорректное использо­

вание термина «зашифрованы».

В качестве примера пользова­

тельских файлов, хранящихся вне

домашней папки, можно привести

электронную почту (/var/spool/)

и временные данные (/tmp).

Один из способов определить учетную запись пользователя заключается в при­ менении соответствующего инструмента с графическим интерфейсом. Подобные инструменты могут варьироваться в зависимости от дистрибутива. Один из при­

Знакомство с учетными записями 279

меров — утилита Пользователи (Users) на панели управления настройками систе­ мы Fedora; для быстрого запуска достаточно нажать кнопку Обзор (Activities) в главном окне и ввести пользователи в строке поиска, как показано на рис. 12.1.

босиресгмь*. 22 21

ni •

л ♦ о *

Q г т т ю м т г п *

О

X J H f e П о л ь з о в а т е л и

^ ^ Ли6****т» ирм yftiiM ‘i іюлог« / ттпгіі mm иімгинн горѵ *

Рис. 12.1. Поиск утилиты Пользователи (Users) в дистрибутиве Fedora

После получения доступа к этой функции появляется окно, похожее на то, что показано на рис. 12.2. Эта ути­ лита отображает только пользовательские учетные за­ писи и игнорирует системные. Она позволяет изменять некоторые свойства, например пароль (если щелкнуть на них), но ее возможности в качестве инструмента для управления учетными записями ограниченны. Тем не менее она легкодоступна для обычных пользователей и позволяет им менять свои пароли. Ее могут использовать и администраторы, чтобы быстро посмотреть, какие учетные записи активны.

Из соображений безопасности па­

точек или звездочек.

роли обычно отображаются в ей де

Вы можете получить список всех учетных записей на компьютере (как пользо­ вательских, так и системных), прочитав содержимое файла /etc/passwd с помощью команд cat или less.

Если же вас интересует информация об определенной учетной записи, восполь­ зуйтесь командой grep, чтобы выполнить поиск по файлу /etc/passwd, например, grep rich /etc/passw d найдет данные о любой учетной записи, связанной с поль­ зователем по имени rich (естественно, в этом примере предполагается, что файл passwd содержит строку rich).

Если вам нужно просто просмотреть файл / e t c / passwd, введите getent passwd. Эта команда извлекает записи из определенных административных баз данных, включая passwd. В большинстве случаев она выводит то же самое, что и команда cat /etc/passwd, но иногда ре­ зультаты отличаются. В файле /etc/passwd описываются

С помощью команды getent

можно также выводить отдельные

записи. Просто добавьте в конце имя пользователя, например getent

passwd rich.

280 Глава 12. Основы безопасности

только локальные учетные записи, хотя Linux можно настроить на работу с удаленной базой данных, которая определяет всех или только некоторых пользователей. Если у вас именно такая конфигурация, ввод getent passwd вернет как локальные учетные записи, так и те, что описаны на удаленном сервере.

Рис. 12.2. Утилита Пользователи (Users) предоставляет минимальную информацию об учетных записях

СЕТЕВЫЕ УЧЕТНЫЕ БАЗЫ ДАННЫХ——————————————————————-

Во многих сетях применяются сетевые учетные базы данных. Среди них можно выде­ лить NIS (Network Information System — сетевая информационная система) и обнов­ ление к ней под названием NIS+, LDAP (Lightweight Directory Access Protocol - об­ легченный протокол доступа к каталогам), семейство протоколов Kerberos и домены Active Directory (AD). Все эти системы переносят базу данных с учетными записями на единый центральный компьютер (часто с одним или несколькими резервными узла­ ми). Преимущество такого подхода состоит в том, что пользователям и администрато­ рам не нужно управлять учетными записями на множестве отдельных компьютеров. Одна такая база данных способна работать с учетной информацией на десятках (а ино­ гда сотнях или даже тысячах) систем, что существенно облегчает ежедневное админи- стрование и делает жизнь пользователей проще. Однако применение таких инструмен­ тов означает, что большинство учетных записей пользователей не будут значиться в файлах /etc/passwd и /etc/shadow, а группы могут не попасть в /etc/group (см. под­ раздел «Группы» данного раздела). Хотя эти файлы все равно будут хранить данные о локальных пользователях и группах.

Знакомство с учетными записями 281

Linux может быть частью этих систем. На самом деле в некоторых дистрибутивах их поддержка предоставляется на этапе установки ОС. Обычно для этого необходимо знать имя или IP-адрес сервера, на котором находится сетевая база данных, а также протокол, используемый системой. Кроме того, вам может понадобится пароль или другая инфор­ мация, относящаяся к действующему протоколу, а конфигурация сервера должна по­ зволять доступ из систем Linux, которые вы настраиваете.

Активизация использования таких удаленных учетных баз данных после установки Linux - отдельная сложная тема, выходящая за рамки этой книги. Подобные системы часто изменяют поведение таких инструментов, как passwd и userniod (см. главу 13); иногда эти изменения незначительные, а иногда — довольно существенные. Если вам необходимо использовать такие базы данных, обязательно сверьтесь с их документа­ цией.

Группы

Как уже отмечалось, группы — это наборы учетных записей, описанные в файле /etc/group. Этот файл, как и /etc/passw d, состоит из строчек (записей), каждая из которых разделена двоеточиями и описывает определенную группу. Это вы­ глядит п рим ерно так:

users:х:100:games, sa lly

Файл /etc/group содер ж и т следующие поля.

□ Имя группы. Первое поле (в нашем примере это users) является именем груп­ пы. Оно используется в большинстве команд для работы с данными группы.

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

.

'

Использование паролей групп

ется в этой книге.

□ GID. Значения GID (как и UID) нужны Linux для

внутреннего использования. Преобразование их в имена групп (и наоборот) выполняется для удобства пользователей и администраторов.

□ Список пользователей. В конце записи внутри файла /etc/group можно пере­ числить пользователей, которые входят в группу, разделяя их имена запятыми.

Пользователи могут стать членами группы одним из двух способов:

□ путем задания GID группы в отдельной записи пользователя в файле /etc/passwd. Поскольку в файле /etc/passwd есть место только для одного идентификатора GID, с помощью этого способа можно описать лишь одну группу. Это основная группа пользователя (учитывается по умолчанию);

282 Глава 12. Основы безопасности

□ путем перечисления имен пользователей в файле /etc/group. Один и тот же пользователь может несколько раз упоминаться в файле /etc/group, а одна и та же группа может содержать нескольких пользователей. Группы, связанные с пользователем таким способом (а не через файл /etc/passw d), являются для него вторичными.

Новые файлы, которые вы создаете, будут связаны с вашей текущей группой. Когда вы входите в систему, ваша текущая группа становится для вас основной. Если вам нужно создать файлы, связанные с другой вашей группой, вы можете воспользоваться командой newgrp:

$ newgrp p rojecti

Данная команда делает proj e c tl вашей текущей группой, поэтому создаваемые вами файлы будут связаны именно с ней. Привязка групп к файлам важна для безопасности (подробно об этом речь пойдет в главе 14).

Инструменты для работы с учетными записями С помощью команд вы можете получить сведения о пользователях и группах на вашем компьютере: утилиты whoami и Id предоставляют информацию о текущем пользователе, а команды who и w помогают узнать, кто использует ваш компьютер в данный момент.

П олучение д а н н ы х о себе са м о м

Если у вас есть несколько учетных записей и вы не помните, с помощью какой из них вошли в систему, это может внести неясность в ваш текущий статус. В таких случаях пригодится команда whoami. Она выводит идентификатор текущего поль­ зователя:

$ whoami Christine

В приведенном примере текущая учетная запись имеет имя Christine. Если вам

нужно больше подробностей, можете воспользоваться утилитой id:

$ id uid=1002(christine) gid-100(users) groups*100(users)[. . . ]

Инструменты для работы с учетными записями 283

В этом примере выводится информация как о поль­

зователях, так и о группах:

В некоторых дистрибутивах ком ан­

да id вы водит больш е инф орм ации,

□ идентификатор текущего пользователя: uid=1002

чем показано здесь.

(Christine);

□ ваша текущая группа: gid=100(users);

□ все группы, в которых вы состоите: в данном примере это записи, следующие

за groups=.

Команда id выводит как числовые идентификаторы UID и GID, так и связанные с ними имена. Текущей считается группа, которая является активной (либо по умолчанию, либо в результате использования вами команды newgrp).

Вы можете ограничить вывод команды id, указывая для нее различные параметры (см. табл. 12.1). Кроме того, чтобы получить сведения не о себе самом, а об определенном пользователе, вы можете указать его имя, например id sa lly .

Таблица 12.1. Параметры команды Id

Длинный параметр

Короткий параметр

Результат

-group

-groups

–user

–name

-real

-g

-G

-u

-n

-r

Выводит только идентификатор текущей группы

Выводит все группы, в которых вы состоите

Выводит только данные о пользователе

Применяется в сочетании с параметрами -g, -G или -и; выводит только имя, без UID или GID

Применяется в сочетании с параметрами -g, -G или -и; выводит только UID или GID, без имени

Как узнать, кто с е й ч а с в с и с те м е

Linux может открывать доступ к компьютеру сразу нескольким пользователям одновременно. Чаще всего это происходит с помощью серверов удаленного до­ ступа, таких как SSH (Secure Shell), однако вы можете войти в систему несколь­ ко раз, используя одни и те же клавиатуру и монитор, для этого в Linux пред­ усмотрен виртуальный терминал (V irtual Terminal, ѴТ). Иногда возникает необходимость узнать, кто сейчас находится в системе. Например, перед вы­ ключением компьютера стоит проверить, не прервете ли вы работу другого пользователя.

284 Глава 12. Основы безопасности

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

who:

$ who c h ristin e:0 kevin rich Christine p ts/1 2016-05-0417:34 (:0)

2016-05-0417:33 (:0) 2016-05-0417:36

tty2 p ts/0 2016-05-0417:33 (192.168.56.101)

Вывод команды who может варьи­ роваться в зависимости от дистрибутива. Но основные элементы остаются неизменными.

В приведенном примере в систему вошли четыре раза: два раза Christine и по

одному kevin и rich. По умолчанию выводится следующая информация.

□ Имя пользователя. В первом столбце вывода команды who отображается имя

пользователя.

□ Идентификатор терминала. Второй столбец вывода команды who отображает код, связанный с терминалом. В нашем примере для первой записи пользовате­ ля C hristine указан идентификатор :0; это означает, что вход был выполнен локально и через графический интерфейс. Идентификаторы в остальных за­ писях имеют вид p ts/# или tty#, что указывает на текстовые сессии. Это может быть терминал, запущенный в графическом интерфейсе, текстовая консоль либо вход через SSH (или другой протокол).

□ Дата и время входа. Команда who выводит дату и время каждого входа в систе­ му. Вы можете видеть, что пользователи rich и Christine начали свои сессии за несколько минут до того, как вошел пользователь kevin.

□ Удаленный узел. Последний столбец вывода команды who является необяза­ тельным и показывает источник входа. Источник отсутствует, если вход был выполнен через консоль (это относится как к текстовому режиму, так и к вхо­ ду через графический интерфейс). Источники вида # или #.# в случае с сесси­ ей пользователя Christine указывают на терминал, открытый в графическом интерфейсе. Имя компьютера или IP -адрес, как в случае с пользователем rich, говорят о том, что доступ был осуществлен с соответствующего удаленного компьютера.

Передавая параметры команде who, можно получить дополнительные сведения, хотя большая их часть мало кому пригодится. Среди параметров, которые, скорее всего, будут полезны, нужно назвать count (или -q) — он делает вывод данных более компактным:

$ who -q Christine kevin rich Christine

users=4 #

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

По ум олчанию команда w h o извле­

кает данны е из файла /v ar/ru n/utm p .

Инструменты для работы с учетными записями 285

Обратите внимание на то, что в значении users учитываются все сессии каждого пользователя.

Если команде who передать параметры am і, результат будет похож на вывод

команды whoami — вы получите сведения только о текущем пользователе:

$ who am i Christine pts/1

2016-05-0417:34 (:0)

В этом примере текущей учетной записью являет­ ся пользователь Christine, начавший сессию в ГПИ- терминале pts/1. Чтобы узнать дополнительные парамет­ ры команды who, обратитесь к ее справочной странице.

В качестве ш утки ком анде w h o вм е­

сто am і можно передать аргум енты

m om likes.

В качестве альтернативы команде who можно использовать утилиту w, которая

имеет похожее назначение, но генерирует чуть более развернутый вывод:

% w 117:52:40 up 24 min, 4 users, load average: 0.02, 0.108, Ѳ.2Ѳ

USER christin:0

TTY

kevin rich

tty2 pts/0

christin

pts/1

LOGIN@ 17:34

17:33 17:36 17:33

IDLE ?xdm?

16:24 19:36 0:00s

DCPU 1:16

0.10s 0.11s

0.22s

WHAT

PCPU 0.16s gdm-sess[… ]

0.10s -bash 0.11s -bash 0.01s w

Как видите, большая часть этого вывода совпадает с тем, что показывает коман­ да who, включая идентификатор терминала (TTY) и время входа в систему (только в другом формате). Но, кроме этого, команда w предоставляет дополнительную информацию:

□ время простоя сессии ( I D L E ) говорит о том, сколько времени прошло с тех пор, как пользователь выполнял какие-то действия. Эта информация может помочь определить заброшенные сессии;

□ столбец DCPU показывает общее количество процессорного времени, выделен­ ного сессии. Эта информация может пригодиться при отладке, когда компьютер начал «тормозить» из-за процесса, вышедшего из-под контроля;

□ столбец PCPU показывает общее количество процессорного времени, выделен­

ного текущему процессу, в ы п о л н я ю щ е м у с я внутри сессии. М о ж е т помочь в ы ­

следить неконтролируемые программы;

□ столбец WHAT показывает программу, которая сейчас работает внутри сессии.

В некоторых конфигурациях отображается столбец FROM (показывает имя уда­ ленного компьютера). Эта функция включается и выключается с помощью пара­ метра -f. Некоторые другие параметры могут ограничить или модифицировать вывод команды w (см. подробнее на соответствующей справочной странице).

286 Гпава 12. Основы безопасности

Работа от имени суперпользователя Операционная система Linux спроектирована в духе системы Unix, которая изна­ чально была многопользовательской. В принципе, вы можете иметь тысячи учетных записей на одном и том же компьютере под управлением Unix (или Linux). Однако для управления всеми функциями компьютера как единым целым требуются неор­ динарные способности, доступные только пользователю root, которого еще называют суперпользователем (super user) или администратором. Для эффективного управле­ ния системой Linux важно не только знать о существовании этого пользователя, но и уметь выполнять задачи от его имени и безопасно распоряжаться его привилегиями.

Типы п о л ьзо ва те л е й

Большинство людей используют компьютер для выпол­ нения обычных задач — просматривают веб-страницы, читают письма, слушают музыку и т. д. Все это можно объединить одним термином — «пользовательские за­ дачи», которые не требуют особенных привилегий. По как было отмечено выше, компьютеры под управле­ нием Linux могут иметь множество учетных записей (называются стандартными или лишенными привиле­ гий), с помощью которых можно выполнять пользова­ тельские задачи.

Пользователи также бывают

систем ными. Существуют учетные

записи, под которыми нельзя войти

в систему; они выделены для де­

монов, сервисов или приложений.

Системные пользователи обычно

им еют м аленький номер идентифи­

катора 1Л0, лиш ены пароля (чтобы

учетная запись была заблокирована)

и используют /usr/sbin/nologin, /sbin/nologin или /bin/false в качестве ком андной оболочки по умолчанию.

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

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

Работа от имени суперпользователя 287

файлов. Но если ошибется суперпользователь, потеряться могут системные данные, что потенциально способно нарушить загрузку системы. Таким образом, при ра­ боте от имени администратора следует быть очень внимательными (см. подраздел «Безопасное использование привилегий администратора» далее).

П олучение п р и в и л е ги й а д м и н и с тр а то р а

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

□ Вход в систему как суперпользователь. Вы можете войти в систему как супер­ пользователь напрямую (через командную оболочку в текстовом режиме) либо удаленно (с помощью инструмента SSH). В некоторых дистрибутивах это можно сделать даже через графический интерфейс. Однако есть системы, кото­ рые по умолчанию запрещают прямой вход под именем суперпользователя, поскольку это небезопасно.

□ Использование команды su. Команда su позволяет переключаться между поль­ зователями внутри командной оболочки. Введите su имя_пользователя, чтобы сменить вашу учетную запись на имя_пользователя. Если опустить имя_пользо- вателя, будет считаться, что вы подразумеваете суперпользователя; поэтому команда su фактически дает возможность стать администратором. Но, чтобы это сработало, вам необходимо знать пароль интересующей вас учетной записи. Получив администраторские полномочия, вы сможете вводить произвольные команды в любых количествах. Закончив работу, наберите команду ex it, чтобы отказаться от статуса суперпользователя. У утилиты su есть параметр -с, по­ зволяющий запускать от имени суперпользователя отдельные команды, напри­ мер su -с команда. Если запустить команду через тире (например, 5и-1ике),для нее будет открыта отдельная сессия под нужной вам учетной записью. Это может быть важно, поскольку такие сценарии часто устанавливают переменные среды, такие как $РАТН, на которые полагается пользователь.

□ Использование команды sudo. Команда sudo похожа на su, но за один раз способ­ на запускать только одну программу, указанную после ее имени (похоже на su -с). Например, набрав sudo cat /etc/shadow, вы сможете увидеть содержимое файла /etc/shadow, недоступное обычным пользователям. В зависимости от конфигурации утилиты sudo вам необходимо будет ввести либо свой, либо администраторский пароль (su -с всегда требует пароль суперпользователя). Следующая введенная вами команда будет выполнена с вашими обычными привилегиями. Некоторые дистрибутивы, такие как Ubuntu, активно используют sudo и по умолчанию не разрешают входить в систему напрямую от имени суперпользователя.

288 Глава 12. Основы безопасности

ПРАВОВОЙ АСПЕКТ ПОЛУЧЕНИЯ АДМИНИСТРАТОРСКИХ ПРИВИЛЕГИЙ ______

Если вы используете систему Linux на рабочем месте, важно определить политику вашей компании относительно администраторских привилегий. Прямой вход под именем су­ перпользователя или вызов команды su создает среду без однозначного владельца Это создает предпосылки для осуществления нелегальных или проблемных действий, при­ частность к которым потом можно будет отрицать на вполне законных основаниях. Так что такая ситуация потенциально опасна.

Во многих компаниях разработаны (или должны быть разработаны) правила, согласно которым любой, кому нужны привилегии администратора, обязан использовать коман­ ду sudo, поскольку она записывает действия пользователя в журнал (и пользователь не сможет отрицать свои действия).

Когда вы получаете администраторские привилегии путем прямого входа в си­ стему под именем суперпользователя или используя команду su, приглашение вашей командной оболочки меняется:

[lukegwembleth ~]$ su Password: [root@wembleth luke] #

В этом примере поменялось имя пользователя — с luke на root, каталог — с ~ на luke, а также последний символ приглашения — со знака доллара ($) на знак решетки (#). Поскольку в этой книге во всех примерах ввода команд использует­ ся только последний символ, сразу становится понятно, требует ли команда при­ вилегий администратора. Вспомните, к примеру, как мы ранее считывали файл /etc/shadow:

cat /etc/shadow #

Наличие знака решетки в приглашении командной строки сигнализирует о том, что эта команда должна вводиться с администраторскими привилегиями.

Чтобы запускать команды от имени

суперпользователя в дистрибутиве

U buntu, необходимо либо добавлять

перед ним и sudo (наприм ер, sudo

В некоторых главах этой книги описываются как ТПИ-, так и ГПИ-инструменты системного администри­ рования. Но как же тогда администрировать Linux в ре­ жиме графического интерфейса, если для получения администраторских привилегий нужно использовать ТПИ-утилиту su (или sudo)? Один из способов — запуск ГПИ-инструмента администрирования из командной оболочки, в которой уже была использована утилита su. Такой подход будет рабо­ тать, но он немного неуклюжий, особенно если вам удобней работать в графическом интерфейсе, а не в командной строке.

чтобы получить постоянные при­

cat /etc/shadow ), либо предвари­

тельно ввести ком анду sudo su,

вилегии администратора.

Работа от имени суперпользователя 289

Однако большинство дистрибутивов предоставляют альтернативу: вы можете запускать административные инструменты из настольных меню; если для них требу­ ются повышенные привилегии, ГПИ-приложение пред­ ложит вам ввести пароль администратора (рис. 12.3). Если пароль введен правильно, приложение продолжит работу. Это похоже на запуск программ из командной оболочки с помощью утилиты sudo, которая ограничи­ вает выдачу администраторских привилегий только той программой, которую запускает.

Что делать, если вы забыли пароль

адм инистратора? Не волнуйтесь,

сущ ествует м нож ество способов его

сбросить. Откройте свою лю бим ую

поисковую систем у и введите «сброс

администраторского пароля в linux».

Будет даж е лучш е,есл и вместо linux

вы укажете название дистрибутива.

Рис. 12.3. Когда ГПИ-инструментам администрирования нужны администраторские привилегии, они запрашивают пароль

Б е зоп а сно е и с п о л ь зо в а н и е п р и в и л е ги й а д м и н и с тр а то р а

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

290 Гпава 12. Основы безопасности

и, к сожалению, некоторые ошибки могут иметь просто катастрофические по­ следствия для компании.

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

□ спросите себя, действительно ли вам нужен администраторский доступ. Иногда поставленной цели можно достичь и без повышенных привилегий или путем их ограниченного использования. Например, вы можете столкнуться с тем, что только суперпользователь может выполнять запись на съемный носитель. Дан­ ную проблему обычно можно обойти путем изменения привилегий этого носи­ теля, что ограничивает использование прав администратора;

□ прежде чем нажимать клавишу Enter после ввода какой-либо команды от имени администратора (или щелкать по кнопке подтверждения в ГПИ-программе, запущенной от имени суперпользователя), уберите руки от клавиатуры и мыши, присмотритесь к тому, что ввели, и проверьте, все ли сходится. Обычная опе­ чатка может привести к огромным неприятностям;

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

Если програм м а спраш ивает у вас

пароль (ваш или администратор­

ский) и если она не предназначена

для адм инистрирования или не

вызывает у вас доверия, будьте

осторож ны ! Прежде чем вводить

пароль, узнайте об этой программе

больш е!

□ как можно быстрее избавляйтесь от прав администратора. Если вам нужно всего лишь запустить одну или две команды, сделайте это и сразу же введите команду exit, чтобы вернуться к своим обычным привилегиям. Но лучше используйте для этого утилиту sudo. Очень легко не заметить, что вы работаете от имени супер­ пользователя, и ввести команду, которая не требует повышенных привилегий. Любая команда, запущенная от имени администратора, несет в себе риск;

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

Работа от имени суперпользователя 291

нистративных задач, сначала введите команду exit и только потом отходите от компьютера;

□ осторожно обращайтесь с паролем администратора. Не выдавайте его посторонним и будьте предусмотри­ тельны, когда вводите его в публичных местах или когда кто-то может подсмотреть из-заспины. Если вы используете систему Linux профессионально, у ваше­ го работодателя могут иметься правила и рекомендации по поводу доступа к ком­ пьютеру в качестве администратора Изучите их и всегда им следуйте! Кроме того, удостоверьтесь, что ваш пароль администратора достаточно надежный.

О выборе надежного пароля пойдет речь в главе 13.

Следование этим правилам поможет вам уберечься от повреждения своих дан­

ных и от выдачи администраторского доступа к компьютеру посторонним.

ОСНОВЫ И НЕ ТОЛЬКО

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

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

пользовательской учетной записи. Д л я получения инф орм ации о текущ ем или лю бом другом пользовате­

ле, находящ ем ся в систем е, предусм отрены утилиты whoam i, id, w h o и w . Врем я о т врем ени вам придется

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

и записы вать лю бы е стандартны е ф айлы , получать низкоуровневы й доступ к аппаратном у обеспечению ,

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

как мож но реж е при м ен я ть в с е эти обш ирны е возм ож ности и д елать это крайне вним ательно.

Упражнения

В вед и те по оч ер ед и ком анд ы w h o a m i и id, что бы п р о в е р и ть со сто я н и е своей об ы ч н ой п о л ь зо ­

вательско й записи. Е сть ш анс, ч то ком анд а id в ы в е д е т спи сок р а зл и ч н ы х гр уп п , в кото ры х вы

со сто ите. П ои щ и те в И нтер н ете н а зн а ч е н и е каж д ой из э т и х групп.

П р о чи тай те ф айл /etc/passw d с п о м о щ ь ю ком анд ы ge te n t p assw d, что бы у зн а ть , каки е уч е тн ы е

зап и си оп р ед елены на ва ш е м ком п ью тер е. Е сть ли сред и них о б ы ч н ы е п о л ь зо в а те л и (и д е н ­

ти ф и катор ы UID д олж ны б ы ть б о л ь ш е 5 0 0 или 1 00 0, в зав и си м о сти о т в а ш е го д и стр и б ути в а ),

пом им о вас? П оп р об уй те най ти в И н тер н ете н азн а че н и е н е котор ы х си сте м н ы х уч е тн ы х запи сей

(и д енти ф и като ры UID ко то р ы х м е н ь ш е 5 0 0 или 1000, в зав и си м о сти от д и стр и б ути в а ).

Контрольные вопросы

Каково н азн а че н и е си сте м н о й уч е тн о й зап и си с и д ен ти ф и като р о м UID, р авн ы м О?

А.

Б.

Это уч етн ая зап и сь си сте м н о го а д м и н и стр а то р а .

Э то уч е тн а я зап и сь п ер во го п о л ь зо в а те л я с о б ы ч н ы м и п р и ви л е ги я м и .

292 Глава 12. Основы безопасности

ОСНОВЫ И НЕ т о л ь к о

В.

Н икакое: и д ен ти ф и като р с н о м ер ом 0 н ам ер ен н о о ставл ен н е оп ред еле нны м .

Г.

Это з а в и с и т о т д и стр и б ути в а .

Д .

Э то у ч е тн а я зап и сь с п о н и ж е н н ы м и п р и в и л е ги я м и , к о то р а я и сп о л ь зуе тся по ум олчан и ю

на н е котор ы х се р вер ах,

Какую инф орм ацию , отн осящ ую ся к об ы ч н ы м п ол ьзо вател я м , м ож но н а й ти в ф айле /etc/passw d?

A. И д ен ти ф и кац и он н ы й н о м ер п о л ь зо в а те л я (U I0 ).

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

B.

Г.

П у ть к д о м аш н ей п а п к е уч е тн о й зап и си .

П у ть к р а б о ч е м у сто л у уч е тн о й зап и си в гр аф и ческо й сред е.

Д . П уть к ста н д а р тн о й ком анд н ой об о л о чке у ч е тн о й зап и си .

П р е д ста в ь те , ч то в а м нуж но в ы п о л н и ть к о м а н д у c a t /e tc/sh ad o w о т и м е н и а д м и н и стр а то р а ,

но вы вош ли в си сте м у как о б ы ч н ы й п о л ь зо в а те л ь . К а к ая и з сл е д ую щ и х ком анд сд е л а е т то,

ч то вам нуж но (и сход я из того, что к о н ф и гур ац и я си стем ы п о з в о л я е т в ы д а в а ть а д м и н и стр а то р ­

ск и й д о с ту п п о ср е д ств о м со о тв е тств ую щ е й ко м ан д ы )?

A.

Б.

B.

Г.

sud o c a t /etc/shado w.

root cat /etc/shadow .

passw d cat /etc/shadow .

su cat /etc/shadow ,

Д .

a d m in cat /etc/shadow .

И сти на или лож ь: ком анд а w h o am i п р е д о ста в л я е т б о л ь ш е и нф ор м ац и и , чем id.

И сти н а и л и л о ж ь : о п е р а ц и о н н а я си с те м а Lin u x х р а н и т и н ф о р м а ц и ю о св о и х гр у п п а х в ф айле

/e tc/gro u p s.

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

о т и м ен и суп е р п о л ь зо в а те л я .

  1. Ф айл, которы й св я зы в а е т им ен а п о л ь зо в а те л е й с их и д е н ти ф и к а ц и о н н ы м и но м ер ам и (UID):

(укаж и те п олн ы й п уть к ф айлу).

Чтобы п о л у ч и ть спи сок п о л ь зо в а те л е й , кото ры е се й ч ас н ахо д я тся в си стем е, и зап ущ е н н ы х им и

п р о гр а м м , нуж н о в в е сти к о м а н д у _ _ _ _ _ _ _ _ _ _ _ _ _ _ .

Н о м е р а U ID м е н ь ш е 500 и л и 1 0 0 0 (в з а в и с и м о с т и о т д и с т р и б у т и в а ) з а р е з е р в и р о в а н ы

д л я _ _ _ _ _ _ _ _ ___

_ у ч е т н ы х з а п и с е й .

Если вам нуж но в ы п о л н и ть в ком анд н ой стр о к е зад ач у, тр еб ую щ ую а д м и н и стр а ти в н ы х п ри ­

ви леги й , вы м о ж ете сд е л ать э то од ни м и з тр е х сп о со б о в : и сп о л ь зо в а ть ко м ан д у su или sudo

л и б о _ _ _ _ _ _ _ _ _ _ _ _ _ _ ,

Глава 13 Создание пользователей и групп

Linux является многопользовательской ОС. Это означает, что один компьютер может поддерживать множество пользователей, каждый из которых имеет уни­ кальную учетную запись. Следовательно, возникает необходимость управлять учетными записями пользователей. В этой главе мы рассмотрим процедуры, кото­ рые для этого используются.

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

□ Создание новых учетных записей.

□ Изменение учетных записей.

□ Удаление учетных записей.

□ Управление группами.

Создание новых учетных записей Во многих средах добавление учетных записей — обычное дело. Большие компании нанимают новых сотрудников, университеты принимают студентов, благотвори­ тельные организации находят волонтеров и т. д. Поэтому вам необходимо знать, как создаются новые учетные записи. Но прежде чем переходить к техническим деталям, рассмотрим не менее важные вопросы — способы использования групп и выбор хорошего пароля. После этого будет описано создание учетных записей как в графической среде, так и в текстовом режиме.

294 Гпава 13. Создание пользователей и групп

В ы б ор с тр а те ги и и сп о л ь зо в а н и я груп п

Как уже говорилось в главе 12, в системе Linux группы представляют собой наборы пользователей. С помощью групп можно управлять доступом к отдельным файлам. Пользователи могут менять принадлежность к группе и привилегии своих соб­ ственных файлов (см. главу 14). Таким образом, то, как именно используются группы, может повлиять на стратегию безопасности вашего компьютера. Суще­ ствует два общепринятых варианта.

□ Группы пользователей. Каждый пользователь может принадлежать к какой-то группе, например пользователь luke может входить в группу luke. Этот поль­ зователь затем может задавать групповое владение для своих файлов или уста­ навливать для них групповые привилегии. Администратор, в свою очередь, может добавлять других пользователей в группу luke, после чего пользователи этой группы получат доступ к файлам, которые ей принадлежат (благодаря полномочиям, заданным пользователем luke). Акцент делается на управлении доступом к отдельным файлам пользователя.

□ Группы проектов. Этот метод предусматривает создание групп на основе ра­ бочих проектов, связей между отделами компании или других принципов группирования пользователей. Например, у вас может быть группа sales для пользователей из отдела продаж. Ее члены могут обмениваться между собой файлами, помещая их в заранее оговоренное место и присваивая им соответ­ ствующие параметры владения и привилегии. Такой подход лучше всего заре­ комендовал себя в ситуациях, когда большое количество людей совместно ра­ ботает на одном компьютере в рамках четко обозначенных групп.

Эти две методики не исключают друг друга; вы може- .

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

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

В ы б ор х о р о ш е го парол я

В одних дистрибутивах по умолчанию

применяется стратегия с группами

пользователей, в д р у ги х —

страте­

гия с группами проектов. Во втором

случае большинство пользователей

по ум олчанию добавляются в группу

users (или подобную ей).

Обычно при создании учетной записи необходимо указать пароль. Пароль пользова­ тель может выбрать сам, но иногда администратору приходится подбирать пользова­

Создание новых учетных записей 295

телю временный пароль (в таком случае пользователю нужно объяснить, что пароль следует поменять как мож­ но скорее). Как бы то ни было, пользователь должен иметь представление о том, как придумать хороший пароль.

Слабые (часто встречающиеся) пароли обычно ос­

нованы на такой информации, как:

Все советы, приведенные в данном

разделе, касаются и вас в то м числе,

особенно если речь идет о пароле

администратора!

□ имена членов семьи или друзей, клички домашних животных;

□ любимые книги, фильмы, сериалы или их герои;

□ телефонные номера, названия улиц или номера социального страхования;

□ любая другая значимая информация личного характера;

□ какое-то одно слово, которое можно найти в словаре (на любом языке);

□ любая простая комбинация букв/чисел или клавиш на клавиатуре, например

123456 или qwerty.

Лучшие пароли представляют собой набор случайных букв, цифр и знаков пре­ пинания. К сожалению, запомнить их непросто. Разумный компромисс — сформи­ ровать пароль за два шага.

  1. Выбрать основу, которую легко запомнить, но сложно угадать.

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

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

м о ж ет бы ть короче определенной

сим волов.

Во м ногих дистрибутивах пароль не

д л ины , наприм ер шести или восьм и

Выбрав основу, вы можете ее изменить, чтобы получить пароль. Необходимо

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

□ Добавление цифр или знаков препинания. Результатом может быть, к при­ меру, ЬиЗпре ?п и ли у+i9wttd. Необходимо добавить как минимум пару символов или цифр.

□ Смешивание регистров. В операционной системе Linux применяются пароли, чувствительные к регистру, поэтому переключение между строчными и про­ писными буквами может повысить безопасность. Результат может выглядеть как ВиЗпРЕ ?п или y+i9WttD.

296 Глава 13. Создание пользователей и групп

□ Запись пароля в обратном порядке. Это преобразование само по себе считает­ ся слабым, но в сочетании с другими способно повысить безопасность. Оно заключается в изменении порядка следования всех или некоторых символов на противоположные. Как вариант, такое изменение можно применить только к одному слову основы, состоящей из двух частей. Результат может выглядеть как ВиЗппРЕР или DttW9i+y.

□ Наращивание «стога сена», в котором прячется «иголка». Задача потенци­ ального злоумышленника по подбору пароля похожа на поиск иголки в стоге сена. Чтобы усложнить ему задачу, можно сделать этот стог побольше, то есть увеличить длину пароля. Конечно, этого можно добиться, подбирая более длин­ ные слова или фразы, но в таком случае пароль будет сложным для запоминания и ввода. Но даже повторение одного и того же символа может быть полезным. Вы можете превратить свой пароль во что-то похожее на B u 3 n n ? E P iiiiiiiiii или D tt! ! ! ! ! ! ! ! ! ! !W9i+y.

Лучший способ заставить пользователей выбирать надежные пароли — научить их это делать. Ниже приведено несколько фактов и советов, которыми вы можете с ними поделиться.

□ Пароли могут подобрать злоумышленники, которые знакомы с пользователями или пытаются получить их персональные данные через соцсети, телефонные справочники в Интернете, бизнес-профили и т. д.

□ Несмотря на то что пароли внутри системы Linux хешируются и модифициру­ ются, существуют программы, которые пропускают через этот механизм целые словари, чтобы потом сравнить результат с имеющимися хешами. Если найде­ но совпадение, пароль отгадан.

□ Пользовательские учетные записи могут быть первой ступенью на пути взлома

всей системы или отправной точкой для атаки на другие компьютеры.

□ Пользователи никогда не должны раскрывать свой пароль другим людям, даже если они представляются системными администраторами. Это распространен­ ный вид мошенничества, поскольку настоящим ад­ министраторам пользовательские пароли ни к чему.

□ Нельзя использовать один и тот же пароль в несколь­ ких системах, иначе взлом одной учетной записи на одном компьютере может привести ко взлому всех ваших учетных записей во всех системах.

Иногда у пользователя пытаются

в ы м а н и ть пароль, присы лая

ем у спам по эл е ктро н но й почте

и утверж дая, что его учетная за­

пись на поч тов ом сервере, в банке

или где-л и бо ещ е бы ла заблокиро­

вана или взлом ана.

□ Записывание паролей или передача их по электронной почте — рискованное дело. Ну а приклеить к монитору стикер с записанным паролем — вообще глупость.

Создание новых учетных записей 297

Сообщая своим пользователям эту информацию, вы поясняете им причины своей обеспокоенности. Это должно мотивировать их как минимум выбрать на­ дежные пароли.

ИЗБЕГАЙТЕ ЭТИХ ПАРОЛЕЙ! ______________________________________________

Если поискать во Всемирной паутине по запросу «популярные пароли», можно на­ ткнуться на сайты, предоставляющие информацию о наиболее часто используемых паролях, обнаруженных исследователями. Обычно среди самых распространенных встречаются следующие:

123456; • • password; • 12345678; • qwerty; • football; • monkey; • 1234; • baseball; • dragon.

Такие пароли легко взламываются программами, «перебирающими» словари, и входят в базы паролей, распространяемые в Интернете. Их использование равносильно отказу от пароля. Сделайте себе одолжение и выберите что-то получше!

С оздание уч е тн ы х за п и с е й с п о м о щ ью Г П И -и н стр ум е н то в

Теперь имея некоторое представление о видах групповой политики и правилах вы­ бора надежного пароля, пора приступать к созданию учетных записей. В некоторых системах это можно делать (хотя бы частично) с помощью ГП И -утилит. Однако такие утилиты могут варьироваться в зависимости от дистрибутива Linux (отличия касают­ ся названий программ и способа доступа к ним). Чтобы найти подходящий инструмент, можно воспользоваться системой настольного поиска (например, Ubuntu Dash), введя ключевое слово «пользователь». В некоторых дис­ трибутивах для доступа к нужной утилите необходимо воспользоваться меню рабочего стола. Имена утилит име­ ют названия, похожие на П о л ь зо в а те л и (Users), У четн ы е з а п и с и п о л ь з о в а т е л е й (User Accounts) или У п р а в л е н и е п о л ь з о в а т е л я м и и г р у п п а м и (User and Group Administration).

При запуске утилиты Управление

и только потом появится главное

окно приложения (см. рис. 13.1).

пароль администратора. Затем

Group A dm inistration) вы увидите диа­

логовое окно с предложением в в е л и

будет показан экран инициализации,

пользователями и группами (User and

2 Ѳ Ѳ Глава 13. Создание пользователей и групп

В качестве примера ГПИ-инструмента для управления учетными записями на рис. 13.1 показана утилита Управление пользователями и группами (User and Group Administration) из состава дистрибутива openSUSE. И хотя наше внимание будет сосредоточено на создании новых пользователей, эта программа позволяет делать куда больше.

Рис. 13.1. Утилита Управление пользователями и группами (User and Group Administration) из состава openSUSE предоставляет множество функций для создания учетных записей и управления ими

Для того чтобы добавить пользователя с помощью утилиты Управление пользо­ вателями и группами (User and Group Administration), выполните следующие шаги.

  1. Нажмите кнопку Добавить (Add). В результате появится диалоговое окно Новый

локальный пользователь (New Local User), показанное на рис. 13.2.

  1. Введите полное имя пользователя в поле Полное имя пользователя (User’s Full Name). Эта информация хранится в виде комментария в файле /etc/passwd и может быть использована различными инструмен­ тами, например, в некоторых настольных средах она выводится при входе в систему.

Если пользователь, для которого вы

  1. Введите имя пользователя в поле Имя пользователя (Username). Его пользователь будет указывать при входе в систему.

создаете учетную запись, находится

рядо м , м ожете позволить ем у

ввести пароль самостоятельно.

Создание новых учетных записей 299

  1. Дважды введите пароль в полях Пароль (Passw ord) и Подтвердить пароль

(Confirm Password).

Рис. 13.2. В диалоговом окне Новый локальный пользователь (New Local User) можно ввести всю основную информацию о пользователе

  1. В большинстве случаев на данном этапе можно нажать кнопку ОК, поскольку

значения по умолчанию для оставшихся полей должны подойти.

В списке, что находится на вкладке Пользователи (Users), должна появиться новая учетная запись. Позже при необходимости ее можно будет изменить или удалить (подробнее об этом — далее в этой главе).

С озд ание уч е тн ы х за п и с е й из ко м а нд н ой о б о л о ч ки

В любом дистрибутиве для создания учетной записи в командной строке предусмотрена утилита useradd. Для того чтобы воспользоваться ею, введите ее название и имя пользователя, которое вы хотите связать с новой учетной записью. Между useradd и именем пользователя можно указать ряд параметров, перечисленных в табл. 13.1.

В дистрибутивах н а базе Debian

(наприм ер, в U buntu), м ож но ис­

пользовать более друж ественную

обертку к утилите useradd под

названием adduser. Но в некоторых

дистрибутивах, таких как Fedora,

ком анда adduser (если она доступ­

на) является не оберткой к утилите

useradd, а скорее ссылкой на нее.

300 Глава 13. Создание пользователей и групп

Таблица 1 3 . 1 . Параметры утилиты useradd

Название параметра

Сокращенная версия

Результат

—comment текст коммен­ тария

-home домаш- няя-папка

—expiredate дата-отключе­ ния

—inactive дней- до-истечения

-gid группа- по-умолчанию

-groups груп­ па!,…]

-e

-g

-G

-create-home

-m

-skel папка- skeleton

-k

Отсутствует

-M

-shell обо­ лочка

—uid UID

-non-unique

-s

-u

-0

Этот параметр задает поле комментария для пользо­ вателя (в ГПИ-утилитах оно обычно указывается как «полное имя»)

Домашняя папка учетной записи. По умолчанию используется путь вида /hoine/имя-пользователя

Дата отключения учетной записи в формате ГГГГ-ММ-ДД. По умолчанию учетная запись не име­ ет срока действия

Этот параметр обозначает количество дней с момента истечения срока действия пароля, по прошествии кото­ рых учетная запись блокируется. Значение -1, исполь­ зующееся по умолчанию, отключает данную функцию

Имя или идентификатор GID основной группы поль­ зователя. По умолчанию берется новая группа с тем же именем, что и у самого пользователя

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

Если указать этот параметр, утилита useradd создаст для пользователя домашнюю папку. Обычно при­ меняется по умолчанию

Обычно стандартные конфигурационные файлы поль­ зователя копируются из папки /etc/skel, но с помощью этого параметра можно указать путь к другому шабло­ ну. Используется только в сочетании с параметром -m

Этот параметр предотвращает автоматическое созда­ ние домашней папки

Название стандартной командной оболочки, которая запускается при входе пользователя в систему. По умолчанию указывается /bin/bash

Этот параметр создает учетную запись с заданным идентификатором пользователя (UID).

Этот параметр позволяет повторно использовать идентификатор UID; он указывается во время соз­ дания второй и всех последующих учетных записей с этим идентификатором

Создание новых учетных записей 301

Название параметра

Сокращенная версия

Результат

-system

Этот параметр инициирует создание системной учет­ ной записи. В этом случае утилита useradd не создает домашней папки и выбирает идентификатор UID меньше 100

-no-user-group

-N

Этот параметр предотвращает создание группы для пользователя

При создании учетных записей в графическом интер­ фейсе некоторые из этих параметров могут оказаться недоступными, хотя это уже зависит от конкретного ин­ струмента. Иногда ГПИ-утилиты позволяют задать эти параметры после создания пользователя, но не во время.

На практике команда useradd вместе с несколькими

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

$ sudo useradd -m -с “Samantha Bresnahan” -u 1012 samantha r o o t’s password:

Этот код создает учетную запись с именем samantha,

Вы м ож ете добавить пароль, указав

для утилиты useradd парам етр -р.

Одна ко предпочтительнее вос­

пользоваться ком андой passwd,

описанной далее в этой главе.

Команда useradd поддерж ивает

дополнительны е парам етры ; под­

робности ищ ите на ее справочной

странице.

домашней папкой, полем комментария с указанием полного имени пользователя и идентификатором UID, равным 1012. Обратите внимание, что для получения по­ вышенных привилегий используется команда sudo; без этого приведенный выше пример не сможет завершиться успешно. Если бы вы вошли в систему как суперпользователь, команда sudo не понадобилась бы.

Указывать идентиф икатор UID им еет

Учетная запись, созданная с помощью утилиты useradd, изначально находится в заблокированном со­ стоянии, то есть пользователь не сможет войти в систему. Чтобы ее разблокировать, необходимо воспользоваться командой passwd, как описано в разделе «Изменение учетных записей» далее.

В процессе работы утилита useradd (или ее ГПИ- оболочки) вносит изменения в содержимое следующих файлов (подробно описанных в главе 12):

/ e t с/passwd /etc/shadow /etc/group

см ысл в том случае, если вам нуж но

синхронизировать эти значения

м еж ду р азны м и ком пью терам и,

которы е обмениваются файлами

с п ом ощ ью NFS (N etw ork File System,

сетевая ф айловая систем а); NFS

идентиф ицирует владельцев файлов

посредством UID.

302 Глава 13. Создание пользователей и групп

Если указать параметр –create-home (-m) или если он используется по умолча­ нию, программа useradd создаст домашнюю папку и скопирует в нее файлы из ка­ талога /e tc /s k e l. При создании учетной записи также обычно генерируется spool- файл, в котором будет храниться входящая электронная почта пользователя (во многих настольных системах этот файл может оказаться ненужным, однако на компьютерах, на которых работает программное обеспечение почтового сервера, он имеет большое значение). Как видите, при создании учетной записи команда useradd вносит довольно заметные изменения в файлы и каталоги вашего компьютера.

Изменение учетных записей Как вы только что узнали, есть множество параметров, влияющих на создание учетных записей, например, вы можете указать определенный номер UID. Однако в некоторых случаях учетную запись необходимо изменить уже после того, как она создана. К счастью, в операционной системе Linux для этого имеются специальные инструменты — как с графическим, так и с текстовым интерфейсом. Но прежде, чем изучать подробности работы этих инструментов, нужно понять, в каких ситуа­ циях может понадобиться изменение учетных записей и как проверить, находится ли пользователь в системе в настоящий момент.

Когда п р и х о д и тс я и зм е н я ть уч е тн ы е за п и си

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

□ следует обновить дату истечения срока действия учетной записи (например, наемный работник продлил трудовой договор). Иногда просроченная учетная запись должна быть заново активирована;

□ идентификаторы UID должны быть синхронизированы между разными ком­ пьютерами, чтобы упростить обмен файлами (или по какой-то другой причине);

□ нужно перенести домашние каталоги пользователей в новое место, так как по­

явилось дополнительное дисковое пространство;

□ пользователь забыл пароль. Системный администратор может присвоить новый пароль любой учетной записи, не зная при этом старого, поэтому в его обязан­ ности часто входит помощь пользователям с плохой памятью.

Изменение учетных записей 303

При работе в графической среде многие из вышеописанных изменений могут быть выполнены с помощью ГПИ-утилиты управления учетными записями, вхо­ дящей в состав дистрибутива. Однако в текстовом режиме для реализации такого объема задач придется овладеть несколькими разными программами.

Как узнать, кто н а хо д и тся в с и с те м е

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

□ who. Эта утилита, описанная в главе 12, выводит список пользователей, которые находятся в системе в данный момент, а также некоторые подробности об их сессиях, включая идентификаторы терминалов и даты входа.

Для вы вода упрощ енного списка

текущих пользователей в боль­

ш инстве дис трибутивое также

предусмотрена команда users.

□ w . Эта команда тоже была описана в главе 1 2 . В целом она напоминает предыдущую, но информация, кото­ рую она предоставляет, отличается (самое заметное отличие — она показывает идентификаторы программ, запущенных в данный момент в каждой сессии).

□ la st. Эта программа генерирует список последних сессий, в том числе время их начала и окончания (или пометку о том, что пользователь все еще в системе):

$ la s t jennie Jennie jennie jennie

tty3 tty3 tty2 tty2

Sun Sun Sun Sun

Ian 8 Dan 8 Han 8 lan 8

logged in

12:43 s t i l l 12:43-12:43 (00:00) 12:36 s t i l l 12:36-12:36 (00:00)

logged in

Недостатком команды la s t является то, что она перечисляет только консольные сессии. Это ограничивает ее возможности по определению пользователей, на­ ходящихся в системе, так как некоторые из них могли войти в систему с помо­ щью графического интерфейса.

Команда la s t выводит данные, хранящиеся в файле /var/log/wtmp. Имейте в виду, что в некоторых дис­ трибутивах этот файл не создается по умолчанию. Больше информации по этой теме можно найти на справочной странице этой утилиты.

Команда tastb похожа на last, однако

показы вает только неудавш иеся

п опы тки входа в систему, извлекая

данны е из файла /v a r/to q /b tm p .

304 Глава 13. Создание пользователей и групп

И зм е н ен ие уч е тн ы х за п и се й с п о м о щ ь ю Г П И -и н стр ум е н то в

Как и в случае с добавлением учетных записей, процедура их изменения может варьироваться в зависимости от выбранного ГПИ-инструмента. В большинстве случаев вам будут доступны одни и те же возможности, хотя некоторые инстру­ менты выполняют больше функций, чем другие. В этом разделе мы рассмотрим процесс изменения учетных записей с помощью приложения Управление пользо­ вателями и группами (User and Group Administration) из состава дистрибутива openSUSE.

Чтобы внести изменения, нужно открыть упомяну­ тое приложение, щелкнуть на учетной записи и нажать кнопку Редактировать (Edit). На экране появится диа­ логовое окно, похожее на то, что показано на рис. 13.3. В нем перечислены свойства учетной записи. Каждая из четырех вкладок предоставляет доступ к определен­ ному типу данных.

□ Информация о пользователе (User Data). Как видно на рис. 13.3, вы можете изменить комментарий к учет­ ной записи пользователя (обозначенный как Полное имя пользователя (User’s Full Name)), его имя и па­ роль. Если вы введете слабый пароль, программа укажет вам на это и, прежде чем его принять, попро­ сит от вас подтверждения.

□ Подробности (Details). Эта вкладка предоставляет

несколько параметров: вы можете изменить стандартную командную оболочку (называется Оболочка входа (Login Shell)), внести учетную запись в дополни­ тельные группы, изменить основную группу (Группа по умолчанию (Default Group)) и т. д.

□ Настройки пароля (Password Settings). Эта вкладка позволяет управлять датами изменения и окончания срока действия пароля. В отличие от даты окончания срока действия самой учетной записи данное свой­ ство не блокирует пользователя полностью, давая ему возможность сбросить просроченный пароль (по крайней мере в течение какого-то периода). Вы можете указывать различные значения, например максимальное количество дней между изменениями паро­ ля. На этой вкладке также можно узнать дату последнего изменения.

Блокирование пароля учетной

запись полностью.

записи делает невозм ож ны м вход

в систему, но не отключает учетную

Изменение учетных записей 305

Рис. 13.3. Диалоговое окно Существующий локальный пользователь (Existing Local User) позволяет редактировать параметры учетной записи

□ Дополнения (Plug-ins). Эта вкладка позволяет управлять дисковыми квотами. В зависимости от конфигурации дистрибутива в ней могут быть доступны до­ полнительные утилиты, такие как LDAP.

Пользователи могут изменять свои пароли с помощью графических инструмен­ тов в настольной среде. Например, утилита Пользователи (Users) в дистрибутиве Fedora дает пользователю возможность выбрать имя своей учетной записи; для этого в диалоговом окне Моя учетная запись (Му Account) нужно открыть окно Изменение пароля (Change Password), щелкнув на последовательности точек, сим­ волизирующих пароль (рис. 13.4). Администраторы тоже могут использовать этот инструмент для добавления и изменения учетных записей.

И зм енение уч е тн ы х з а п и с е й из к о м а н д н о й стр о к и

Наиболее частое изменение, вносимое в учетные записи, — это изменение пароля пользователя. Изменять пароль можно на этапе создания учетной записи или из-за того, что пользователь забыл свой пароль. Эту задачу можно выполнить с помощью программы passwd. Обычному пользователю она позволяет изменять только свой

306 Глава 13. Создание пользователей и групп

Рис. 13.4. Утилита Пользователи (Users) дает возможность изменять пароли

собственный пароль, а администратор может передавать ей имя пользователя, чтобы изменить пароль любой учетной записи:

passwd кеѵіп #

Changing password f o r user кеѵіп. New password: Retype new password: passwd: a l l a u th e n tic a tio n tokens updated s u c c e s s fu lly .

П ом им о пароля, утилита passwd

позволяет изменять параметры

истечения его срока действия и уста­

ревания. Более подробно об зтом

м ож но узнать на соответствующей

справочной странице.

В качестве меры безопасности пароль, который вы вводите, не отображается на экране. Если введенные вами пароли не совпадут, программа откажется применить ваши изменения и попросит ввести пароли еще раз. Программа также проверяет надежность пароля; если он легкий, может его отклонить или вывести на экран предупреждение. Обратите внимание, что в предыдущем примере приглашение командной строки начинается с символа #; это говорит о том, что кто-то вошел в систему от имени администрато­ ра, чтобы получить повышенные привилегии, необходи­ мые для успешного выполнения данной команды.

Большинство других изменений можно выполнить с помощью программы usermod. Она во многом похожа

Команды userm od и useradd имеют

много одинаковы х параметров.

Изменение учетных записей 307

на команду useradd, но вместо создания новой учетной записи изменяют уже суще­ ствующую. Наиболее важные параметры программы usermod собраны в табл. 13.2.

Таблица 13.2. Параметры команды usermod

Н азван и е парам етра

-append

–comment текст коммен­ тария

-home домаш- няя-папка

-expiredate дата-отключе­ ния

-inactive дней- до-истечения

—gid группа- по-умолчанию

–groups группа[,…]

-login имя

-lock

-move-home

  • shell обо­ лочка

С ок р ащ ен н ая вер си я

Р е зу л ь т а т

-d

-f

-g

-G

-1

-L

-m

-s

Используется в сочетании с параметром -groups (-С), добавляет заданные группы к уже имеющимся, не заменяя их

Этот параметр задает поле комментария для пользо­ вателя (в ГПИ-утилитах оно обычно указывается как «полное имя»)

Домашняя папка учетной записи. По умолчанию ис­ пользуется путь вида /home/имя-пользователя

Дата отключения учетной записи в формате ГГГГ- ММ-ДД. По умолчанию учетная запись не имеет срока действия

Этот параметр обозначает количество дней с момента истечения срока действия пароля, по прошествии которых учетная запись блокируется. Значение -1, использующееся по умолчанию, отключает данную функцию

Имя или идентификатор GID основной группы поль­ зователя. По умолчанию берется новая группа с тем же именем, что и у самого пользователя

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

Меняет имя учетной записи на заданное

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

Когда этот параметр используется в сочетании с -home (-d), команда usermod перемещает существу­ ющую домашнюю папку пользователя в другое место

Задает название стандартной командной оболочки пользователя

Продолжение

308 Глава 13. Создание пользователей и групп

Таблица 13.2 (продолжение)

Н а зв а н и е п ар ам етра

-uidU ID

-non-unique

—unlock

С ок р ащ ен н ая вер си я

Р е зу л ь т а т

-0

Этот параметр заменяет номер UID учетной записи указанным значением

Этот параметр позволяет повторно использо­ вать идентификатор UID (используется в связке с параметром —uid/-u)

Этот параметр снимает блокировку с заблокирован­ ного пароля

Рассмотрим следующий пример использования утилиты usermod:

usermod -u 1072 -m -d /h o m e 2 /k e v in k e v in #

Эта команда вносит три изменения в учетную запись kevin:

□ меняет значение идентификатора UID на 1072;

□ меняет домашнюю папку пользователя на /home2/kevin;

□ перемещает содержимое старой домашней папки в новое место.

Подобную команду можно использовать в случае переноса учетных записей пользователей на сервер NFS, подключенный к каталогу /home2. Это может потребовать переноса домашней папки и изменения идентификатора UID на тот, который используется на сетевом сервере.

Параметр -m o v e -h o m e (-m ) выпол­

няется довол ьно бы стро, если все

происходит в рам ках одной низко­

уровневой файловой системы. Если

же перенос осуществляется между

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

разны м и ф айловыми системами,

это м ож ет занять много времени.

Если вам нужно внести изменения, связанные с добавлением новых групп, оз­

накомьтесь с разделом «Управление группами» данной главы.

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

Удаление учетных записей 309

пользуемые учетные записи. Однако сначала нужно понять, что происходит во время удаления, и решить, как именно выполнить эту процедуру, иначе могут воз­ никнуть проблемы. Вооружившись знаниями, вы можете приступить к удалению учетных записей с помощью ГПИ- или ТПИ-инструментов.

Как избеж ать п р о б л е м при уд а л е н и и уч е тн ы х за п и се й

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

Рассмотрите возм ож ность архива­

□ Сохранение файлов пользователя. Файлы пользо­ вателя могут иметь большую ценность либо для него самого, либо для организации, в которой он работает. Удаление домашней папки пользователя или любые другие действия с ней (например, перемещение в дру­ гое место или изменение привилегии для содержа­ щихся в ней файлов) должны соответствовать прави­ лам хранения данных в вашей компании. Тож е самое относится к почтовым файлам, которые обычно хранятся в папке вида /ѵ а г /spool/ m ail/имя-пользователя.

ции удаленной д ом аш ней папки

пользователя на долгосрочном

понадобятся в будущ ем .

резервном носителе. Это позволит

восстановить файлы, если они вдруг

□ Повторное использование идентификаторов UID и GID. После удаления учетной записи ее идентификаторы UID и GID становятся доступными для повторного использования. Часто эти номера так и остаются невостребованны­ ми, поскольку операционная система Linux присваивает идентификаторы, от­ талкиваясь от текущего номера. Таким образом, если вы удалите любого поль­ зователя (кроме того, который имеет самый большой идентификационный номер), значения UID и GID, принадлежавшие ему, не будут больше приме­ няться (разве что все учетные записи с более высокими номерами тоже будут удалены). Тем не менее, если идентификатор UID все же задействован повтор­ но, любые файлы, принадлежавшие предыдущему владельцу, становятся до­ ступны новому пользователю. Это может не нести никакой опасности, но из-за этого может возникнуть путаница относительно того, кто создал тот или иной файл. В некоторых случаях это даже может вызвать подозрения в недобросо­ вестности нового пользователя (например, если старые файлы содержат инфор­ мацию, которую новому пользователю знать не положено, или если они нахо­ дятся в папках, к которым он не имеет доступа).

310 Глава 13. Создание пользователей и групп

Если вы хотите исключить подобные ситуации, можете найти все файлы с за­ данными значениями UID и GID. Для этого можно воспользоваться командой fin d , подробно описанной в главе 8, в сочетании с параметрами -u id и -gid:

f i n d / - u id 1ѲѲ4 #

Эта команда находит на компьютере все файлы с иден­ тификатором UID 1004 (поиск по идентификатору GID выполняется таким же образом, для этого используется параметр - gid). Вы можете переназначить владельца для найденных файлов с помощью команды chown (описанной в главе 14) или удалить их. Обычно эта команда вызыва­ ется только для удаления или переназначения владельца домашней папки пользователя, поскольку, скорее всего, содержит слишком много файлов.

У д аление уч е тн ы х з а п и с е й с п о м о щ ь ю Г П И -и н стр ум е н то в

Эту ком анду не обязательно запу­

скать от имени администратора, но

в таком случае вы получите сообще­

ния об ош ибках и можете упустить

некоторые файлы. Поэтому ее лучше

использовать с повы ш енны м и при­

вилегиям и.

Как и в случае с другими операциями по управлению учетными записями, исполь­ зование ГПИ-инструментов является интуитивно понятным, однако у каждого дистрибутива свои нюансы. В качестве примера удалим учетную запись с помощью утилиты Управление пользователями и группами (User and Group Administration) из состава дистрибутива openSUSE. Щелкните кнопкой мыши на учетной записи и нажмите кнопку Удалить (Delete). Появится диалоговое окно, похожее на то, что показано на рис. 13.5. Установите или снимите флажок в зависимости от того, хотите ли вы удалить домашнюю папку пользователя, затем нажмите кнопку Да (Yes). Учетная запись будет удалена.

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

Если пользователь владеет

больш им количеством файлов, их

удаление м ож ет занять несколько

секунд или даж е минут.

У д аление уч е тн ы х з а п и с е й в ко м а н д н о й стр о ке

Для удаления учетных записей в командной строке предусмотрена утилита userdel. Достаточно передать ей имя пользователя:

$ sudo u s e rd e l Samantha r o o t’s password:

Удаление учетных записей 311

Рис. 13.5. При удалении учетной записи с помощью ГПИ-утилиты есть возможность удалить домашнюю папку пользователя

Программа не спрашивает подтверждения и сразу же удаляет учетную запись. Хотя при этом по умолчанию не удаляется домашняя папка пользователя. Для этого следует передать параметр - -remove (-г ).

Если в этот момент пользователь находится в систе­ ме, утилита userdel сообщит об этом и прекратит даль­ нейшую работу. Если вы хотите, чтобы учетная запись все равно была удалена, укажите параметр –fo rc e ( - f ) . Для принудительного удаления пользователя и его до­ машней папки можно передать сразу оба параметра:

$ sudo userdel - r f samantha ro o t’s password: userdel: user samantha is c u rre n tly logged in

Обратите вним ание, что в примерах

с утилитой userdel для получения

повы ш енны х привилегий исполь­

зуется команда sudo, без которой

удаление не см ож ет заверш иться

успеш но. Если бы вы вош ли в систе­

м у от им ени адм инистратора, она

бы не понадобилась.

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

312 Глава 13. Создание пользователей и групп

Управление группами Группы напоминают учетные записи: они описываются в похожих файлах и управ­ ляются похожими утилитами. Кроме того, группы привязаны к учетным записям, так как вторые содержат описание первых. До сих пор подразумевалось, что груп­ пы, которые вы используете, являются стандартными (или созданными самим пользователем). Однако иногда возникает необходимость создания, удаления или изменения групп, имеющих специальное назначение (как те, что были описаны в стратегии групп проектов). Как и в случае с учетными записями, вы можете ис­ пользовать для этого ГПИ- и ТПИ-инструменты.

У п р а вл е н и е гр уп п а м и с п о м о щ ь ю Г П И -и н стр ум е н то в

Многие ГПИ-инструменты для работы с учетными записями, такие как утилита Управление пользователями и группами (User and Group Administration) из состава дистрибутива openSUSE, своими возможностями похожи на те, что уже были описаны в этой главе. На рис. 13.1 можно увидеть, что первые две вкладки в окне Управление пользователями и группами (User and Group Administration) называют­ ся Пользователи (Users) и Группы (Groups). Для управления группами выберите вторую. Результат показан на рис. 13.6.

Рис. 13.6. Утилита Управление пользователями и группами (User and Group Administration) позволяет управлять как пользователями, так и группами

Управление группами 313

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

  1. Создайте группу, нажав кнопку Добавить (Add) на вкладке Г руппы (Groups).

  2. В появившемся диалоговом окне укажите название группы и ее идентифика­

тор GID.

  1. Добавьте членов группы, устанавливая флажок напротив имен учетных записей,

как показано на рис. 13.7.

  1. Завершите добавление группы, нажав кнопку ОК.

Пользователей в группы можно добавлять по отдельности (см. следующий раздел).

Рис. 13.7. Вы можете добавить пользователей в группу во время ее создания

У правл ение гр уп п а м и в ко м а н д н о й стр о ке

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

314 Гпава 13. Создание пользователей и труп п

Таблица 13.3. Параметры команды groupadd

Н а зв а н и е п ар ам етр а

С о к р а щ ен ­ ная вер си я

Р е зу л ь т а т

-gid GID

—non­ unique

■g

-system

-force

-f

С помощью этого параметра можно задать определенный идентификатор GID. Если его опустить, утилита groupadd использует следующий доступный номер

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

Этот параметр инициирует создание системной учетной группы с номером GID меньше 500 или 1000 в зависимо­ сти от дистрибутива. Несистемные группы обычно явля­ ются приватными группами отдельных пользователей

При попытке создать группу, которая уже существует, утилита useradd обычно возвращает сообщение об ошиб­ ке. С помощью данного параметра это сообщ ение можно скрыть

Использование команды useradd в сочетании с параметрами выглядит пример­

но так:

groupadd -g 1001 consultants #

В этом примере создается группа с идентификатором GID, равным 1 0 0 1 , и име­ нем consultants. Обратите внимание, что строка приглашения начинается со знака#; это означает, что для получения повышенных привилегий, необходимых для успеш­ ного завершения команды, использовалась учетная запись администратора.

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

потребуется команда usermod:

usermod -aG c o n s u lta n ts r ic h #

#

g r o u p s #

r i c h rich : users consultants

Параметры -aG используются для добавления учетной записи rich в новую группу consultants. Если бы пара­ метр -а был опущен, учетная запись была бы удалена из ее текущей группы и приписана эксклюзивно к группе consultants. Возьмите за привычку проверять результат вносимых изменений с помощью команды groups, которая выводит все группы, к которым принадлежит пользователь.

Для изм енения самой группы м о ж ­

но использовать ком анду groupmod.

Она поддерж ивает парам етры - g id

H i ) и –no n -u niqu e (-о ), указанные

в табл. 13.1, а также параметр

-n e w -n a m e им я (-п им я), который

меняет им я группы .

Управление группами 315

Для удаления групп в командной строке предусмотрена утилита groupdel, ко­ торая в качестве единственного параметра принимает название группы, например, команда groupdel consultants удаляет группу consultants.

ГРУППА WHEEL —————————————————————————————————

В ди стр и бути вах L in u x в сегда п о ум ол ч ан и ю п р едоставляется н есколько групп. О д н а и з

них, w h eel (и м еет ся в н екоторы х д и ст р и б у т и в а х ), о со б е н н о важ на для с и ст ем н о го ад м и ­ нистрирования. Е е членам д ост уп н ы адм и н и стр атор ск и е привилеги и, н апри м ер право

использовать к ом ан ду sudo. Н азв ан и е группы п р ои сход и т от ж ар гон н ого вы раж ения b ig

w h eel (« б о л ь ш о е к о л е с о » ), о бозн ач аю щ его важ н ую персону.

О дн ако не все д и стр и бути вы предоставляю т э т у к онк ретную группу. Чтобы узнать, п р и ­

сутств ует л и она в ваш ей си ст ем е, и сп ол ь зуй т е к ом ан ду grep w h e e l /e t c /g r o u p .

Н екоторы е дистрибутивы позволяю т добавлять основную учетную запись в группу w heel на этапе установки о п ер ац и он н ой систем ы . Н о пом ни те, что название эт ой группы у п о ­

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

ОСНОВЫ И НЕ ТОЛЬКО

Б о л ь ш и н ств о зад а ч по уп р авл ен и ю уч е тн ы м и зап и ся м и м о ж н о в ы п о л н я ть в гр аф и ческо й ср ед е. Э то

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

ск а х . О днако неко то р ы е оп е рац и и тр е б ую т и сп о л ь зо в а н и я Т П И -и н стр ум е н то в , та к и х как useradd,

userm od , userdel и p a ssw d (а та к ж е ком анд gro u p ad d , gro u p m o d и gro u p d el, если р е ч ь и д ет о гр уп п ах).

Д аж е если вам не нуж ны р а сш и р е н н ы е в о зм о ж н о сти , ТП И -у ти л и ты , как то л ь к о вы к ним п р и в ы к н е ­

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

Упражнения

С о зд ай те п р о бн ую у ч е тн у ю з а п и с ь с и сп о л ь зо в а н и е м ГП И -и н стр у м е н то в , п р е д о ста в л я е м ы х

в а ш и м д и стр и б у ти в о м . З а т е м в о й д и те с ее п о м о щ ь ю в си сте м у, ч то б ы п р о в е р и ть , ч то все

р а б о та е тта к , как вы ож и д али .

С о зд ай те ещ е одну про бн ую уч е тн ую за п и сь с п о м о щ ью ути л и ты useradd, но не и сп о л ьзуй те

ком анду p assw d , что бы з ад а ть д л я нее п а р о л ь . С м о гл и ли вы войти в си сте м у ? Теперь в о с­ п о л ь зуй те сь ком анд о й p a ssw d , ч то б ы со зд а ть паро ль д л я новой уч е тн о й зап и си , и е щ е раз

п оп р об уй те вой ти в систем у.

Контрольные вопросы

Что нуж но в в е сти а д м и н и стр а то р у си стем ы Lin u x д ля уд аления уч е тн о й зап и си п е т о в м е с т е с е е

д ом аш н ей папкой?

3 16 Глава 13. Создание пользователей и групп

ОСНОВЫ И НЕ ТОЛЬКО

A.

Б.

B.

Г.

userdel п е т о .

userdel -f п е т о .

userdel -г п е т о .

rm /ho m e/nem o.

Д .

г т -г /ho m e/nem o.

Какой из сл е д ую щ и х паро лей я в л я е тся л уч ш и м ?

A .

L inusTorvalds.

Б.

B.

иВ2ор% 4с)Н —і—і—і—і—і—і—і—і—і—і—і—і—к + .

1 23 45 6.

Г.

passw ord.

Д.

pean u tb u ttersan d w ich .

О п и ш и те результат усп еш н о го в ы п о л н ен и я ком анд ы # g ro u p a d d henry.

A.

Создает новую гр уп п у под н а зв а н и е м henry.

Б. Д о б ав л я е т п о л ьзо вател я h en ry в текущ ую гр уп п у по ум о л чан и ю .

B.

Г.

И м п о р ти р ует и н ф ор м аци ю о гр уп п е и з ф а й л а с и м е н е м henry.

Д о б ав л я е т гр уп п у h en ry в сп и со к гр уп п п о л ьзо вате л я .

И сти на или лож ь: у п о л ь зо в а те л ь ск и х у ч е тн ы х зап и се й ном ера UID б о л ьш е, ч е м у си стем н ы х.

И сти на или лож ь: п о льзо ватели , раб о таю щ и е в ком анд н ой стр о к е , д о лж н ы м е н я т ь с в о и пароли

с пом ощ ью ути л и ты userm od.

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

о ста в а ть ся на ком п ью тер е.

Вы х о ти те со з д а т ь уч е тн ую зап и сь д л я н о в о го п о л ь зо в а те л я с им ен ем th e o и н а зн а ч и ть ем у

и д ен ти ф и като р UID, равны й 1926. Д ля этого нуж н о в в е с ти к о м ан д у u se ra d d _ _ _ _ _ _ _ _ _ _ _ _ ,

Вы х о ти те и зм е н и ть им я п о л ь зо в а те л я с е1211 на e m ilyn , но все о ста л ь н ы е св о й ств а уч етн о й

записи д о лж н ы о ста ть ся п реж ни м и . Д ля это го нуж н о в в е с ти к о м а н д у _ _ _ _ _ _ _ _ _ _ _ ,

9 . Д ля со зд ан и я си стем н о й гр уп п ы нуж но п е р е д ать к о м ан д е gro u p a d d п а р а м е тр _ _ _ _ _ _ _ _ _ _ _ _

С ве д ен и я о р а зл и ч н ы х гр уп п ах, в к л ю ч а я их н а зв а н и я , и д ен ти ф и като р ы GID и п ользо вателей ,

хр а н я тся в ф а й л е _ _ _ _ _ _ _ _ _ _ _ (н уж н о у к а з а ть п олн ы й п уть).

Глава 14 Настройка владения и прав доступа

Linux как многопользовательская операционная система предоставляет инструмен­ ты для защиты файлов от несанкционированного доступа, ведь вы не хотите, чтобы другой пользователь мог прочитать ваши личные файлы или удалить ваши рабочие файлы (случайно или намеренно). Linux решает эти задачи с помощью двух функ­ ций файлов и каталогов: владения и прав доступа. У каждого файла есть владелец (учетная запись, с которой он связан), а также связанная с ним группа. Три набора прав доступа определяют, что владелец файла, члены группы файла и все другие пользователи могут делать с файлом. Таким образом, владение и права доступа взаимосвязаны, несмотря на то что для работы с ними вы используете различные текстовые команды. (ГПИ-инструменты часто сочетают в себе обе эти функции.)

□ Настройка владения.

□ Настройка прав доступа.

□ Биты особых прав доступа и функции файлов.

Настройка владения Модель безопасности Linux основана на подобной мо­ дели системы Unix, которая была разработана как мно­ гопользовательская операционная система. Поэтому данная модель предполагает наличие на одном компью­ тере нескольких пользователей и позволяет связывать

Биты см ены идентификатора

пользователя (SUI0) и см ены

идентиф икатора группы (SGID),

описанны е в разделе «Особые права

выполнения», м о гут м одиф ици­

ровать учетную запись и группу,

связанную с п рограм м ой.

318 Глава 14. Настройка владения и прав доступа

отдельные файлы с пользователями, которые их создают, — таким образом, у фай­ лов есть владельцы. Вы сможете изменять владение файлом, используя файловый менеджер или текстовую консоль.

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

О сновны е св е д е н и я о в л а д е н и и

В главах 12 и 13 была описана система учетных записей операционной системы Linux. Учетные записи — основа владения. Каждый файл имеет владельца — учет­ ную запись, с которой он связан. Эта связь устанавливается с помощью идентифи­ катора пользователя учетной записи (UID). Каждый файл также связан с группой с помощью идентификатора группы (GID).

Как описано в разделе «Настройка прав доступа» данной главы, доступ к файлу регулируется правами доступа, которые можно установить для владельца файла, группы файла и всех других пользователей компьютера. От имени суперпользова­ теля вы можете изменить владельца и группу любого файла. Владелец файла также может изменить группу файла (только ту группу, к которой пользователь принадлежит).

К каталогам применяются такие же принципы владения, как и к файлам: у ка­ талогов есть владельцы и группы. Их может изменить суперпользователь или (в меньшей степени) владелец каталога.

МЕЖПЛАТФОРМЕННАЯ УСТАНОВКА UID И G ID ———————————————————

Вы можете использовать несколько установок Linux, либо двойную загрузку на одном компьютере, либо установленную на нескольких компьютерах. Если вы перенесете файлы из одной установки в другую, то обнаружите, что владение файлами изменилось, как толь­ ко вы начали перемещение. То же самое может произойти с операционными системами, подобными Unix (а не Linux), например macOS. Причина в том, что файловые системы этих ОС хранят информацию о владении и группе с помощью номеров UID и GID, а от­ дельный пользователь или группа могут иметь разные UID и GID на разных компьютерах, даже если имя, связанное с учетной записью или группой, идентично.

Эта проблема, вероятнее всего, возникает тогда, когда для передачи данных исполь­ зуются дисковые файловые системы, присущие Linux или Unix, включая файловые системы (такие как ext2fs в Linux или HFS+ в macOS) либо Network File System (се­ тевая файловая система, NFS) для удаленного доступа к файлам. Вероятность воз­ никновения этой проблемы невелика, если вы используете файловые системы, не присущие Linux/Unix, например File Allocation Table (FAT), New Technology File

Настройка владения 319

System или Server Message Block/Common Internet File System (SMB/CIFS — управ­ ляемые с помощью Samba в Linux) для доступа к сети.

Если вы столкнулись с этой проблемой, есть несколько решений (некоторые из них вы­ ходят за рамки этой книги). Распространенное решение — изменить сопоставления (мап- пинг) UID или GID на одной или нескольких установках таким образом, чтобы все они совпадали. В главе 13 описано, как изменить UID с помощью usermod, а также как из­ менить GID с помощью groupmod. При передаче данных через съемные диски решением может быть использование FAT и NTFS при условии, что вам не нужно сохранять для файлов права доступа в формате Unix.

Н астройка вл а д е н и я в ф а йл ово м м е н е д ж е р е

Как описывается в главе 4, файловый менеджер позволяет работать с файлами. Вероятно, вы уже знакомы с файловыми менеджерами Windows или macOS. Вла­ дение и права доступа Linux отличаются, поэтому, возможно, вы хотите знать, как проверить и изменить основные свойства владения с помощью файлового менед­ жера Linux. Как отмечалось в главе 4, в Linux вы можете выбирать среди несколь­ ких файловых менеджеров. Они отличаются лишь деталями. В этом разделе в ка­ честве примера рассмотрим Nautilus (файловый менеджер по умолчанию), который используется в рабочей среде GNOME.

Если вы хотите изменить владельца файла, нужно запустить Nautilus от имени суперпользователя; в то же время вы можете изменить группу файла на любую группу, к которой принадлежите как обычный пользователь. Процесс выполнения этой задачи от имени суперпользователя выглядит сле­ дующим образом.

  1. Запустите окно терминала.

Если вы выберете U buntu, д л я за­

пуска N autilus мож ет понадобиться

  1. В окне терминала введите su, чтобы получить ro o t-

использовать sudo.

привилегии.

  1. В окне терминала введите nautilus, чтобы запустить Nautilus. При необходимости вы можете включить путь к каталогу, в котором хотите увидеть запуск Nautilus. Если вы не введете путь, Nautilus запустит­ ся, отображая содержимое каталога / root.

^

Каталог /r o o t—

это дом аш ний

каталог учетной записи суперполь­

зователя.

  1. Найдите файл, владение которым вы хотите настроить, и щелкните на нем

правой кнопкой мыши.

  1. В появившемся меню выберите пункт Свойства (Properties). Откроется одно­

именное диалоговое окно.

320 Глава 14. Настройка владения и прав доступа

  1. Перейдите на вкладку Права (Permissions) в диалоговом окне Свойства ( Properties).

Результат будет похож на тот, который показан на рис. 14.1.

  1. Чтобы изменить владельца файла, выберите нового владельца в поле Владелец (Owner). Это возможно только в том случае, если вы запустили Nautilus от имени суперпользователя.

  2. Чтобы изменить группу файла, выберите новую группу в поле Группа (Group). Если вы запустите Nautilus от имени обычного пользователя, то сможете выбрать любую группу, к которой принадлежите, но если запустите Nautilus от имени суперпользователя, то сможете выбрать любую группу.

  3. Как только вы настроили основные свойства, которые хотели изменить, на­

жмите кнопку х.

Если вы хотите изменить группу файла, а не его владельца, и если вы являетесь членом целевой группы, то можно запустить Nautilus от имени обычного пользо­ вателя. Затем продолжайте работу, начиная с шага 4.

В ы»г іМб-мме-Unia ut) МмфМ

О,

1 = ѵ

s

Я

Цттттр’. I ? ; * *

©

jfj К о раина

@ Компьютер

О о м ш .

П рае*

О г «рыть с п о й м е м

Twjt

О б з о р с е т и

Владелец:

right men - MikheM Right mar

Д. Подключиться…

Доступ:

Чтение и мпись

Группа:

Доступ:

О с т т ы е м

Доступ:

root

w

Только чтение

Только чтение

Выполнение:

С ) Разрешить выполнение фаГюа как программы

Кокгекст безопасности: неизвестно

_*J

  • 1

  • 1

Рис. 14.1. Файловые менеджеры операционной системы Linux предоставляют доступ к метаданным владения и прав доступа к файлу

Следуетбыть предельно осторожными при запуске Nautilus от имени суперполь­ зователя. Если вы забудете, что запускаете программу от имени суперпользователя, то с легкостью сможете создать новые файлы от имени суперпользователя, но впо­

Настройка владения 321

следствии потребуются root-привилегии для изменения владельца файлов. От име­ ни суперпользователя можно случайно удалить важные системные файлы, которые вы не смогли бы удалить от имени обычного пользователя. По этим причинам мы рекомендуем вам использовать режим текстовой консоли для настройки владения файлом. Благодаря сообщениям в командной строке проще заметить, что вы рабо­ таете от имени суперпользователя; если вы привыкли использовать ГПИ-инструменты, маловероятно, что вы запустите дополнительные программы от имени суперпользо­ вателя из текстовой оболочки, а не из Nautilus.

Н астройка вл а д е н и я в о б ол очке

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

Имя ком анды chow n означает change o w n e r—см енить вла­ дельца.

chown bob ta r g e tf ile .o d f #

В примере показано, что bob является владельцем

файла t a r g e tf i le .o d f . Вы можете изменить основного владельца файла и его группу с помощью отдельной команды — путем разделения владельца и группы двоеточием (:):

chown bob:users t a r g e tf ile .o d f #

В примере показано, что bob является владельцем файла t a r g e t f i l e . odf и связывает файл с пользовательской группой. Чтобы изменить группу без смены владельца, вы можете опустить имя владельца, оставляя двоеточие и имя группы:

$ chown:users ta rg e tfi l e . odf

Кроме того, вы можете использовать команду chgrp, которая изменяет только

группу и не требует наличия двоеточия перед именем группы:

$ chgrp users ta r g e tfile .o d f

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

Команды chown и chgrp поддерживают набор параметров, которые изменяют ре­ зультат выполнения команд. Наиболее важной из них является -R (или -recursive), которая изменяет владельца всех файлов во всем дереве каталогов. Предположим, что пользователь шагу вышла из компании, а сотрудник bob должен получить доступ

322 Глава 14. Настройка владения и прав доступа

к ее файлам. Если домашним каталогом тагу был /home/тагу, вы можете ввести следующее:

chown -R bob /home/mary #

Данная команда делает пользователя bob владельцем каталога /home/mary, включая все файлы, все подкаталоги и файлы в подкаталогах. Чтобы упростить переход для пользователя bob, вы также можете переместить бывший домашний каталог тагу в домашний каталог bob.

Настройка прав доступа Владение файлами не имеет смысла, если мы не укажем, что отдельные пользова­ тели могут делать со своими файлами или файлами других пользователей. Теперь самое время поговорить о правах доступа. Структура прав доступа в Linux построе­ на по примеру структуры в Unix и требует небольшого пояснения, прежде чем мы перейдем к рассмотрению данного вопроса. Как только вы освоите основы, вы сможете начать изменение прав доступа, используя либо файловый менеджер ГПИ, либо интерфейс командной строки. Вы также можете установить права доступа по умолчанию для новых файлов.

О сн овн ы е св е д е н и я о п р а ва х д о с ту п а

Чтобы разобраться с правами доступа в Unix (а следо­ вательно, и в Linux), вы можете начать с дисплея, соз­ данного с помощью команды I s , которая перечисляет файлы в каталоге, в сочетании с параметром -1, который создает длиный листинг каталога, перечисляющий в том числе права доступа файлов. Например, чтобы увидеть длинный листинг файла t e s t , вы можете ввести следующее:

Глава 6 описывает команду Is и ее

дополнительны е параметры.

$ Is -1 test

  • r w x r - x r - x 1

r i c h u s e r s 1 1 1 A p r 1 3 1 3 : 4 8

t e s t

Эта строка состоит из нескольких разделов, которые предоставляют разные

сведения о файле.

□ Права доступа. Первый элемент (в данном примере -rw xr-xr-x) — это права

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

□ Количество ссылок. Следующий элемент (в данном примере 1) показывает количество ссылок на файл

Глава 7 более подробно описывает

ссылки.

Настройка прав доступа 323

(количество уникальных имен файлов, которые могут использоваться для полу­ чения доступа к нему).

□ Имя пользователя. Следующий элемент (в данном примере rich) идентифи­

цирует владельца файла по имени пользователя.

□ Имя группы. Группа файла (в данном примере users) указана следом.

□ Размер файла. Размер файла в данном примере довольно небольшой —

111 байт.

□ Метка времени. Метка времени (в данном примере 13 апреля 13:48) определя­

ет время последнего изменения файла.

□ Имя файла. Наконец, команда Is -1 отображает имя файла (в данном примере

te s t).

Строка, которая начинает этот вывод (в данном примере -rwxr-xr-x), является символическим представлением строки прав доступа. Рисунок 14.2 показывает, как эта строка разбивается на четыре части.

□ Код типа файла. Первым символом является код типа файла (табл. 14.1). Этот символ иногда опускается, когда тип файла не имеет значения или определяет­ ся каким-либо другим способом.

Код типа файла

Права владельца

Права группы

Глобальные права

г

W

X

г

X

г

X

I

I чтение запись выполнение чтение запись выполнение чтение запись выполнение

I

I

I

I

Рис. 14.2. Символическое представление прав доступа, разбитое на четыре части

Таблица 14.1. Коды типов файлов в Linux

Код Имя

Значение

Обычный файл

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

d

Каталог

Каталоги диска - это файлы, но они содержат имена фай­ лов и ссылки на структуры данных файлов

Продолжение &

324 Глава 14. Настройка владения и прав доступа

Таблица 14.2 (продолжение)

Код Имя

Значение

I

Р

S

Ь

с

Символическая ссылка

Файл содержит имя другого файла или каталога. Когда Linux получает доступ к символической ссылке, он пытает­ ся прочитать связанный файл

Именованный канал

Канал позволяет двум запущенным Linux-программам общаться друг с другом в одностороннем порядке

Сокет

Сокет (двунаправленный канал) похож на именованный ка­ нал, но позволяет создавать сетевую и двустороннюю связь

Устройство блоч­ ного ввода-вывода

Файл, соответствующий аппаратному устройству, с кото­ рого и на которое передаются блоками данные размером более 1 байта. Дисковые устройства (жесткий диск, Flash- накопитель, CD-ROM и т. д.) представляют собой обычные блочные устройства

Устройство посимвольного ввода-вывода

Файл, соответствующий аппаратному устройству, с кото­ рого и на которое передаются данные в единицах по одному байту. Примеры включают параллельные и последователь­ ные порты RS-232

□ Права доступа владельца. Определяют, что владелец

может делать с файлом.

□ Права доступа группы. Определяют, что члены груп­ пы файла (которые не являются его владельцем) могут делать с ним.

Больш инство файлов, которыми вы управляете,— это обычные файлы, каталоги и символические ссылки.

□ Глобальные (остальные) права доступа. Определяют, что пользователи, кото­ рые не являются владельцами файла или членами его группы, могут делать с файлом.

В каждом из этих трех наборов прав доступа строка определяет наличие или отсутствие каждого из трех видов доступа: чтения, записи и выполнения. Права чтения и записи говорят сами за себя. Право на выполнение означает, что файл можно запустить как программу. Отсутствие права доступа обозначается с по­ мощью прочерка ( -) в строке. Наличие права доступа обозначено буквой г для чтения, w — для записи, х — для выполнения.

Таким образом, строка прав доступа -rw xr-xr-x означает, что файл является обычным, его владелец, члены группы файла и все остальные пользователи могут прочитать и выполнить этот файл. Только владелец имеет права на запись в файл. Возможно другое обозначение прав доступа, имеющее сжатый вид. Мы берем каждую из трех групп прав доступа в строке (пренебрегая кодом типа файла) и пре­

Настройка прав доступа 325

образуем ее в число от 0 до 7 (восьмеричное число). В результате получается трех­ значное восьмеричное число. Каждое число образуется начиная с 0 и затем:

□ добавляется 4, если есть права на чтение;

□ добавляется 2, если есть права на запись;

□ добавляется 1, если есть права на выполнение.

Полученный трехзначный код предоставляет права доступа для владельца, группы и глобальных пользова­ телей. В табл. 14.2 показаны примеры общих прав до­ ступа и их значения.

Таблица 14.2. Примеры прав доступа и их интерпретация

Строка прав доступа

Восьмеричный код

Значение

Эти процедуры включают бинарные числа и логические (а не арифмети- ческие)операции. Арифметическое описание понять легче.

rwxrwxrwx

777

rwxr-xr-x

rwxr-x—

755

750

rwx———

700

rw-rw-rw-

666

rw-rw-r—

664

rw-rw——

660

rw-r—r—

644

rw-r——–

640

rw———–

600

г————-

400

Права на чтение, запись и выполнение для всех поль­ зователей

Права на чтение и выполнение для всех пользовате­ лей. Владелец файла также имеет права на запись

Права на чтение и выполнение для пользователя и группы. Владелец файла также имеет права на запись. Другие пользователи не имеют правадоступа к файлу

Права на чтение, запись и выполнение только для вла­ дельца файла. У всех остальных доступа нет

Права на запись и чтение для всех пользователей. Пра­ ва на выполнение нет ни у кого

Права на чтение и запись для владельца и группы. Пра­ ва только на чтение для всех остальных пользователей

Права на чтение и запись для пользователей и группы. Глобальные права отсутствуют

Права на чтение и запись для владельца. Для всех остальных — права только на чтение

Права на чтение и запись для владельца, права только на чтение для группы. Для остальных пользователей права отсутствуют

Права на чтение и запись для владельца. Для осталь­ ных пользователей права отсутствуют

Права на чтение для владельца. Для остальных поль­ зователей права отсутствуют

326 Глава 14. Настройка владения и прав доступа

К правам доступа применимы некоторые особые

случаи.

Сущ ествует S12 возможных вариан­ тов прав доступа. Таблица 14.2 дале­ ко не полная и показывает наиболее распространенные комбинации.

□ Исполняемые биты каталога. Каталоги используют исполняемый бит, чтобы предоставить права для по­ иска каталога. Для каталогов это весьма актуальная характеристика, поэтому вы почти всегда сможете найти исполняемый набор битов, когда установлен бит чтения (права на чтение).

□ Права на запись для каталога. Каталоги являются файлами, которые интерпретируются особым обра­ зом. Таким образом, если пользователь может вы­ полнить запись в каталог, он может создать, удалить или переименовать файлы в каталоге, даже если не является владельцем этих файлов и не имеет права выполнить запись в эти файлы.

Стандартные правила для за­ писи в каталоги можно изменить с помощью бита закрепления в памяти (sticky bit), который описан в подразделе «Биты закрепления в памяти» последнего раздела данной главы.

□ Символические ссылки. Права для символических ссылок всегда имеют номер 777 (rwxrwxrwx или lrwxrwxrwx, чтобы включить код типа файла). Этот доступ применяется не­ посредственно к связующему файлу, а не к файлу, на который указывает ссылка. Другими словами, все пользователи смогут прочитать содержание ссылки, чтобы узнать имя файла, на который она указывает, но права, уста­ новленные на файле, на который указывает ссылка, определяют доступ к нему. Изменение прав доступа по символической ссылке влияет на файл, на который она указывает.

□ Права суперпользователя. Многие из правил, связанных с правами доступа, не применяются к суперпользователю. Суперпользователь может прочитать или записать любой файл на компьютере — даже файлы, доступ к которым запрещен для всех (те, которые имеют 000 прав). Тем не менее суперпользователю нужен набор исполняемых битов, чтобы запустить программный файл.

Н астр о йка п рав д о с ту п а в ф а йл ово м м е н е д ж е р е

Процедура настройки прав доступа в файловом менеджере схожа с процедурой настройки владения файлом.

□ Обычно вы выполняете эти настройки, используя такое же диалоговое окно, которое применялось для настройки владения, например Nautilus, показанное на рис. 14.1.

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

Настройка прав доступа 327

□ Вам не нужно быть суперпользователем, чтобы настроить права доступа к фай­

лам, которыми вы владеете.

□ Вам необходим ro o t-доступ, чтобы настроить права доступа только для тех

файлов, которые вам не принадлежат.

Как видно на рис. 14.1, существует три элемента доступа, связанные с владель­

цем, группой и остальными пользователями:

□ элемент Владелец (Owner) предоставляет два варианта: Только чтение (Read

only) и Чтение и запись (Read and Write);

□ элементы Группа (G roup) и Остальные (Others) предоставляют два варианта: Только чтение (Read only) и Чтение и запись (Read and W rite), а также вариант Нет (None). Вы можете использовать эти параметры, чтобы установить биты полномочий чтения и записи на своем файле.

Nautilus требует отдельной настройки исполняемого бита посредством установ­ ки флажка Разрешить выполнение файла как программы (Allow Executing File As Program). Этот флажок устанавливает все три исполняемых бита прав доступа; вы не можете с помощью Nautilus управлять правами выполнения более точно. Вы также не можете настроить права выполнения для каталогов с помощью Nautilus.

Н астройка прав д о с ту п а в обол очке

В интерфейсе командной строки вы можете использо­ вать chmod для изменения прав доступа. Эта команда довольно сложная — в основном из-за трудности изме­ нения прав доступа. Вы можете указать права доступа в двух видах: как восьмеричное число или в символиче­ ской форме (набор кодов, связанный со строчным пред­ ставлением прав доступа).

Команда chmod означает «изменить режим» (change mode), где под режимом подразумеваются права доступа.

Восьмеричное представление режима такое же, как описанное ранее и приве­ денное в табл. 14.2. Например, чтобы изменить права доступа к файлу re p o rt. tex на r w - r - r - - , вы можете выполнить следующую команду:

$ chmod 644 report.tex

Символический режим, напротив, состоит из трех компонентов, таких как:

□ код, обозначающий набор прав доступа, который вы хотите модифицировать: и — для пользователя (владельца), g — для группы, о — для пользователей, а — для всех прав доступа;

□ символ, обозначающий, хотите ли вы добавить (+), удалить (-) или установить

равенство (=) заявленному значению;

328 Глава 14. Настройка владения и прав доступа

□ код, указывающий, какими должны быть права доступа, например обычные

символы г, w, х или более сложные операции.

Использование символических режимов с командой chmod может сбить с толку, поэтому мы не будем их описывать здесь полностью, однако нелишне познако­ миться с распространенными приемами использования (табл. 14.3). Символические режимы более гибкие, чем восьмеричные режимы. Вы можете указать символиче­ ские режимы, которые изменяют существующие права доступа (например, добавление или удаление прав вы­ полнения), не влияя на другие права. Вы также можете установить только пользо­ вателя, группу или глобальные права доступа, не влияя на другие. В восьмеричном режиме вы должны присвоить необходимое значение всем трем битам.

Так же как с командами chown и chgrp, вы можете использовать параметр - R (или -recursive) с ко­ мандой chmod, чтобы обрабатывать дерево каталогов.

Таблица 14.3. Примеры символических прав доступа с chmod

Команда

Начальные права доступа

Конечные права доступа

chmod а+х bigprogram

chmod ug=rw reporttex

chmod o-rwx bigprogram

chmod g-w,o-rw report.tex

rw-r— г—

r————–

пѵхг-хг-х

rw-rw——

rwxrwxr-x

rwxrwx—-

rw-rw-rw-

rw-r——–

Н астр о йка м а ски п ол ьзова тел я

Маска пользователя, или umask, определяет права доступа по умолчанию для новых файлов, umask — это значение, которое вычитается из прав 666 (rw-rw-rw-) при создании новых файлов или из 777 (rwxrwxrwx) при создании новых каталогов. На­ пример, если значение umask равно 022, файлы по умолчанию будут созданы с пра­ вами 644, а новые каталоги будут иметь права 755. Обратите внимание, что операция извлечения является не простым вычитанием, а побитовым вычитанием. То есть значение 7 в umask удаляет соответствующие права rwx, но для файлов, для которых начальной точкой является rw-, результатом будет - - - (0), а не -1 (что бессмысленно). Вы можете настроить маску с помощью команды umask, используя значение umask, например umask 22. Как правило, эта команда используется в системных конфигурационных файлах, например /e tc /p r o f ile , или же в пользовательских конфигурационных файлах, например -/.b ash rc.

Биты особых прав доступа и функции файлов 329

Биты особых прав доступа и функции файлов Когда вы будете изучать дерево каталогов Linux, то столкнетесь с определенными типами файлов, требующими особого внимания. В одних случаях понадобится разобраться, как обрабатывать такие файлы, поскольку они отличаются от описан­ ных в предыдущих главах, в других — вам может понадобиться настроить Is или иную команду, чтобы обработать эти файлы и каталоги (например, при использо­ вании бита закрепления в памяти, особых прав выполнения, скрытия файлов или при получении длинных листингов каталогов).

Биты за кр е п л е н и я в пам яти

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

$ whoami kirk $ Is -1 to ta l 0 d rw x rw x rw x 2 r o o t r o o t 80 Dec 1 4 1 7 :5 8 s u b d ir

$ I s -1 s u b d i r /

t o t a l 2350

  • r w - r - - 1 r o o t r o o t 240 4 2 6 8 Dec 1 4 1 7 :5 9 f l 7 0 1 . t i f

Эти команды устанавливают текущую конфигурацию: эффективным иденти­ фикатором пользователя является kirk, а текущий каталог имеет один подкаталог subdir, которым владеет суперпользователь, но к которому kirk, как и все прочие пользователи системы, имеет полный доступ на запись и чтение. Этот подкаталог содержит один файл f 1701. t i f , которым владеет суперпользователь и к которому у пользователя kirk нет доступа. Вы можете убедиться, что пользователь kirk не может с помощью команды touch выполнить запись в файл:

$ touch subdir/f1701.tif

to u c h : c a n n o t

to u c h

f s u b d i r / f l 7 0 1 . t i f

f : P e rm is s io n d e n ie d

Сообщение об ошибке подтверждает, что пользователь kirk не смог выполнить запись в su b d ir/f 1701. t i f . Можно считать, что файл защищен от несанкциониро­ ванного доступа. Однако не торопитесь — обратите внимание на следующее:

$ rro s u b d i r / f 1 7 0 1 .t i f

$ Is -1 subdir/ t o t a l 0

330 Глава 14. Настройка владения и прав доступа

Команда гш не выдает сообщения об ошибке; последующая проверка катало­ га subdir подтверждает, что теперь он пуст. Другими словами, пользователь kirk мог удалить файл, даже не имея прав на записьі Это может показаться ошибкой, ведь, если вы не можете осуществить запись в файл, вы могли бы подумать, что у вас нет возможности его удалить. Напомним, однако, что каталоги всего лишь являются особым типом файлов, содержащих имена других файлов и указатели на их структуры данных более низкого уровня. Таким образом, изменение фай­ ла требует доступа на запись в файл, а создание или удаление файла требует доступа на запись в каталог, в котором он находится. В данном примере у поль­ зователя kirk есть доступ на запись к каталогу subdir, но не к файлу f 1701. tif в этом каталоге. Таким образом, пользователь kirk может удалить этот файл, но не изменить его. Этот результат не является ошибкой, это всего лишь алогичная функция.

Хотя файловые системы Linux были разработаны для подобной работы, такое поведение не всегда целесообразно. Для создания более понятного результата используется бит закрепления в памяти, который является особым флагом файловой системы, меняющим данное поведение. Если для каталога установлен бит закрепления в памяти, Linux позволит вам удалить файл, только если вы владеете файлом или каталогом, в котором он находится; прав на запись для каталога, в котором находится файл, недостаточно. Вы можете установить бит закрепления в памяти с помощью команды chown, используя один из двух спо­ собов. □ Использование восьмеричного кода. У казывая дру­ гую цифру перед трехзначным восьмеричным кодом (описан ранее в этой главе), вы можете установить любой из трех битов особых прав доступа, одним из которых является бит закрепления в памяти. Кодом для бита закрепления в памяти будет 1, поэтому вы будете использовать восьмеричный код, который начинается с 1 (например, 1755), чтобы установить бит закрепления в памяти. Указание значения, равного 0, как в 0755, удаляет бит закрепления в памяти.

выполнения» данного раздела.

краткое описание которых можно

Другие нечетные числа установят бит закрепления в памяти, но также

найти в подразделе «Особые права

дополнительные биты прав доступа,

□ Использование символического кода. Используйте символический код t для установки глобальных прав доступа, например, с помощью команды chmod o+t subdir, чтобы установить бит закрепления в памяти для каталога subdir. Аналогичным образом можете удалить бит закрепления в памяти, используя знак «минус» (chmod o-t subdir).

Восстановление файла и настройка бита закрепления в памяти позволяют полу­

чить следующий результат:

Биты особых прав доступа и функции файлов 331

$ I s -1 t o t a l 0

d rw x rw x rw t 2 r o o t r o o t 80 Dec 1 4 1 8 :2 5 s u b d ir

$ I s -1 s u b d i r /

t o t a l 304

  • r w - r - - r - - 1 r o o t r o o t 2 4 0 4 2 6 8 Dec 1 4 1 8 :2 5 f l 7 0 1 . t i f

$ rm s u b d i r / f l 7 0 1 . t i f

rm : c a n n o t rem ove 1s u b d i r / f 1 7 0 1 . t i f

’ : O p e r a tio n n o t p e r m it t e d

Хотя пользователь kirk по-прежнему имеет полный доступ к чтению и записи в каталог subdir, он не может удалить файлы другого пользователя в этом катало­ ге.

Вы можете указать каталог с помощью бита закрепления в памяти, установлен­ ного с помощью небольших изменений в символическом режиме, с помощью ко­ манды Is -1. Глобальный исполняемый бит отображается как t, а не как х. В данном примере результатом является то, что права доступа к каталогу subdir устанавли­ ваются как drwxrwxrwt, а не как drwxrwxrwx.

Бит закрепления в памяти особенно важен по отно­ шению к общим для многих пользователей каталогам. Например, это стандартная функция для каталогов /tmp и /var/tmp, поскольку многие пользователи хранят в этих каталогах временные файлы. Если вы хотите, чтобы поль­ зователи, совместно работающие над проектом, могли записывать файлы в домашние каталоги друг друга, мож­ но установить бит закрепления в памяти на этих домаш­ них каталогах или на подкаталогах, в которых пользова­ тели обмениваются файлами.

О собы е права в ы п о л н ен ия

Если вы удалите каталог /tmp

или /var/tmp и вам понадобится создать его заново, убедитесь,

что установили бит закрепления

в памяти для нового каталога!

Как мы уже говорили, исполняемый бит прав доступа позволяет идентифицировать программные файлы. Затем Linux разрешает запускать эти программы. Такие файлы запускаются с использованием ваших учетных данных (так как связь запущенных процессов с конкретными пользователями — ключевая составляющая модели без­ опасности Linux). Иногда программы надо запускать с повышенными привилегиями. Например, программу passwd, которая устанавливает пароли пользователей, следу­ ет запускать от имени суперпользователя, чтобы выполнять запись и в некоторых случаях чтение конфигурационных файлов, которые она обрабатывает.

Таким образом, если пользователи собираются изменить свои пароли, у про­ граммы passwd должны быть ro o t-привилегии, даже если ее будут запускать обыч­ ные пользователи.

332 Глава 14. Настройка владения и прав доступа

Существуют дваособых бита правдоступа, которые похожи на бит закрепления

в памяти, описанный ранее.

□ S et User ID (S U ID ). Бит смены идентификатора пользователя указывает Linux запустить программу с правами доступа того, кто владеет файлом, а не с правами пользователя запускающего программу. Например, если файл при­ надлежит суперпользователю и имеет свой бит смены идентификатора поль­ зователя, программа запускается с ro o t-привилегиями и может выполнять чтение любого файла на компьютере. Некоторые серверы и другие системные программы запускаются именно таким образом (часто называется SUID су­ перпользователя). Программы с битом SUID можно определить по симво­ лу s в позиции исполняющего бита владельца в строке прав доступа, например rw xr-sr-x.

□ Set Group ID (SG ID ). Бит смены идентификатора группы (SGIP) похож на SUID, но устанавливает группу запущенной программы на группу файла. Это обозначено символом s в позиции исполняющего бита группы в строке прав доступа, например rwxr-sr-x.

Вы можете установить эти биты с помощью команды chmod.

□ И спользуя восьмеричный код. Измените первую цифру четырехзначного восьмеричного кода на 4, чтобы установить SUID-бит; на 2, чтобы установить SGID-бит; на 6, чтобы установить оба бита. Например, 4755 устанавливает на исполняемом файле SUID-бит, а не SGID-бит.

□ Используя символический код. Используйте символический код в сочетании с и, чтобы указать SGID-бит, g — чтобы указать SUID-бит, оба символа — чтобы установить оба бита. Например, команда chmod u+s myprog устанавливает SUID бит на myprog, тогда как chmod ug-s myprog удаляет SUID-бит и SGID-бит.

Обычно нет необходимости устанавливать или удалять эти биты; при необ­ ходимости программа управления пакетом устанавливает эти биты, когда вы инсталлируете или обновляете программу. Возможно, вам может понадобиться изменить эти биты, если их ошибочно установили на файлах или удалили. В не­ которых случаях вам может потребоваться настроить эти значения на программ­ ных файлах, которые вы компилируете из исходного кода, или же если вам не­ обходимо изменить способ работы программы. Будьте внимательны: если вы устанавливаете SUID- или SG ID -бит на обыкновенную программу, она будет запущена с повышенными привилегиями. Если программа содержит ошибки, они нанесут ущерб. Если вы случайно удалили права доступа, результат может быть негативным — программы, подобные passwd, sudo и su, полагаются на уста­ новленные SU ID -биты, поэтому удаление данной функции может повлечь пре­ кращение их работы.

Биты особых прав доступа и функции файлов 333

С кры тие ф айл ов

Если вы привыкли к Windows, вы можете знать о бите закрепления в памяти, ко­ торый в файловых менеджерах скрывает файлы от просмотра с помощью команды d in и других программ. Если вы ищете что-то подобное в Linux, поиск не увенча­ ется успехом (по крайней мере нет такой отдельной функции). Вместо этого Linux использует правила формирования имен файлов, позволяя скрывать файлы от просмотра: большинство инструментов, таких как I s , скрывают файлы и каталоги от просмотра, если их имена начинаются с точки (.). Таким образом, Is отобража­ ет файл a f i l e . t x t , но не показывает файл . a f i l e . t x t . Большинство файловых менеджеров и диалоговых окон, связанных с файлами, также скрывают файлы с точкой, как их принято называть; однако такая практика неповсеместна.

Многие программы пользуются преимуществами этой функции, чтобы конфи­ гурационные файлы не загромождали окна. К файлам с точкой относятся, к при­ меру, ~ /. bashrc — файл конфигурации пользователя оболочки Bash, ~/ .evolution — конфигурационные файлы Evolution, ~ /.fo n ts .c o n f, содержащий информацию о пользовательских настройках шрифта.

Вы можете просмотреть файлы с точкой разными способами в зависимости от того, о какой программе идет речь. В некоторых ГПИ-инструментах вы можете установить в окне настройки флажок, чтобы программа отображала такие файлы. В командной строке можете добавить параметр - а к команде Is :

$ I s -1 t o t a l 0

d rw x rw x rw t 2 r o o t r o o t 80 Dec 1 4 1 8 :2 5 s u b d ir $ Is -la t o t a l 305

d r w x r - x r - x 3 k i r k u s e rs

104 Dec 1 4 1 8 :4 4 .

d r w x r - x r - x 3 k i r k u s e rs

528 Dec 1 4 1 8 :2 1 . .

  • r w - r - r - 1 k i r k u s e rs 3 0 9 5 8 0 Dec 1 4 1 8 :4 4 . f l 7 0 1 . t i f

d rw x rw x rw t 2

r o o t r o o t

80 Dec 1 4 1 8 :2 5 s u b d ir

Приведенный пример демонстрирует скрытый файл . f i 7 0 i . t i f в текущем каталоге. Он также показывает два скрытых файла каталога. Первый . ссылается на текущий каталог, второй .. ссылается на родительский каталог.

Как говорилось в главе 7, символы,.

являются относительной ссылкой

на каталог. Скрытие файлов с точ­

кой — причина, по которой указы­

ваются две точки для относительной

Обратите внимание, что, если вы переименуете файл, чтобы он начинался с точки, это скроет файл, а также сделает его недоступным для любой программы, исполь­ зующей исходное имя файла. То есть, если вы переименуете f 1 7 0 1 . t i f в . f 1 7 0 1. t i f и если другая программа или файл ссылается на этот файл под именем f 1 7 0 1 . t i f ,

ссылки.

334 Глава 14. Настройка владения и прав доступа

эта ссылка больше не будет работать. Вы должны добавлять точку в начале имени в любую ссылку на скрытый файл.

П р о см о тр ка тал огов

В главе 6 рассматривалась команда I s (в том числе мно­ гие ее параметры). Поговорим об одном из них более детально — о параметре -d . Если вы работаете в катало­ ге, содержащем много подкаталогов, и если вы исполь­ зуете маску с Is для соответствия одному или несколь­ ким подкаталогам, то вы можете получить неожиданный результат: на выходе будут показаны файлы в соответ­ ствующих каталогах, а не информация о самих подката­ логах. Например, вы начинаете работу в каталоге с дву­ мя подкаталогами — s u b d i r l и s u b d ir 2 :

$ I s -1 s u b d ir *

s u b d i r l :

t o t a l 304

  • r w - r — r — 1 k i r k u s e rs 3 0 9 5 8 0 Dec 1 4 1 8 :5 4 f l 7 0 1 . t i f

Каталоги /ргос и /sys содержат

данные, которые генерируются

в режиме реального времени

и загружаются ядром автоматиче­

ски, что позволяет просматривать

процессы и состояние устройства.

Эти файлы и подкаталоги могут

появляться и изменяться в любое

время, поэтому довольно затрудни­

тельно их отобразить.

s u b d ir 2 :

t o t a l 84

  • r w - r — r — 1 k i r k u s e rs 86016 Dec 1 4 1 8 :5 4 1 0 6 7 9 2 c l7 .d o c

Если вместо этого вам понадобится информация о подкаталогах, а не содержи­

мое самих каталогов, вы можете добавить параметр -d:

$

I s - I d s u b d ir *

d r w x r - x r - x 2 k i r k u s e rs 80 Dec 1 4 1 8 :5 4 s u b d i r l

d r w x r - x r - x 2 k i r k u s e rs 8 0 Dec 1 4 1 8 :5 4 s u b d ir 2

ОСНОВЫ И НЕ ТОЛЬКО

Б е зо п а сн о сть ф ай л о в о ч е н ь в а ж н а, если вы р а б о та е те в м н о го п о л ь зо в а те л ь ск о й Lin u x; од и н и з со­

ста в л я ю щ и х элем ен тов б е зо п асн о сти — влад ен и е. В Lin u x к аж д ы й ф айл и м е е т вл ад ел ьц а и одну

св я за н н у ю группу. С у п е р п о л ь зо в ате л ь м о ж е т у с та н о в и ть в л а д е л ь ц а с п о м о щ ь ю ком ан д ы chow n,

т а к ж е он и ли в л а д е л е ц ф а й л а м о гу т у с т а н о в и т ь гр у п п у ф а й л а с п о м о щ ь ю ко м а н д ы ch o w n или

ch grp. Сам о по се бе в л ад ен и е б е сп о л езн о , п о это м у Linux п о д д е р ж и в а е т п р а в а д о с ту п а к ф ай лам ,

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

способом . Вы м о ж ете ус та н о в и ть п р ава д о с ту п а с п о м о щ ью ком анд ы ch m o d . Вы м о ж ете п о см о тр еть

Биты особых прав доступа и функции файлов 335

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

п а р а м е т р -I к к о м а н д е Is,

Упражнения

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

т е л ь , п о м е сти те ко п и ю в св о й д о м а ш н и й к а та л о г о б ы ч н о го п о л ь з о в а те л я И сп о л ь зу я св о ю

о б ы ч н ую у ч е тн у ю з а п и с ь , п о п р о б у й те о тр е д а к ти р о в а ть ф айл в т е к с т о в о м р е д а к то р е и со ­

х р а н и те и зм е н е н и я . Ч то п р о и зо й д е т? П оп р об уй те уд а л и ть э т о т ф айл с п ом ощ ью ком ан д ы rm .

Ч то п р о и зо й д е т?

С о зд ай те в р е м е н н ы й ф айл под и м е н е м о б ы ч н о го п о л ь зо в а те л я . О т и м ен и су п е р п о л ь зо в а те л я

и сп о л ь зу й те ко м ан д ы ch o w n и ch m o d , чтобы п о эк с п е р и м е н ти р о в а ть с р а зл и ч н ы м и ти п а м и

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

ф айла, и сп о л ьзуя св о ю уч е тн ую зап и сь.

В ы п о лн и те к о м ан д у Is Ч ч то б ы п р о см о тр е ть вл а д е л ь ц а и п р а в а д о ступ а к ф ай лам в св о ем

д о м а ш н е м к а та л о ге , в /usr/bin (н а х о д и тся м н о го п р о гр а м м н ы х ф айло в) и в /etc (н а хо д и тся

б о л ь ш и н ств о си сте м н ы х ко н ф и гур а ц и о н н ы х ф ай л о в). Ч то з н а ч и т р а зл и ч н о е вл ад е н и е и п р ава

д о ступ а д ля п о л ьзо вате л е й ? К то о су щ е с тв л я е т ч те н и е , з а п и с ь и вы п о лн ен и е эти х ф а й л о в ?

Контрольные вопросы

К акую ком а нду в ы вв е д е те (о т и м ен и суп ерп о л ь эо в а те л я ), что б ы и зм е н и ть в л ад ел ьц а ф айла

so m e file .tx t с ralph на tony?

A.

Б.

B.

chow n ralp h:ton y so m e file .tx t.

ch m od som efi le.txt tony.

chow n so m e file .tx t tony.

Г.

chow n tony som efi le.txt.

Д.

ch m o d to ny so m e file .tx t.

Ком анда Is - I d w o n d e rjaye о тк р ы в а е т си м в о л и ч е ск и й р е ж и м ф айла d rw x r-x r-x . Ч то и з п е р е ч и с­

л ен н о го я в л я е тся в е р н ы м у тв е р ж д е н и е м ? (В ы б е р и те все под ход я щ и е вари ан ты .)

A . w o n d e rjaye я в л я е тся си м в о л и ч е ск о й ссы лко й.

Б. w o nde rjaye я в л я е тся и сп о л н яе м о й п р о гр ам м о й .

B. w o nde rjaye я в л я е тся каталогом .

Г.

Все п о л ь зо в а те л и си сте м ы м о гу т п р о ч и та ть w onderjaye.

Д . Л ю б ой член гр уп п ы м о ж е т о с у щ е с тв и ть за п и сь w onderjaye.

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

336 Глава 14. Настройка владения и прав доступа

ОСНОВЫ И НЕ ТОЛЬКО

A.

grou padd .

Б.

B.

Г.

grou pm od .

chm od.

Is.

Д.

chow n.

И сти н а и ли л о ж ь : ф ай л с п р а в а м и 7 5 5 м о ж е т б ы т ь п р о ч и та н л ю б ы м п о л ь з о в а те л е м на

к о м п ь ю те р е , есл и п р е д п о л о ж и ть , ч т о в се п о л ь з о в а те л и м о гу т в ы п о л н и т ь ч т е н и е к а та л о га ,

в к о то р о м он н а х о д и тся .

И сти на или ло ж ь: то л ь к о су п е р п о л ь зо в а те л ь м о ж е т и сп о л ь зо в а ть ком анд у ch m od.

И сти на или ло ж ь: то л ь к о су п е р п о л ь зо в а те л ь м о ж е т и зм е н и ть в л а д е л ь ц а ф айла с пом ощ ью

ком анд ы chow n.

С пом ощ ью какого п арам етра ко м ан д а ch ow n и зм е н я е т вл ад ел ьц а во всем д е р е в е каталогов?

К акая тр е х си м в о л ь н а я си м в о л и ч е ск а я стр о к а п р е д с та в л я е т п р а в а н а ч те н и е и вы п о л н ен и е,

н о н е на зап и сь?

Ка кое си м во л и че ско е п р е д ста в л е н и е в ы м о ж е те п е р е д ать ком ан д е ch m o d , ч то б ы в с е п о л ь з о в а -

тел и п олучи ли д о ступ к ф айлу, при это м н е в л и я я на д р уги е права д о ступ а ?

Вы хотите у ста н о в и ть бит закр еп л ен и я в п ам я ти на су щ е ств у ю щ е м ка та л о ге subdir, не и зм ен я я

его п рав д о ступ а . Чтобы с д е л а т ь э т о , вы в в е д е те к о м ан д у c h m o d _ _ _ _ _ _ _ _ _ _ _ subdir.

Глава 15 Управление сетевыми подключениями

Сеть — важная часть современных компьютерных систем. К счастью, большинство дистрибутивов операционной системы Linux могут автоматически создавать сете­ вые соединения. Однако иногда этот процесс не работает — тогда вам потребуется настроить соединение или выполнить процесс отладки (если возникнут проблемы). В данной главе мы поговорим о настройке сети.

Начнем с описания основных сетевых функций, которые вы должны понимать, чтобы управлять настройкой сети. Затем разберем процесс настройки сетевого под­ ключения. Несколько тестов помогут вам отследить и исправить проблемы. Наконец, мы с вами исследуем темную сторону сети — подозрительных личностей в Интерне­ те, а также рассмотрим способы, как держать их подальше от вашего компьютера.

□ Основные сведения о сетевых функциях.

□ Настройка сетевого подключения.

□ Тестирование сетевого подключения.

□ Защита системы от злоумышленников.

Основные сведения о сетевых функциях

Настройка сети включает в себя множество протоколов и технологий, которые взаимодействуют между собой разными способами. Хотя современные сети и опе­ рационные системы позволяют пользователям легко настраивать свои компьюте­ ры (по крайней мере по сравнению с тем, что было 10 или 20 лет назад), тем не

338 Глава 15. Управление сетевыми подключениями

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

□ DNS. Domain Name System (система доменных имен) — представляет собой глобальную сеть серверов, кото­ рые осуществляют преобразование между именами хостов и IP-адресами (их описание представлено да­ лее). Большинство компьютеров настраивается на использование DNS-сервера, выполняющего DNS- запросы.

Существуют другие способы разре­

ш ения им ени, но они непрактичны

при обработке м ногих десятков

ком пью теров.

□ DHCP. Dynamic Host Configuration Protocol (протокол динамической конфигу­ рации сетевого узла) — способ для большинства компьютеров в сети получить информацию о конфигурации другого компьютера (DHCP-сервера). DHCP дает возможность с легкостью выполнить настройку сети. Более детально это опи­ сано в подразделе «Принятие решения об использовании DHCP» следующего раздела.

□ Ethernet. Это проводное сетевое оборудование, ис­ пользуемое на сегодняшний день наиболее часто. Су­ ществует несколько разновидностей локальных сетей, в самых распространенных используются кабели, по­ хожие на телефонные провода, но с более широкими контактными штекерами. Стандартная скорость ва­ рьируется от 10 мегабит в секунду (Мбит/с) до 10 ги­ габит в секунду (Гбит/с, или гигабитный Ethernet), хотя доступны и более высокие скорости.

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

□ Имя хоста. Это имя, используемое компьютером для повышения эффектив­ ности работы пользователя. Имена хостов состоят из компьютерной и сетевой частей. Например, в lunokhod.luna.edu имя компьютера — lunokhod, а имя сети — luna.edu.

□ Интернет. Интернетом называют охватывающую весь земной шар сеть взаи­ мосвязанных компьютеров, которые для обмена используют стандартный ин­ тернет-набор протоколов (T C P/IP). Отдельные локальные сети для подключе­ ния к ним и Интернету используют маршрутизаторы.

□ IP-адрес. Адрес интернет-протокола (IP) — это номер, который присваивается компьютеру в сетевой адресации. Можно представить, что IP-адрес — это адрес с указанием улицы и номера дома или номер телефона. В прошлом преоблада­ ли 4-битные ІРѵ4-адреса (такие как 192.168.1.10), однако пул ІРѵ4-адресов исчерпал себя, поэтому многие новые устройства сегодня используют 16-битные ІРѵб-адреса (такие как fe80:0000:0223:15ff:fea6:lbdc). IP -адреса разбиваются на

Основные сведения о сетевых функциях ЭЗѲ

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

□ Маска сети. Маска сети (маска, или сетевая маска) — это способ, позволяющий разделять сетевую и компьютерную части IP -адреса. Сетевая маска определяет отдельные биты IP -адреса, которые принадлежат каждой части адреса. Это можно сделать с помощью присвоения каждому биту физического адреса дво­ ичного значения, равного 1, и выражения результата в виде числа (такого как 255.255.255.0.0 или 255.255.255.0) для ІРѵ4-адреса или путем указания количе­ ства битов в компьютерной части адреса (16 или 24).

□ Маршрутизатор. Маршрутизатор (также известен как шлюз или роутер) соеди­ няет две или несколько сетей. Ваш настольный компьютер или сервер, вероят­ нее всего, будет подключаться напрямую к группе других компьютеров с по­ мощью маршрутизатора. Маршрутизатор связывается с другой сетью, которая, в свою очередь, связывается еще с одной сетью и т. д. Чтобы связаться с ком­ пьютером в другой сети, ваш компьютер связывается с другими компьютерами с помощью маршрутизатора. Домашние компьютеры и компьютеры, применя­ емые для малого бизнеса, часто используют небольшие широкополосные марш­ рутизаторы для подключения к Интернету. Такие устройства выполняют маршрутизацию и имеют встроенные DNS, DHCP и другие полезные серверы.

□ TC P/IP. Transmission Control Protocol/Intemet Protocol (TCP/IP) (протокол управления передачей данных/ межсетевой протокол) — это набор стандартов, ко­ торые лежат в основе большинства современных сетевых коммуникаций на программном уровне.

Существует несколько альтернатив

TCP/IP, наприм ер AppleTalk, NetBEUI

и IPX/SPX. TCP/IP—

наиболее рас­

пространенны й сетевой протокол,

л еж ащ ий в осно ве Интернета.

□ W i-Fi. Этим термином обозначают наиболее рас­ пространенные формы беспроводной связи, более известной как IEEE 802.11. Доступны несколько вариантов, которые отличают­ ся скоростью. Более детальное описание Wi-Fi см. в подразделе «Создание Wi-Fi-подключения» следующего раздела.

В процессе создания сетевого подключения вы назначаете компьютеру ІР-адрес и маску подсети. Используя IP -адрес, компьютер может общаться с другими ком­ пьютерами в локальной сети, не требуя маршрутизатора в качестве посредника. В большинстве случаев вам понадобится сообщить компьютеру о сетевом марш­ рутизаторе, чтобы он мог связаться с компьютерами в других сетевых сегментах (часто включая весь Интернет). Присваивание вашему компьютеру ІР-адреса DNS-сервера позволит указать имена хостов, а не IP -адреса, что является весьма

340 Глава 15. Управление сетевыми подключениями

актуальной функцией. Таким образом, IP -адрес, маску подсети, IP-адрес маршру­ тизатора и ІР-адрес DNS-сервера можно назвать основными функциями конфигу­ рации сети.

Во многих случаях DHCP может управлять четырьмя этими функциями. Это может сделать конфигурацию сети относительно автоматической, как вы увидите вэтой главе. Если ваша сеть не поддерживает DHCP, необходимо связаться с вашим системным администратором для получения информации о конфигурации. В не­ которых случаях понадобится еще больше данных, например, если вы используете Wi-Fi, вам нужно знать имя W i-Fi-сети и ее пароль.

Настройка сетевого подключения В большинстве случаев подключение к сети происходит автоматически. Иногда придется выполнять настройку вручную или активизировать ее. Автоматическая настройка осуществляется через DHCP, поэтому мы начнем с более детального ее описания. Затем рассмотрим вопросы, касающиеся только некоторых систем (на­ стройка Wi-Fi). Если вы планируете использовать Wi-Fi, его необходимо настроить прежде, чем другие параметры сети. Как только Wi-Fi настроен, остальная про­ цедура настройки сети напоминает настройку для проводных сетей.

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

П ри няти е р е ш е н и я об и с п о л ь зо в а н и и DHCP

Как отмечалось ранее, компьютер требует как минимум двух элементов для под­ ключения к обычной сети: IP -адрес и маску сети. IP -адреса для маршрутизатора и DNS-сервер необходимы для большинства сетей, хотя в некоторых случаях можно обойтись либо без одного из них, либо без обоих. Некоторые сети требуют дополнительного описания конфигурации.

Настройка каждого компьютера в большой сети мо­ жет отнять много времени. Хуже того — может привести к проблемам, спровоцированным ошибками (например, из-за опечатки в IP -адресах). Поэтому большинство сетей обеспечивают наличие D H C P-сервера, который сможет предоставить нужную информацию другим компьютерам.

DHCP м ож ет передать инф ормацию

д аж е тем ком пью терам , которые не

им ею т IP-адреса, используя способы

адресации более низкого уровня.

Настройка сетевого подключения 341

В зависимости от конфигурации сервера DHCP можно использовать для полу­

чения IP -адреса двумя способами:

□ фиксированным способом — каждый раз при загрузке компьютер получает один

и тот же ІР-адрес;

□ динамическим — один компьютер может получать разные IP-адреса при разных

сеансах работы.

Какой именно способ будет использоваться, зависит от системного администра­ тора. У вас нет необходимости заниматься этим, хотя вы должны знать: нет гаран­ тии, что компьютер, который настроен через DHCP, будет получать один и тот же IP -адрес при каждой загрузке. Это может иметь свои последствия, например, про­ ще и надежнее всего настраивать сервер, если он имеет фиксированный ІР-адрес.

Таким образом, настройка серверов осуществляется без использования DHCP, даже если рабочие станции в одной сети используют DHCP. Хотя это не всегда так, DHCP может присвоить фиксированный адрес некото­ рым или всем компьютерам, поэтому таким образом администратор D H C P-сервера может настраивать сете­ вые серверы.

Если вы настраиваете с п ом ощ ью

ш ирокополосного м арш рутизатора

д ом аш ню ю сеть или сеть неболь­

ш ого офиса, м арш рутизатор почти

наверняка будет вклю чать в себя

DHCP-сервер, которы й вы м ожете

использовать. Для более подробно­

На практике (кроме случаев, когда вы настраиваете свою личную небольшую сеть) вы должны проконсуль­ тироваться с системным администратором, нужно ли использовать DHCP для нового компьютера или нет. Если ответ «нет», вам следует узнать ІР-адрес, маску сети, ІР-адрес маршрутиза­ тора и адрес сервера DNS.

го ознаком ления обратитесь к его

докум ентации.

С озд ание W i-F i-п о д к л ю ч е н и я

Wi-Fi чаще всего используется на ноутбуках и небольших портативных компью­ терах (для настольного компьютера тоже подойдет). Прежде чем продолжить настройку, убедитесь, что у вас есть доступ к W i-Fi-сети. Если вы настраиваете компьютер для подключения к широкополосному маршрутизатору, обратитесь к его документации, чтобы узнать важную информацию, например идентифи­ катор набора служб, или SSID (имя сети Wi-Fi, кото­ рое может отличаться от имени сети T C P /IP ), и ис­ пользуемый пароль. Если вы пытаетесь подключиться к корпоративной или общедоступной сети, то для полу­ чения этой информации обратитесь к сетевому адми­ нистратору.

значна подклю чению E them et-

кабеля в Ethernet-порт.

Процедура, описанная здесь, равно­

342 Глава 15. Управление сетевыми подключениями

Самый простой метод настройки W i-Fi-подключения — использовать ГПИ- утилиты. В зависимости от дистрибутива детали подключения Wi-Fi могут раз­ личаться. В качестве примера рассмотрим решение задачи в ОС Fedora.

  1. Откройте инструмент Параметры (System Settings), нажав кнопку в виде тре­ угольника, направленного вниз, в правом верхнем углу экрана и нажав кнопку в виде скрещенных инструментов или же введя gnom e-control-center в командной строке.

Если вы не видите п ун к т Wi-Fi

  1. Щелкните на элементе Сеть (Network) в разделе Обо­ рудование (Hardware) окна Параметры (System Set­ tings) (рис. 15.1).

  2. Выберите пункт Wi-Fi в левой части окна Сеть (Net­

в левой части окна Сеть (N etw ork),

возм ож но, не установлен драйвер

беспроводного оборудования.

См. врезку «Получение драйве­

ров W i-Fi».

work).

  1. Выберите свою сеть из списка. Если сеть требует проверки подлинности, появит­

ся диалоговое окно, похожее на показанное на рис. 15.2.

Рис. 15.1. Вы можете настроить параметры в разделе Сеть (Network) окна Параметры (System Settings)

  1. Введите пароль своей сети в поле Пароль (Password) и нажмите кнопку Соеди­

няться (Connect).

Настройка сетевого подключения 343

Рис. 15.2. Если Wi-Fi-сеть требует проверки подлинности, вы должны ввести пароль, прежде чем сможете начать использовать ее

Теперь в окне Сеть (Network) (см. рис. 15.1) должно быть указано, что рабочая станция подключена к выбранной сети. Нажмите кнопку в виде шестеренки рядом с именем сети Wi-Fi, чтобы посмотреть IP-адрес, маршрут по умолчанию и ІР-адрес DNS-сервера, присвоенный вашей системе. Теперь компьютер полностью настроен для сетевого доступа — служебная программа автоматически выполнила задачи, которые далее описаны в разделе «Настройка сети с помощью графического интер­ фейса». Если этого не произошло, вам придется выполнить дополнительные шаги, например вручную настроить IP-адрес. Возможно, Wi-Fi-подключение выполнить не удалось из-за ввода неправильного пароля или перегрузки точки доступа.

БЕЗОПАСНОСТЬ СЕТИ WI-FI ______________________________________________

Поскольку Wi-Fi-данные передаются с помощью радиоволн, не составляет труда перехва­ тить их. Иногда человек, сидящий в машине возле здания, может получить доступ к сети Wi-Fi, а это чревато возникновением проблем:

• злоумышленник может получить доступ к конфиденциальным данным (номера кре­

дитных карт и др.);

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

344 Глава 15. Управление сетевыми подключениями

• злоумышленник может использовать ваш компьютер для атаки других компьютеров или для осуществления незаконной деятельности (пиратское копирование фильмов, музыки или программного обеспечения). Это не только съедает ваш трафик, но и ста­ вит вас под подозрение!

Поэтому необходимо защищать л ю б у ю сеть, которой вы управляете. Доступны три уровня безопасности (четыре, если учитывать отсутствие безопасности):

• W E P Wired Equivalent Privacy (протокол защиты данных W E P ) — слабый протокол шифрования. Способы взлома сети, где выполняется W E P -шифрование, хорошо из­ вестны, что делает данный метод безопасности практически бесполезным;

• W P A Wi-Fi Protected Access (защищенный доступ Wi-Fi W P A ) обеспечивает улуч­ шенные шифрование и инструменты проверки подлинности по сравнению с W E P ;

■ W P A 2 (пришел на смену W P A ) обеспечивает более высокий уровень шифрования

и способ проверки подлинности.

Доступно несколько вариантов каждого способа шифрования. Например, W P A и W P A 2 предоставляют как личные, так и корпоративные параметры, причем последние требуют более сложной настройки на выделенном сервере идентификации. Как правило, вы за­ даете способ шифрования в широкополосном маршрутизаторе или беспроводной точке доступа (WAP). После этого клиенты следят за процессом шифрования и выполняют соответствующие операции, например выводят запрос на указание пароля, как показано на рис. 15.2.

Публичные точки доступа Wi-Fi могут не использовать ни один из этих протоколов, то есть быть незащищенными. В таком случае вы рискуете: любые данные, которые вы от­ правите или получите, могут перехватываться другими пользователями.

Описанный выше способ установки Wi-Fi-подключения — самый простой. Если вам нужно выполнить точную настройку подключения, вы можете использовать различные инструменты для проверки и управления W i-Fi-соединением. Ниже представлены два наиболее важных инструмента:

iw lis t . Эта команда позволяет обнаружить ближай­ шие W i-Fi-сети. Введите i w l i s t scan или i w l i s t scanning as ro o t, чтобы получить список ближай­ ших сетей. Эта команда позволяет получить боль­ шое количество технической информации. Если вас интересуют сетевые имена, которые отображаются в результатах после строки ESSID, используйте ко­ манду i w l i s t scan I grep ESSID, которая сократит вывод.

Вы можете использовать команду

iw lis t scan, чтобы найти публичные

Wi-Fi-сети в кафе или гостинице,

а затем вы пол нить ком анду iw config

для подклю чения к сети, которую

обнаруж или.

□ iwconfig. Эта служебная программа подключает/отключает компьютер от кон­ кретных сетей. Она использует множество параметров, и вам понадобится

Настройка сетевого подключения 345

изучить ее страницу man, чтобы разобраться в данной программе полностью. В большинстве случаев, введя что-то подобное, вы получите следующий ре­ зультат:

iw co n fig wlan0 essid NoWires channel 1 mode Managed key s:NlmP7mHNw

В этом примере показано подключение к сети NoWires, которая запущена на

канапе 1; используется пароль NlmP7mHNw.

ПОЛУЧЕНИЕ WI-FI-ДРАЙВЕРОВ—————————————————————————————

К сожалению, в Linux предустановлено мало драйверов для Wi-Fi-оборудования. Если ваше Wi-Fi-оборудование не обнаружено в системе, выполните поиск подходящих драй­ веров, например, с по мощью инструмента lspc (описан в главе 5). Введите эту команду без параметров, чтобы увидеть список доступного оборудования, и найдите в нем бес­ проводной сетевой адаптер. Например, результаты выполнения команды на ноутбуке одного из авторов lspci включают следующую строку:

03:00.0 Network controller: Realtek Semiconductor Со., Ltd.m RTL8191SEvB Wireless L A N Controller (rev 10)

Эта строка содержит название Wi-Fi-адаптера — Realtek RTL8191 SEvB. Поиск на сайте Realtek позволяет найти драйвер, однако данный драйвер должен быть скомпилирован локально (эта тема выходит за рамки данной книги). Причем совсем не обязательно, что вы найдете драйвер, если будете искать его таким способом.

Альтернатива использования родных Linux-драйверов — использование Wi nd ow s- драйверов с по м о щ ь ю пакета ndiswrapper (ndiswrapper.sourceforge.net), который по­ зволяет установить Windows Wi-Fi-драйверы в системе Linux. К сожалению, не все дистрибутивы предоставляют ndiswrapper в стандартных пакетах, но обычно вы мо­ жете найти бинарный пакет в дополнительном репозитории.

Если все остальные варианты не сработают, придется купить новое сетевое оборудова­ ние. U S B Wi-Fi-адаптеров представлено немало, но вы должны изучить их, чтобы оты­ скать тот, который обладает хорошей поддержкой Linux. В ы также можете заменить встроенные адаптеры на некоторых ноутбуках.

Н астройка се ти с п о м о щ ью гр а ф и ч е ско го ин те р ф е й са

Если вы настроили доступ к W i-Fi-сети, но она все еще не получила IP -адреса или если вам необходимо настроить проводное подключение к сети, пора настроить сетевые параметры протокола T C P/IP. Вы можете сделать это с помощью ТПИ- инструментов(см. раздел «Инструменты текстового пользовательского интерфей­ са») или ГПИ-инструментов. Последний вариант удобнее для новых пользователей,

346 Глава 15. Управление сетевыми подключениями

но ГПИ-инструменты различаются в зависимости от дистрибутива. В качестве примера приведем процедуру настройки в ОС Fedora с помощью графического интерфейса.

  1. Откройте инструмент Параметры (System Settings), щелкнув кнопкой мыши на кнопке в виде треугольника, направленного вниз, в правом верхнем углу экрана и нажав кнопку в виде скрещенных инструментов или же введя gnome-control- center в командной строке.

  2. Щелкните кнопкой мыши на элементе Сеть (Network) в разделе Оборудование

(Hardware) окна Параметры (System Settings).

  1. Выберите сетевое устройство из списка в левой части окна. Результат должен напоминать рис. 15.3 (однако этот рисунок показывает корректно настроен­ ную сеть, не имеющую очевидных проблем). Если сетевое подключение не работает, вы увидите надпись Отключено (Disconnected) (а не Подключено (Connected)).

  2. Чтобы настроить сетевые параметры проводного подключения, нажмите кноп­ ку в виде шестеренки в правом нижнем углу окна. Чтобы настроить W i-Fi- подключение, нажмите кнопку в виде шестеренки рядом с именем W i-Fi-сети, к которой вы пытаетесь подключиться.

  3. Выберите пункт IPv4 или IPv6 в левой части окна (в зависимости от того, какой протокол использует­ ся в вашей сети — IPv4 или IPv6). Результат должен быть похож на рис. 15.4, на котором изображена ча­ стично выполненная настройка протокола IPv4.

Вы можете настроить компьютер

для работы как с протоколом IPv4,

так и с IPv6. Чтобы сделать зто

вручную , у вас дояжмы бы г ь адреса

IPv4 и IPv6.

  1. Выберите способ подключения, используя раскры­ вающийся список Адреса (Addresses). Наиболее рас­ пространенными являются параметры Автоматический (DHCP) (Automatic (D H C P)) и Вручную (Manual), но бывают доступны и другие. Вы можете от­ ключить сетевое подключение, установив переключатель в правом верхнем углу окна в неактивное положение.

  2. Если вы используете DHCP, вы по-прежнему можете вручную ввести адреса

DNS-сервера и маршрутизатора.

  1. Чтобы выполнить настройку вручную, выберите пункт Вручную (Manual) и в по­ явившихся полях введите необходимые данные. Нужно указать IP -адрес, маску сети и адрес маршрутизатора. Нажав кнопку Добавить (Add), вы сможете до­ бавить еще одну группу полей.

  2. Когда закончите вносить изменения, нажмите кнопку Применить (Apply).

Настройка сетевого подключения 347

Рис. 15.3. Сетевые подключения, как правило, устанавливаются автоматически, но иногда этого не происходит

Рис. 15.4. Вы можете настроить основные функции TCP/IP, нажав кнопку в виде шестеренки в окне Сеть (Network)

Если настройка прошла успешно, окно Сеть (Network) изменится и отобразит IP -адрес, маску подсети, маршрут по умолчанию, а также адрес DNS-сервера (не­ которые сети не используют определенные параметры).

348 Глава 15. Управление сетевыми подключениями

И н стр ум е н ты те к с то в о го п о л ьзо в а те л ь ско го и н те р ф е й са

Хотя инструменты настройки сети с графическим интерфейсом просты в исполь­ зовании и надежно работают большую часть времени, иногда приходится применять более универсальный набор ТПИ-инструментов.

□ i f conf i g. Эта программа активизирует и отключает сетевое подключение путем

связывания IP-адреса и маски сети с сетевым оборудованием.

□ route. Данная программа настраивает таблицу маршрутизации компьютера, которая определяет, через какое сетевое устройство передаются конкретные сетевые пакеты.

□ /etc /re so lv .c o n f. Этот файл содержит ІР-адреса DNS-серверов (не более трех), а также имена домена компьютера и других доменов, поиск которых следует выполнить, когда используется имя домена, отличное от хоста.

□ DHCP-клиент. D H CP-клиент, например d h c lie n t или dhcpcd, позволяет выполнять автоматическую настройку сетевого подключения. Вы просто вводи­ те имя программы, за которым следует имя сетевого устройства.

Специфические сетевые сценарии i f conf ig, route

Не путайте програм м у dhcpcd,

являющ уюся DHCP-клиентом, с dhcpd, которая представляет собой

DHCP-сервер.

и программы D H C P-клиента становятся причиной временных изменений сетевой конфигурации компьютера. Если вы хотите внести постоянные изменения, надо сохранить свои настройки в файле конфигурации. Имя и формат этого файла от­ личаются в зависимости от дистрибутива. Например, в Fedora — это etc/sysconf ig / n etw o rk -scrip t/if cfg-netname, где netname — это имя сетевого устройства; в Debian или Ubuntu — это /etc/n etw o rk /in terfaces.

Обе команды, i f config и route, сложны; однако их основное применение вполне очевидно. Предположим, вы хотите присвоить ІР-адрес 192.168.29.39/24 сетевому устройству eth0 и инструктируете его использовать 192.168.29.1 в качестве адреса маршрутизатора. Эти команды выдадут следующий результат:

#

i f c o n f i g e t h 0 u p 1 9 2 . 1 6 8 . 2 9 . 3 9 n e t m a s k 2 5 5 . 2 5 5 . 2 5 5 . 0

#

r o u t e a d d d e f a u l t g w 1 9 2 . 1 6 8 . 2 9 . 1

Вы можете прервать подключение, указав слово down вместо up в команде ifconfig; удалить маршруты, используя слово del вместо add в команде route и т. д. Д ля подробной информации ознакомьтесь с man-страницами этих про­ грамм.

Настройка сетевого подключения 349

Если ваша сеть использует DHCP, вы можете ввести сетевое имя d h client или сетевое имя dhcpcd, чтобы за­ грузить имя сетевого интерфейса и настроить его с по­ мощью DHCP. Ручной ввод этой команды — удобное решение, когда вы пытаетесь выполнить отладку сетевых проблем, имеющих отношение к DHCP, если D H C P- конфигурация сети изменилась и временно нарушила связь некоторых компьютеров.

Одни дистрибутивы используют

dhclient по ум олчанию , другие —

dhcpcd. Если вы не знаете, какой

выбрать, попробуйте оба.

ИМЕНА СЕТЕВЫХ УСТРОЙСТВ————————————————————————————– Традиционно Linux присваивал первому Ethernet-устройству имя ethO, а последующим устройствам — eth 1 и т. д. Точно так же Wi-Fi-устройства получили имена типа wlanO и т. д. Однако в Fedora мы отклоняемся от данной схемы. Поэтому труднее предугадать имена Ethernet-устройств в зависимости от компьютера. Цель состоит в том, чтобы имена устройств и сама сеть оставались более стабильными между перезагрузками на компью­ терах с несколькими сетевыми интерфейсами. Такими системами часто являются марш­ рутизаторы или серверы с большим количеством сетевых соединений, и они, как правило, требуют определенной конфигурации в конкретных интерфейсах. Если имя устройства изменяется после каждой загрузки (это может происходить, если порядок обнаружения сетевых карт меняется после каждой загрузки), могут возникнуть проблемы.

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

enplsO: flags -4163 mtu 1500 inet 192.168.1.97 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::le75:8ff:fe74:f4bb prefixlen 64 scopeid 0x20 ether lc:75:08:74:f4:bb txqueuelen 1000 (Ethernet) RX packets 1476bytes 1 21361 (118.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 133 bytes 14306 (13.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

В этом примере enplsO — имя устройства, оно начинает данный блок информации. Веро­ ятнее всего, вы также увидите имя Іо в результатах выполнения команды ifconfig, которое относится к loopback-устройству, используемому для определенных процедур локально­ го доступа. Вы можете игнорировать его, если хотите узнать имя устройства вашего сете­ вого оборудования.

Если вы настраиваете сетевые параметры вручную, следует указать имя своего DNS- сервера и имя вашей сети в файле /e tc / resol v. conf. Пример приведен в листинге 15.1.

350 Глава 15. Управление сетевыми подключениями

Листинг 1 5 . 1 . П р и м е р ф ай л а к о н ф и гу р а ц и и /e tc /re s o lv .c o n f

domain luna.edu search example.com example.org nameserver 1 9 2 . 1 6 8 . 1 . 2 nameserver 1 0 . 7 8 . 1 0 2 . 1 nameserver 1 0 . 7 8 . 2 2 1 . 1

Три ключевых слова определяют функции разреше­

ния DNS в файле /e tc /re so lv .c o n f.

□ domain. В этой строке вы определяете имя домена вашего компьютера по умолчанию. Первичный эф ­ фект заключается в том, что компьютер выполняет поиск имен хостов без доменных имен в этом домене. Например, как показано в листинге 15.1, если вы укажете имя хоста lunokhod, компьютер найдет ІР- адресlunokhod.luna.edu.

Файл /etc/resolv.conf поддерживает

дополнительны е клю чевы е слова,

но они используются редко. Для

получения более детальной инфор­

м ации обратитесь к соответствую­

щей m an-странице.

□ search. Компьютер может выполнить в дополнительных доменах поиск имен хостов, указанных в строке search с доменами, разделенными пробелами или символами табуляции. Вы можете указать до шести доменов. Однако следует помнить, что добавление доменов в путь поиска, скорее всего, замедлит поиск имени хоста.

□ nameserver. Это ключевое слово определяет компьютеры с DNS-сервером по IP-адресу. Вы можете указать несколько серверов, используя не более трех строк nameserver.

Если вы хотите вручную определить имена хостов (например, хосты в вашей локальной сети), это необходимо делать в файле /e tc /h o s ts. Имена хостов будут разрешены быстрее, чем при использовании DNS.

Если вы хотите вручную настроить постоянную конфигурацию сети, можете сделать это путем редактирования сетевого файла конфигурации, например /e tc / sysconf ig/netw ork-scripts/ifcfg-netnam e в системе Fedora. В листинге 15.2 при­ веден пример такого файла.

Л и с т и н г 1 5 .2 . Пример файла конфигурации сети

DEVICE=“eml”

B O O T P R O T O = " s t a t i c "

I P A D D R - 1 9 2 . 1 6 8 . 2 9 . 3 9

N E T M A S K = 2 5 5 . 2 5 5 . 2 5 5 . 0

N E T W 0 R K = 1 9 2 . 1 6 8 . 2 9 . 0

B R O A D C A S T = 1 9 2 . 1 6 8 . 2 9 . 2 5 5

G A T E W A Y = 1 9 2 . 1 6 8 . 2 9 . 1

Настройка сетевого подключения 351

ONBOOT=yes NM_CONTROLLED=“yes” HWADDR=00:26:6C :36:C 8 :58 TYPE=Ethernet DEFROUTE=yes PEERDNS=yes

PEERROUTES=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no

NAME=“System emi” UUID=ldad842d-1912-ef5a-a43a-bc238fb267e7

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

□ Если вы хотите использовать DHCP, измените строку B00TPR0T0 так, чтобы можно было прочитать BOOTPROTO=“dhcp” вместо BOOTPROTO=“static”, и удали­ те строки из IPADDR через GATEWAY.

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

П ринудительный запуск пользова­

телям и своих сетевых подклю чений

м ож ет ограничить прим енение

ком пью тером сетевых ресурсов, н а­

прим ер IP-адресов, если ваш а сеть

□ Параметры NETWORK и BROADCAST происходят от I Р-адреса (IPADDR) и маски сети (NETMASK). Адрес NETWORK — это сетевая часть IP-адреса, но с бинарными значениями О, заменяющими отвечающую за хост часть IP-адреса. Адрес BROADCAST похож на пре­ дыдущий, но он заменяет бинарные значения 1 в отвечающей за хост части адреса.

использует DHCP.

Если у вас запущена операционная система Debian, Ubuntu или какой-либо иной дистрибутив, использующий другой файл конфигурации сети, вам необхо­ димо найти этот файл и изменить его. Содержимое мо­ жет отличаться от файла, показанного в листинге 15.2, хотя данные, которые вы должны изменить, как прави­ ло, достаточно очевидны. Если возникают сомнения, обратитесь к сопроводительной документации по дис­ трибутиву.

к универсальной команде ір. С ее

Некоторые дистрибутивы Linux

пом ощ ью вы можете отображать

IP-инф орм ацию (используя Ip addr

переходят от ком анд ifconfig и route

Команды i fup и ifdown активизируют/дезактиви- зируют сетевое подключение на основании настроек

show ) и инф орм ацию м арш рутиза­

тора (используя ip route show ).

352 Глава 15. Управление сетевыми подключениями

в вашем файле конфигурации. Таким образом, после изменения этих настроек вы введете сетевое имя ifdown, а следом сетевое имя i f up. В результате получите сетевое соединение с новыми параметрами. Однако помните, что данная проце­ дура может отключить сетевых клиентов и серверы.

Тестирование сетевого подключения В большинстве случаев ваше сетевое подключение будет работать без перебоев с момента запуска. Временами может понадобиться выполнить проверку на на­ личие проблем (либо потому, что подключение не может начать работу, либо по­ тому, что ранее работающее подключение перестало работать). На следующих страницах мы опишем несколько сетевых тестов: проверку таблицы маршрутизации, тестирование возможности подключения, определение места прерывания подклю­ чения, тестирование работы DNS и тестирование состояния сети.

П роверка та б л и ц ы м а р ш р у ти з а ц и и

Ранее мы описывали, как использовать команду route для установки на компью­ тере маршрута по умолчанию. Вы можете проверить, является ли ваш маршрут оптимальным, с помощью той же команды. В большинстве случаев ввод одной команды route даст необходимый эффект.

$ route Kernel IP routing table Destination Gateway 1 9 2 .1 6 8 .2 9 .0 * 1 2 7 . 0 . 0 . 0

Genmask

2 5 5 .2 5 5 .2 5 5 .0

2 5 5 . 0 . 0 . 0

d e f a u l t

1 9 2 .1 6 8 .2 9 .1

0 . 0 . 0 . 0

UG

0

Как видно из листинга, данные, предназначенные для 192.168.29.0 (то есть для любого компьютера с ІР-адресом между 192.168.29.1 и 192.168.29.254), идут напрямую через eth0. Сеть 127.0.0.0 — это особый интерфейс, кото­ рый «возвращает к началу цикла» на исходный компью­ тер. Linux использует его для некоторых внутренних сетевых потребностей. Последняя строка отображает маршрут по умолчанию для данных, не соответствующих каким-либо иным введенным данным в таблице марш­ рутизации. Эта строка определяет систему шлюзов маршрута по умолчанию как 192.168.29.1. Если она от-

0

Flags Metric Ref Use Iface и и

Ѳ 0 Ѳ Ѳ Іо Ѳ Ѳ e th 0

e th 0

0

Таблица м арш рутизации типичной

рабочей станции или даж е сервера

д овол ьно проста и м ож ет настраи­

ваться автом атически. Тем не менее

сетевые м арш рутизаторы часто

требуют н аличия слож ны х таблиц

м арш рутизации.

Тестирование сетевого подключения 353

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

Т естиро ва ни е в о з м о ж н о сти п о д кл ю че н и я

Самым основным сетевым тестом является ping, отправляющий сетевой пакет системе, которую в ы указываете (с помощью IP-адреса или имени хоста), и ожи­ дающий ответа. В Linux ping продолжает отправку пакетов примерно каждую се­ кунду, пока вы не прервете эту процедуру с помощью сочетания клавиш Ctrl+C. Вы можете указать ограниченное количество тестов с помощью параметра -с чис­ ло. Ниже представлен пример результатов выполнения команды.

$ ping -с 4 nessus

PING n e s s u s .e x a m p le .c o m ( 1 9 2 . 1 6 8 . 1 . 2 ) 5 6 (8 4 ) b y te s o f d a t a .

64 b y te s fro m n e s s u s .e x a m p le .c o m ( 1 9 2 . 1 6 8 . 1 . 2 ) :

ic m p _ re q =1

t t l =64m tim e

= 0 .6 0 7 ms

6 4 b y te s fro m n e s s u s .e x a m p le .c o m ( 1 9 2 . 1 6 8 . 1 . 2 ) :

ic m p _ re q =2 t t l

=64m tim e

= 0 .1 4 7 ms

64 b y te s fro m n e s s u s .e x a m p le .c o m ( 1 9 2 . 1 6 8 . 1 . 2 ) :

ic m p _ re q =3 t t l

=64m tim e

= 0 .1 4 5 ms

64 b y te s fro m n e s s u s .e x a m p le .c o m ( 1 9 2 . 1 6 8 . 1 . 2 ) :

ic m p _ re q =4 t t l

=64m tim e

= 0 .2 8 3 ms

Эта команда отправила четыре пакета и ожидала их возвращения, что произо­ шло довольно быстро (в среднем за 0,295 мс), потому что целевая система нахо­ дилась в локальной сети. Приведем несколько обычных проблемных ситуаций с сетью:

□ если вы можете пинговать локальные системы, но не можете делать это с уда­ ленными системами, вероятнее всего, проблема в маршрутизаторе или в оши­ бочных спецификациях маршрутизатора;

□ если вы можете пинговать по IP -адресу, но не можете делать этого по имени,

проблема, вероятнее всего, с DNS-сервером или конфигурацией DNS;

□ если вы вообще не можете пинговать даже по IP -адресу, возможно, основная

проблема заключается в настройке сети.

П оиск р а з р ы в о в при п о д кл ю ч е н и и

Следующий шаг после ping — команда t r a c e r o u t e , которая отправляет по три те­ стовых пакета на каждый компьютер между вашей системой и указанной целевой

354 Глава 15. Управление сетевыми подключениями

системой. В листинге 15.3 приведен пример результата выполнения команды tra cero u te.

Листинг 1 5.3. Пример результата выполнения команды traceroute

$ traceroute -n 10.1.0.43

t r a c e r o u t e t o 1 0 . 1 . 0 . 4 3 ( 1 0 . 1 . 0 . 4 3 ) , 30 hops max, 52 b y te p a c k e ts

1

2

3

4

5

6

7

1 9 2 .1 6 8 . 1 .2

1 .0 2 1 ms

3 6 .5 1 9 ms

0 .9 7 1 ms

1 0 .1 0 . 8 8 .1

1 7 .2 5 0 ms

9 .9 5 9 ms

9 .6 3 7 ms

1 0 .9 . 8 .1 7 3

8 .7 9 9 ms

1 9 .5 0 1 ms

1 0 .8 8 4 ms

1 0 .9 . 8 .1 3 3

2 1 .0 5 9 ms

9 .2 3 1 ms

1 0 3 .0 6 8 ms

1 0 . 9 . 1 4 . 9

8 .5 5 4 ms

1 2 .9 8 2 ms

1 0 .0 2 9 ms

1 0 . 1 . 0 . 4 4

1 0 .2 7 3 ms

9 .9 8 7 ms

1 1 .2 1 5 ms

1 0 . 1 . 0 . 4 3

1 6 .3 6 0 ms * 8 .1 0 2 ms

Параметр -n, примененный в этой команде, позволяет отобразить ІР-адреса целевых компьютеров, а не соответствующие имена хостов. Это может немного ускорить процесс, особенно если возникли проблемы с DNS, и позволяет иногда облегчить чтение результатов выполнения команды. Возможно, вы захотите уз­ нать имена проблемных хостов, потому что это поможет определить источник проблемы.

Результаты выполнения команды tracero u te можно диагностировать несколь­

кими способами:

□ как правило, периодичность возрастает с увеличением количества этапов

это нормально. Периодичность может быть различной в результатах выполнения команды. Пример продемонстрирован в листинге 15.3;

□ различная периодичность на одном этапе может указывать, что маршрутизатор перегружен или какая-либо другая периодическая неисправность вызывает изменения в периодичности. Вы можете наблюдать это на примере нескольких этапов в листинге 15.3 (на этапах 1 и 4). Такие неисправности могут привести к переменной производительности, но не должны вызывать превышения лими­ та времени сетевых сеансов, иначе произойдет сбой;

□ иногда ответ на пакет так и не приходит. Это состояние обозначается звездочкой (*) в графе времени, как по­ казано для второго пакета на этапе 7 в листинге 15.3;

□ резкий скачок в периодичности может указывать на большое физическое расстояние между маршрути­ заторами. Не принимая в расчет среднее время, рав­ ное 36,519 мс, на первом этапе листинга 15.3, вы можете наблюдать такой скачок при смене этапа 1 на этап 2. Это указывает насвязь локальной сети с сетью

Некоторые маршрутизаторы бло­

кируют все данные traceroute. Если

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

traceroute не содержат ничего, кро­

ме звездочек после определенной

точки, возможно, вы столкнулись

именно с такой системой.

Тестирование сетевого подключения 355

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

Среди прочего tracero u te — полезная команда для обнаружения проблем с ло­ кальным сетевым подключением. Например, изменения на этапе 1 в листинге 15.3 могут указывать на неполадки в локальной сети, но потерянный пакет, связанный с конечным пунктом назначения, не является локальной проблемой. При проблем­ ном соединении вы можете проверить состояние системы, где возникли неполадки, находящихся рядом систем и сетевого сегмента в целом.

Т естирование DNS

Проблемы с DNS могут привести к тому, что сеть перестанет работать (как будто перерезали кабель). Поскольку и люди, и многие сетевые инструменты полагают­ ся на имена хостов, в том случае, если DNS-сервер перестанет работать, сеть станет практически бесполезной.

Вы можете протестировать DNS-сервер своей сети с помощью различных инструментов, таких как host, dig и nslookup. Они во многом схожи и позволяют выпол­ нять поиск имени хоста путем ввода имени команды, за которым должно следовать имя хоста:

$ h o s t www.sybex.com

w w w .sybex.com has a d d re s s 2 0 8 .2 1 5 .1 7 9 .2 2 0

Данный пример показывает нормальное разрешение имени. Здесь имя хоста напрямую связывается только с одним IP -адресом. В некоторых случаях вы можете получить уведомления о псевдонимах или нескольких IP-адресах. Это нормально, по крайней мере для неко­ торых сайтов. Если команда до лго не отвечает, или пре­ вышен лимит ожидания, или она не может достичь серверов, это значит, что настройки DNS вашего ком­ пьютера неверны.

Вы можете добавить IP-адрес конкретного DNS-сервера, например hostwww .w h i- t e h o u s e . g o v 1 9 2 . 1 6 8 . 3 9 . 7 для тестирования сервера 1 9 2 . 1 6 8 . 3 9 . 7 . Если ваш компьютер настроен на использование нескольких DNS-серверов, вы можете про­ тестировать каждый из них отдельно. Возможно, один из них окажется ненадежным

356 Глава 15. Управление сетевыми подключениями

или будет работать неправильно, в таком случае вы сможете удалить его из своей конфигурации. Однако помните, что, если вы удалите DNS-сервер из файла /e tc / reso lv .co n f на компьютере, настроенном через DHCP, ваши изменения в итоге будут отменены по DHCP. Если эта проблема станет повторяться, вероятно, при­ дется обратиться к системному администратору.

Хотя host — полезный инструмент для выполнения основных запросов имени хоста, служебная программа dig (или же устаревшая nslookup) может выполнять более сложные запросы и выдавать больше информации об имени хоста, домене и IP -адресе. Это делает dig полезным инструментом для улучшенной диагностики сети, но в ущерб простоте использования (для новичка будет довольно сложно интерпретировать результаты выполнения команды dig).

П роверка со с то я н и я се ти

Еще один полезный инструмент диагностики — n e ts ta t. Он словно швейцарский армейский нож среди сетевых инструментов — его можно использовать вместо нескольких других в зависимости от того, какие ему переданы параметры. Он так­ же может выдавать информацию, которую непросто получить другими способами. Приведем примеры.

□ Информация об интерфейсе. Передайте команде n e tsta t параметр -in te rfa c e или -і, чтобы получить информацию о ваших сетевых интерфейсах, похожую на ту, что выдает ifc o n fig . (Некоторые версии n e ts ta t выдают информацию в таком же формате, другие — иначе.)

□ Информация о маршрутизации. Вы можете использовать параметр -ro u te или -г, чтобы отобразить листинг таблицы маршрутизации, похожий на ото­ бражаемый командой route.

□ Информация о подмене. Передайте команде n e tsta t параметр - -masquerade или -М, чтобы получить инфор­ мацию о подключениях Network Address Translation (NAT) системы Linux, часто указываемых под назва­ нием IP-маскарад. NAT позволяет маршрутизатору Linux «спрятать» целую сеть под одним ІР-адресом. Это хороший способ растянуть ограниченный пул ІРѵ4-адресов.

□ Использование программы. Некоторые версии

Небольшие широкополосные марш­

рутизаторы используют NAT. Если

у вас естьтакоеустройство, скорее

всего, нет необходимости настраи­

вать системы вашего настольного

компьютера и ноутбука, чтобы они

делали зто самостоятельно.

n e ts ta t поддерживают параметр -program (или -р), который предоставляет информацию о программах, использующих сетевые подключения. Эта по­ пытка не всегда успешна, но чаще все-таки приносит результат (вы можете увидеть, как программы подключены к сети).

Защита системы от злоумышленников 357

□ Открытые порты. При использовании с другими параметрами или без парамет­ ров net s ta t выдает информацию об открытых портах и системах, к которым они подключаются.

□ Все подключения. Параметр - a l l или -а используется в сочетании с другими. В результате команда n e ts ta t отображает информацию о портах, открываемых серверными программами для прослушивания сетевых подключений в допол­ нение к уже открытым подключениям.

Помните, что n e ts ta t — мощный инструмент; параметры, а также результаты выполнения этой команды различаются в зависимости от дистрибутива Linux. Возможно, вам следует просмотреть его man-страницу и поэкспериментировать с n e tsta t, чтобы узнать, на что способен данный инструмент.

Защита системы от злоумышленников Сетевая безопасность — обширная и сложная тема, мы можем дать лишь пару со­ ветов, как предотвратить атаки на вашу систему.

□ Отключение серверов, которые не используются. Основная угроза безопас­ ности системы Linux — вовсе не черви и вирусы, как в Windows, а риск, что злоумышленники могут проникнуть в ваш компьютер, получив несанкциони­ рованный доступ к серверным программам, которые у вас запущены. Поэтому очень важно, чтобы вы не запускали серверы без необходимости. Некоторые дистрибутивы автоматически устанавливают и запускают серверы, например Secure Shell (SSH), веб-сервер Apache или почтовый сервер Sendmail или Postfix. Наиболее надежный способ отключить сервер — использовать систему установ- ки/удаления пакетов (описана в главе 9), но вы должны подать команду, чтобы удалитъ соответствующий пакет, а не установить его.

□ Активизация межсетевого экрана. Межсетевой экран — это программа или системный параметр, ко­ торый управляет сетевыми операциями, разрешая или запрещая их согласно заданным критериям. Большин­ ство дистрибутивов Linux активизируют межсетевой экран по умолчанию, но вам может понадобиться из­ менить параметры под ваши конкретные требования.

Межсетевые экраны можно

запускать на одном компьютере,

чтобы защитить только его, или на маршрутизаторе, чтобы

защитить всю сеть.

□ Используйте надежные пароли. В главе 13 рассказывается, как выбрать на­ дежный пароль. Если ваш компьютер запускает сервер входа в систему любого

358 Глава 15. Управление сетевыми подключениями

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

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

□ Держите ваше программное обеспечение в актуальном состоянии. В главе 9 описываются инструменты работы с пакетами, которые вы можете использовать, чтобы ваша система оставалась актуальной. Нужно регулярно проверять систе­ му на обновления, поскольку многие обновления исправляют ошибки безопас­ ности (иначе эти проблемы могут открыть доступ посторонним лицам или разрешенным пользователям, желающим получить контроль над компьютером).

ОСНОВЫ И НЕ ТОЛЬКО

С е ть — н е о тъ е м л е м а я ч а с т ь к о м п ь ю те р о в , a L in u x о б е с п е ч и в а е т о тл и ч н ы е с е те в ы е в о з м о ж н о ­

сти . В б о л ь ш и н с тв е с л у ч а е в к о м п ь ю те р о б н а р у ж и т с е ть и в ы п о л н и т н а с т р о й к у а в т о м а ти ч е с к и ,

о д н а к о и н о гд а п р и х о д и тся в р у ч н у ю с о з д а в а т ь д о п о л н и те л ь н у ю к о н ф и гу р а ц и ю и л и ж е м е н я ть

н е к о р р е к т н у ю а в т о м а ти ч е с к у ю н а с т р о й к у . В а м т а к ж е м о ж е т п о н а д о б и т ь с я п р о т е с т и р о в а т ь

се те в ую к о н ф и гу р а ц и ю , ч то б ы о п р е д е л и ть , гд е в о з н и к л а п р о б л е м а — в н а с т р о й к е ІР -а д р е са ,

в к о н ф и гу р а ц и и D N S или гд е -то е щ е . К со ж а л е н и ю , се ти м о ж н о в з л о м а ть , п о это м у в ы д о л ж н ы

с о х р а н я ть б д и те л ь н о с т ь . О б н о в л е н и е п р о гр а м м н о го о б е с п е ч е н и я сп о со б н о з н а ч и т е л ь н о с н и ­

з и т ь э то т р и ск .

Упражнения

В н е б о л ь ш о й ч а стн о й сети, кото рой вы уп р а в л я е те , или под наб лю д е н и ем и н стр ук то р а п ер е н а­

стр о й те ко м п ью тер , и сп о л ьзую щ и й DHCP, ч то б ы он и сп о л ь зо в а л п р и сво ен н ы й IP-а д р е с в ста ти ­

ческом реж и м е. П р о те сти р уй те п од клю чен и е, а зате м п е р е к л ю ч и те сь на DHCP. Н е вы п о л н я й те

это т т е с т в р аб очей или ш ко л ьн о й се ти ; н е п р а в и ль н а я н а стр о й к а IP-а д р е са ком п ью тер а м о ж е т

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

В ы п о л н и те р е зе р в н о е к о п и р о в а н и е ф айла /etc/resolv.conf, а затем о тр е д а к ти р уй те ор и ги н ал,

у к а з а в в стр о к а х nam eserve r ком п ью тер ы , на кото ры х н е зап ущ е н ы D N S-сер вер ы . П ротести руйте

н астр о й ки се ти , п оп ы тай тесь п о л учи ть д оступ к уд ален н ы м се р ве р ам с п о м о щ ью ком анд ы pin g,

Защита системы от злоумышленников 359

б раузера и д р уги х сл уж еб н ы х п р о гр ам м . П онаблю д айте за ош и б кам и , которы е п олучи ли сь в ре­

зультате. К огд а зак о н ч и те работу, во сста н о в и те исход ны й ф айл.

Контрольные вопросы

В ы х о ти те н а с тр о и ть к о м п ь ю те р в л о к а л ь н о й се ти ч е р е з ста ти ч е с к у ю к о н ф и гур а ц и ю TCP/IP,

но о тс у тств у е т ад р е с ш лю за. К акие из п е р е чи сл е н н ы х у тв е р ж д е н и й верн ы ?

A. П о ско л ьку не обход и м а д р е с ш лю за, ни о д н а и з се те в ы х ф ункц и й TCP/IP н е б уд ет р аб отать.

Б.

Се те в ы е ф ункц и и TCP/IP б у д у т р а б о тать, но вы не см о ж е те п р е о б р а зо в ы в а ть и м ен а хо сто в

в IP-а д р е са и н а о б о р о т.

B.

Вы см о ж е те в з а и м о д е й ств о в а ть с к о м п ью те р ам и в св о ем ло к а л ь н о м се те во м се гм ен те, но

не с д р уги м и си сте м а м и .

Г.

К о м п ью те р не см о ж е т у к а з а ть , к а к и е д р у ги е ко м п ь ю те р ы я в л я ю тся л о к а л ь н ы м и , а к а ­ к и е — уд ален ны м и .

Д .

Вы см о ж е те и сп о л ь з о в а ть к о м п ь ю те р в к а ч е с тв е се те в о й се р в е р н о й си сте м ы , а н е как

сетевой клиент.

Какой из след ую щ и х ти п о в и нф ор м ац и и м о ж н о п о л у ч и ть путем ввод а ком анд ы ifc o n fig ethO?

(В ы б е р и те все п од ход ящ и е ва р и а н ты .)

A. И м ена п р о гр а м м , и сп о л ьзую щ и х ethO.

Б.

B.

Г.

IP-ад р ес, п р и св о е н н ы й ethO.

А д рес об о руд о ван и я ethO.

И м я х о ста, св я за н ное с ethO.

Д . Ш лю з, с кото ры м о б щ а е тся ethO.

Служ еб н ая п р о гр а м м а p in g р е а ги р уе т н о р м ал ь н о , когд а вы и сп о л ь зуе те е е с IP -ад р есо м , но не

то гд а, когда вы и сп о л ь зуе те ее с им енем хо ста , ч т о п о л н о сть ю со о тв е тств уе т это м у I P-ад р есу. Что

м о ж е т в ы з в а ть э т у про блем у? (В ы б е р и те все п од ход я щ и е ва р и а н ты .)

A. М а р ш р ут м е ж д у в а ш и м ко м п ью тер о м и е г о D N S-се р в е р о м м о ж е т б ы т ь не п р а в и ль н ы м .

Б.

Ц елевой к о м п ью те р м о ж е т б ы т ь настр о ен та к , ч то б ы и гн о р и р о в а ть п акеты ком анд ы p in g.

B. Н а стр о й к и D N S на целевой с и с те м е м о гу т б ы ть н ар уш ены .

Г.

И м я хо ста в а ш е го ко м п ь ю те р а м о ж е т б ы ть зад ан о неко р р ектн о .

Д . Н астр о й ки D N S в а ш е го ком п ью тер а м о гу т б ы ть н ар уш ен ы .

И сти на или ло ж ь: д л и н а ІР ѵ 4 -а д р е со в р авн а 4 б ай там .

И сти на и ли л о ж ь : файл /etc/resolv.conf оп р ед еляет, и сп о л ь зо в а ть или н е т D H CP в се те во й кон ф и ­ гурац ии .

360 Глава 15. Управление сетевыми подключениями

ОСНОВЫ И НЕ ТОЛЬКО

6 .

И сти на и л и л о ж ь : вы м о ж ете п р о в е р и ть те к ущ е е со сто я н и е та б л и ц ы м а р ш р ути за ц и и п утем ввод а ком анд ы route в окне консоли.

П р о гр а м м а _ _ _ _ _ _ _ _ _ _ _ _ сл у ж и т в к а ч е с тв е м н о го ф ун к ц и о н а л ь н о го се те во го и н стр ум е н та ;

она м о ж е т в ы п о л н я ть м н о ги е ко м ан д ы , н ап р и м ер ifc o n fig , route и д р.

Т р а д и ц и о н н о е н а з в а н и е п е р в о го E th e rn e t-и н те р ф е й с а в Lin u x (н о н е в п о с л е д н и х в е р с и я х

F e d o ra )_ _ _ _ _ _ _ _ _ _ _ _

9

_ _ _ _ _ _ _ _ _ _ _ — это п р о гр ам м а или к о н ф и гур а ц и я си сте м ы , к о то р ая б л о к и р у е т или а к ти в и ­

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

кр и тери ях.

А л ь те р н а ти в а к о м ан д е route для о то б р аж е н и я м а р ш р у то в по ум о л ч а н и ю на н е к о то р ы х д и с ­

тр и б у ти в а х Lin u x

Приложение Ответы на контрольные вопросы

Глава 1

  1. В. Программы с графическим пользовательским интерфейсом (ГПИ) создают меню с помощью библиотеки, разработанной для этих целей; это не является функцией ядра Linux. Таким образом, вариант В — это не функция ядра, поэто­ му он является верным. Ядро выделяет память и процессорное время, а также управляет доступом к диску и сетевому оборудованию, варианты А, Б, Г и Д опи­ сывают функции ядра, поэтому являются неправильными ответами.

  2. А. Система Android используется в смартфонах, планшетных компьютерах и других портативных устройствах небольшого размера. Данная система счи­ тается встроенной ОС, поэтому правильным является вариант A. SUSE, CentOS, Debian и Fedora представляют собой примеры дистрибутивов, предназначенных главным образом для использования на настольных компьютерах, ноутбуках и серверах; они не считаются встроенными ОС, поэтому варианты Б, В, Г и Д не являются правильными.

  3. Б. Графический пользовательский интерфейс системы Linux основан на окон­ ной системе X W indow System. Хотя macOS предусматривает реализацию системы X, ее основным ГПИ является патентованный продукт компании Apple. Таким образом, вариант Б — правильный. Вариант А является некор­ ректным, потому что как Linux, так и macOS позволяют запускать большинство

362 Приложение. Ответы на контрольные вопросы

программ GNU. Вариант В является неправильным, поскольку система Linux может работать как на компьютере Apple Macintosh, так и на недорогих стан­ дартных ПК. Вариант Г является некорректным, потому что macOS включает большое количество служебных программ BSD в стандартной форме. Более того, большинство дистрибутивов Linux использует служебные программы GNU вместо их BSD-аналогов, хотя при желании вы можете использовать в Linux служебные программы BSD. Вариант Д тоже неправильный, посколь­ ку как Linux, так и macOS поддерживают текстовые команды, хотя в macOS сложно использовать эти команды в каких-либо приложениях, кроме про­ граммы-терминала.

  1. Ложь. Ядро Linux задумывалось как проект, целью которого было создание с нуля нового Unix-подобного ядра. Несмотря на определенные сходства, два ядра в значительной степени независимы друг от друга.

  2. Ложь. Программы, известные как терминалы, позволяют вводить текстовые команды после входа в Linux в графическом режиме. Кроме того, вы можете переключаться между несколькими виртуальными терминалами, используя сочетание клавиш Ctrl+Alt+F2.

  3. Истина. Цикл выпуска CentOS составляет приблизительно два года, что до­ вольно долго по стандартам дистрибутивов Linux, некоторые из них имеют цикл выпуска всего шесть месяцев.

  4. login:.

  5. Вирусы.

  6. Альфа-версия и бета-версия.

  7. Плавающим (роллинг-релиз).

Глава 2

  1. В. Понятие «открытый исходный код» указывает на то, что пользователи долж­ ны иметь возможность распространять изменения, но оно не требует, чтобы пользователи распространяли программное обеспечение в соответствии с усло­ виями той же самой лицензии. Таким образом, вариант В не описывает требо­ вания лицензии на ПО с открытым исходным кодом, поэтому этот ответ — пра­ вильный. Варианты А, Б, Г и Д излагают фактические требования лицензии на ПО с открытым исходным кодом.

  2. Б. Некоторые дистрибутивы (в частности, платные версии Enterprise) включа­ ют в себя программное обеспечение, которое не имеет открытого исходного кода

Глава 2 363

и не распространяется свободно, поэтому правильный ответ — вариант Б. В целом дистрибутивы используют не одну, а несколько лицензий, поэтому вариант А не является верным. Лицензия МІТ — это одна из нескольких лицен­ зий для ПО с открытым исходным кодом; такое программное обеспечение не препятствует копированию дистрибутива, поэтому вариант В не является пра­ вильным. Несмотря на то что некоторые дистрибутивы, например Debian, стремятся сделать так, чтобы их главные системы полностью соответствовали принципам движения в поддержку программного обеспечения с открытым ис­ ходным кодом, это относится не ко всем, поэтому вариант Г — неверный. Ана­ логично не все дистрибутивы полностью состоят из свободного программного обеспечения, как оно понимается в ФСПО.

  1. Д. Вариант Д излагает один из четырех ключевых положений философии Ф СПО, поэтому этот ответ — правильный. Вариант А неверный, поскольку философия ФСПО не требует использования лицензии GPL, не говоря уже о ее последней версии, хотя для ФСПО GPL является предпочтительной лицензи­ ей. Вариант Б противоречит позиции ФСПО, которая заключается в том, что свободное программное обеспечение должно оставаться свободным; однако этот вариант соответствует философии организации OSI. Несмотря на то что ФСПО продвигает бесплатное программное обеспечение и бесплатные ОС, вариант В не является неотъемлемой частью философии этой организации, а значит, он неправильный. Хотя ФСПО хочет, чтобы в мире преобладало свободное про­ граммное обеспечение, эта организация не поддерживает пиратство, поэтому вариант Г нельзя считать правильным.

  2. Истина. Суды и законы признают программное обеспечение продуктом твор­ ческой деятельности, на который распространяется действие закона об автор­ ском праве. В некоторых странах на программное обеспечение также распро­ страняются положения патентного законодательства.

  3. Истина. Данный принцип лежит в основе определений свободного программ­

ного обеспечения и открытого исходного кода.

  1. Ложь. Производители аппаратного обеспечения действительно иногда выпус­ кают драйверы с открытым исходным кодом для своих продуктов. Нюанс в том, что выпуск таких драйверов обязательно открывает некоторые интерфейсы программирования для аппаратного обеспечения (часть производителей обо­ рудования идет на это с неохотой).

  2. LGPL (Lesser GPL, стандартная общественная лицензия ограниченного при­

менения).

  1. Корпорация Creative Commons.

364 Приложение. Ответы на контрольные вопросы

  1. Копилефт (copyleft) (сохранение прав копирования).

  2. Bounty (денежное вознаграждение за выполнение задачи).

Глава 3

  1. А. Мультизадачное™ системы Linux является вытесняющей, это означает, что ядро может выделить процессору время для любого процесса, потенциально пре: рывая (или вытесняя) другие процессы. Таким образом, вариант А является правильным. Linux — это многопользовательская операционная система, но такая система не является многозадачной, поэтому вариант Б является неправильным. В невытесняющей мультизадачной ОС приложения должны добровольно предо­ ставлять друг другу процессорное время. Хотя программы Linux могут сигнали­ зировать операционной системе, что им не нужно время процессора, Linux не полагается только на этот метод, поэтому вариант В нельзя считать корректным. Однозадачная ОС может запустить один процесс в конкретный момент времени, поэтому вариант Г неверен. ОС может быть либо однозадачной, либо многоза­ дачной (в этом случае может использовать либо невытесняющую, либо вытесня­ ющую многозадачность). Таким образом, вариант Д является неправильным.

  2. В. Определение открытого исходного кода подразумевает, что пользователи могут изменять его и распространять измененные версии. Поэтому вариант В — правильный ответ. Хотя на практике все программное обеспечение с исходным кодом доступно бесплатно, в определении открытого исходного кода ничто не запрещает продавать его. Фактически многие организации и частные лица дей­ ствительно продают программное обеспечение с открытым исходным кодом либо для удобства (например, продажа DVD-ROM с дистрибутивами Linux для пользователей медленного интернет-соединения), либо в дополненных конфи­ гурациях (например, дистрибутив Red Hat Enterprise Linux, в котором про­ граммное обеспечение с открытым исходных кодом дополнено контрактом на техническую поддержку), поэтому вариант А является неправильным. Опреде­ ление исходного кода требует распространения исходного кода, но не требует распространения двоичных файлов. Таким образом, вариант Б также является неправильным. Хотя некоторое программное обеспечение с открытым исходным кодом, включая ядро Linux, появилось благодаря научным изысканиям, этого нельзя сказать обо всем программном обеспечении, поэтому вариант Г неверен. Определение открытого исходного кода не указывает на то, что именно исполь­ зуется: интерпретируемый или компилируемый язык; и действительно, и тот и другой применяются для написания программного обеспечения с открытым исходным кодом, поэтому вариант Д также является неправильным.

Глава 4 365

  1. Г. Evolution представляет собой программу для чтения электронной почты. Такие программы широко используются на настольных компьютерах, поэтому вариант Г верный. Apache является веб-сервером, Postfix представляет собой сервер электронной почты, a Berkeley Internet Name Domain (BIND, система управления серверами доменных имен в Интернете Университета Беркли) — сервер Domain Name System (DNS, система доменных имен). Эти серверы гораздо реже устанав­ ливаются на настольных компьютерах по сравнению с такими программами, как Evolution, поэтому варианты А, Б и Д являются неправильными. Android — это название дистрибутива Linux для смартфонов и планшетных компьютеров, по­ этому вариант В также некорректный.

  2. Ложь. VMS представляла собой ОС для мини-ЭВМ и мейнфреймов, когда была создана Linux. На компьютерах х86 DOS была преобладающей ОС в 1991 году.

  3. Истина. Цифровые видеомагнитофоны (DVR) представляют собой специали­ зированные компьютеры для записи ТВ-шоу. Некоторые коммерческие DVR, такие как ТіѴо, используют Linux в качестве родной системы. Существует также программное обеспечение DVR для стандартных ПК, например MythTV, которое работает под Linux.

  4. Истина. Большинство серверных программ не требует ГПИ X Window System (X), поэтому администраторы серверов часто отключают оконную систему X или даже полностью ее удаляют для экономии дискового пространства и памяти, а также для уменьшения риска возникновения проблем безопасности.

  5. Монолитный.

  6. Условно-бесплатное программное обеспечение (shareware).

  7. Настольном (desktop).

  8. Apache.

Глава 4

  1. Б, В, Д. GNOME, KDE и Xfce — это среды рабочего стола Linux, поэтому вариан­ ты Б, В и Д являются правильными. (К другим средам относятся LXDE и Unity.) Набор инструментов GIMP (GTK+) представляет собой программную библиоте­ ку ГПИ. Хотя как GNOME, так и Xfce встроены в GTK+, это не среда рабочего стола, поэтому вариант А — неправильный. Evolution представляет собой почтовый клиент Linux, а не среду рабочего стола, поэтому вариант Г также неверный.

  2. Б. Network File System (NFS, сетевая файловая система) была разработана не­ посредственно для задания, описанного в вопросе, поэтому вариант Б является

366 Приложение. Ответы на контрольные вопросы

правильным. Simple Mail Transfer Protocol (SMTP, простой протокол электрон­ ной почты) позволяет одному компьютеру отправлять почтовые сообщения на другой компьютер, поэтому шанс достичь поставленной цели невелик, следовательно, вариант А некорректен. Язык РНР: Hypertext Processor (РН Р) используется для создания динамического контента для веб-страниц, поэто­ му вариант В неправильный. Domain Name System (DNS, система доменных имен) — это протокол для доставки соответствия между именами хостов и IP -адресами на компьютеры, так что с его помощью будет сложно добиться поставленной цели, поэтому вариант Г — неправильный. Dynamic Host Configuration Protocol (DHCP) позволяет одному компьютеру предоставлять другому компьютеру по сети информацию о сетевой конфигурации, поэтому вариант Д неверный.

  1. В. Главным языком для ядра Ьіпихявляется С, поэтому вариант В правильный. Хотя сценарии оболочки Bash управляют большей частью процесса запуска системы Linux, эти сценарии не являются частью ядра, поэтому вариант А — не­ верный. Java — это популярный язык для веб-приложений, но он не использу­ ется в ядре Linux, поэтому вариант Б является неправильным. C++ является производным от С, что добавляет объектно-ориентированные функции в язык, но ядро Linux использует обычный С, а не C++, поэтому вариант Г также не­ верный. Perl — популярный интерпретируемый язык, применяемый, в частности, для задач, связанных с обработкой текста, но он не является языком для ядра Linux, поэтому вариант Д — неправильный.

  2. Ложь. LibreOffice ответвился от версии OpenOffice.org, созданной до его пере­ хода к Apache, в 2011 году. Calligra ответвилась от офисного пакета KOffice, который более не поддерживается.

  3. Истина. DoS-атака (denial-of-service, отказ в обслуживании) может нарушить работу сервера путем направления подавляющего количества фиктивных дан­ ных в программу сервера или на компьютер, на котором она запущена. Это верно даже в том случае, если сервер управляется безупречно.

  4. Истина. Python, как Perl, РН Р и языки оболочки, является интерпретиру­ емым. Это контрастирует с С и C++, которые представляют собой компили­ руемые языки программирования, а также с Java, который находится где-то посередине.

  5. Почтовый клиент.

  6. Samba.

  7. Компилируемом.

  8. Пакет.

Глава 5 367

Глава 5

  1. Г. Команда lsp c i выводит информацию о PC I-устройствах. Поскольку многие ключевые характеристики материнской платы воспринимаются Linux в качестве PCI-устройств, вариант Г предоставляет обширную информацию о материнской плате, поэтому является правильным ответом. Команда lscpu, приведенная в варианте А, выводит информацию о центральном процессоре; это означает, что данная команда предоставляет мало информации о материнской плате, по­ этому вариант А неправильный. Программа Xorg — это сервер оконной систе­ мы X Linux, а вариант Б создает новый файл конфигурации X. Этот файл может предоставить некоторые сведения о видеооборудовании на материнской плате, однако вариант Г обеспечивает более качественную и подробную информацию, поэтому вариант Б нельзя считать верным. Служебная программа f disk может выполнить разделение диска, а команда, указанная в варианте В, выдает инфор­ мацию о том, как осуществляется разделение /dev/ sda. Тем не менее эта инфор­ мация не имеет никакого отношения к характеристикам материнской платы, поэтому вариант В неверный. Вы можете ввести h ttp ://lo c a lh o s t :631 в веб­ сервер, чтобы настроить свой принтер, однако, даже когда вы это сделаете, вы не получите никакой информации о характеристиках материнской платы, по­ этому вариант Д тоже неверный.

  2. А, Г. Разбиение дисков на разделы позволяет распределить данные разных типов по разным частям диска. Это может потребоваться, например, для уста­ новки нескольких ОС и отделения данных файловой системы от области подкачки. Таким образом, правильными являются варианты А и Г. Выбор файловой системы (ext4fs или ReiserFS) не имеет никакого отношения к раз­ биению дисков на разделы, если только вы не хотите использовать одну фай­ ловую систему для одного раздела, а другую — для другого, поэтому вариант Б неверный. Интерфейсы Parallel Advanced Technology Attachment (РАТА) (параллельный АТА) и Serial АТА (последовательный АТА) являются стан­ дартами оборудования; вы не сможете превратить РАТА-диск в SATA-диск, просто разбив диск на разделы, поэтому вариант В неправильный. Для повы­ шения производительности в жестких дисках предусмотрен кэш, однако раз­ биение дисков на разделы не отделяет кэш диска от массива данных на диске, поэтому вариант Д неверный.

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

368 Приложение. Ответы на контрольные вопросы

  1. Истина. Большинство семейств процессоров имеют несколько названий. ЕМ 64Т— одно из имен, которые компания Intel использовала для реализации архитектуры х86-64, a AMD64 — одно из названий AMD для такой же архитек­ туры. Таким образом, два этих названия определяют одну и ту же архитектуру, а дистрибутив AMD64 Linux может работать на процессоре ЕМ64Т.

  2. Ложь. Universal Disk Format (UDF, универсальный формат диска) — это фай­ ловая система, которая используется прежде всего на оптических, а не на жест­ ких дисках. Применять ее для установки Linux на жестком диске неудобно либо вовсе невозможно. Характерные для Linux файловые системы (ext2fs, ext3fs, ext4fs, ReiserFS, JFS, XFS и Btrfs) являются единственными используемыми на практике способами установки Linux на жесткий диск.

  3. Истина. Большинство драйверов в системе Linux, включая специализированные, предоставляются как часть ядра. Некоторые другие драйверы (например, те, которые используются для видеокарт под X, принтеров и сканеров) существуют за пределами ядра, хотя для выполнения своей работы также могут полагаться на драйверы ядра.

  4. Постоянный ток.

  5. Digital Video Interface (DVI, цифровой видеоинтерфейс).

  6. Драйвер.

Глава 6

  1. А. Когда мы редактируем команду в оболочке Bash, сочетание клавиш Ctrl+A пере­ мещает курсор к началу строки, поэтому вариант А является правильным. Клави­ ша > добавляет стандартный вывод в файл, поэтому вариант Д явля­ ется правильным. Вертикальная черта ( | ) — это оператор конвейера; он связы­ вает стандартный вывод одной программы со стандартными входными данны­ ми другой, поэтому вариант А — неправильный. Оператор 2> перенаправляет стандартное сообщение об ошибке, а не стандартный вывод; целевой файл пере­ записывается. Таким образом, вариант Б — неверный. Оператор&> перенаправ­ ляет как стандартный вывод, так и стандартное сообщение об ошибке, и целевой файл перезаписывается, поэтому вариант В — неправильный. Оператор > пере­ направляет стандартный вывод, но перезаписывает целевой файл, поэтому ва­ риант Г тоже неправильный.

  2. Г. С помощью служебной программы ta r команда - l i s t ( t) используется для чтения архива и просмотра его содержимого, Параметр -verbose (ѵ) создает

372 Приложение. Ответы на контрольные вопросы

подробный список файлов, а - f i l e ( f ) указывает в данном случае имя файла d ata7 9 .tar. Вариант Г использует все эти функции, следовательно, делает так, как указано в вопросе. Варианты А, Б, В и Д заменяют команды на команду - li s t, как требуется в вопросе, поэтому все эти ответы — неверные.

  1. Истина. Специальные символы [ Лх] соответствуют любому единичному сим­ волу, кроме х, а .* соответствует любой последовательности любых символов. Строка Linus Torvalds является лишь одной из множества строк, которые должны соответствовать заданному регулярному выражению.

  2. Истина. Вы можете использовать параметр -s iz e п в команде find, чтобы най­

ти файлы в зависимости от их размера.

  1. Ложь. Служебная программа zip создает файлы ZIP-архивов или управляет ими. Этот тип файлов поддерживает сжатие напрямую, как это делает програм­ ма zip. Таким образом, нет необходимости использовать другую программу для сжатия файлов, заархивированных с помощью программы zip.

  2. л.

  3. cut.

  4. &>.

  5. Каталог lo ssle ss.

Глава 9

  1. Д. Служебная программа apt-get — это инструмент с поддержкой работы в сети, который может устранить зависимости и извлечь все необходимые пакеты для установки выбранного вами пакета. Debian и все ее версии используют его, по­ этому вариант Д является верным. Программы yum и zyppen похожи на apt-get, но работают на Red Hat (и в ее производных версиях) и дистрибутивах SUSE, соответственно, поэтому варианты А и Б являются неправильными. Программа dmesg отображает кольцевой буфер ядра и не имеет ничего общего с управлени­ ем пакетами, поэтому вариант В — некорректный. Программа rpm не имеет поддержки работы в сети для управления пакетами в системе с RPM (а не в си­ стеме Debian), поэтому вариант Г — неправильный.

  2. А. Как правило, в качестве первого процесса Linux запускает in it, поэтому вариант А — верный, bash представляет собой командную текстовую оболочку системы Linux. Хотя она важна для взаимодействия пользователя с системой, это далеко не первый процесс, который запускает Linux. Демон cron управляет своевременным исполнением программ для обработки повседневных задач со­

Глава 10 373

провождения. Он запускается автоматически в процессе загрузки, но не явля­ ется первым процессом, который запускает ядро, поэтому вариант В — неверный. Хотя процесс login имеет решающее значение для входа пользователей в тек­ стовом режиме, он запускается посредством in it или другим процессом, поэто­ му вариант Г — неправильный. Grand Unified Bootloader (GRUB, основной единый загрузчик) загружает компьютер, поэтому части GRUB запускаются прежде ядра. Несколько программ Linux помогают в управлении установкой GRUB, но ядро не запускает ни одну из них автоматически. Таким образом, вариант Д — неверный.

  1. А. /v a r /lo g — стандартное хранилище для лог-файлов в Linux. Варианты Б, В, Г и Д указывают несуществующее местоположение, следовательно, все они не­ правильные.

  2. Истина. Диспетчеры пакетов, поддерживающие работу в сети, например APT, yum, zypper и urpmi, могут автоматически загрузить и установить зависимые пакеты для главного пакета.

  3. Истина. Программа top сортирует список процессов по использованию ресур­ сов процессора, так что самый верхний элемент в списке будет потреблять больше всего процессорного времени. Вы можете изменить порядок сортиров­ ки различными способами.

  4. Истина. Как и дисковые log-файлы, буфер уровня ядра (что отображает dmesg) при запуске компьютера изменяется. Таким образом, его содержимое сразу по­ сле загрузки не может быть таким же, как если бы компьютер проработал не­ сколько недель.

  5. Package database (база данных пакета).

  6. Потомком.

  7. syslog.

  8. dmesg.

Глава 10

  1. Г. LibreOffice, как большинство текстовых процессоров, использует двоичный формат, который нельзя должным образом проанализировать, применяя тек­ стовые редакторы ASCII или Unicode. Таким образом, nano не сможет помочь в проверке такого документа, что делает вариант Г верным. Текстовый редактор nano может обрабатывать формат ASCII или Unicode, поэтому текстовые файлы, указанные в вариантах А и В, не подойдут. Другие типы документов, описанные

374 Приложение. Ответы на контрольные вопросы

в вариантах Б и Д, вероятнее всего, будут храниться в формате ASCII или Unicode, что делает выбор данных вариантов неправильным.

  1. Б, Д. Сочетание клавиш Ctrl+W и F6 вызывают функцию поиска, поэтому вари­ анты Б и Д являются правильными. Клавиша F3 записывает текущий буфер на диск, поэтому вариант А — неправильный. Сочетание клавиш Esc+S включает или отключает плавную прокрутку, следовательно, вариант В — неверный. Со­ четание Ctrl+F перемещает один символ вперед, значит, вариант Г тоже не под­ ходит.

  2. А. В редакторе ѵі команда dd удаляет строки (удалено будет такое количество строк, которое мы укажем в начале команды). Таким образом, вариант А явля­ ется правильным. Хотя программа уу работает аналогично, она копирует текст в буфер вместо того, чтобы удалить его, поэтому вариант Б — неправильный. Вариант В работает во многих ТПИ-редакторах, но не в ѵі. Вариант Г работает в emacs и аналогичных редакторах (включая рісо и nano), но не в ѵі. Вариант Д работает во многих текстовых редакторах с интерфейсом ТПИ, но не в ѵі. Сле­ довательно, ответы В, Г и Д — неправильные.

  3. Ложь. Unicode обеспечивает поддержку большинства алфавитов, включая огромные логографические системы, которые используются в общих восточно­ азиатских языках.

  4. Ложь. Поддержка подчеркивания, курсива, нескольких шрифтов и аналогичных расширенных функций форматирования присутствует в текстовых процессорах, а не в простых текстовых редакторах (даже в текстовых редакторах с графиче­ ским интерфейсом отсутствует такая поддержка).

  5. Истина. Благодаря простоте использования nano, как правило, считается лучшим

редактором для ознакомления в первую очередь.

7 . 1 2 8 .

  1. Ctrl+\ и Esc+R.

9 . и.

1 0 . Z Z .

Глава 1 1

  1. А. Сценарии как бинарные программы обычно имеют хотя бы один исполняемый набор битов, хотя их можно запускать определенным образом без этой функции, поэтому вариант А является правильным. Не существует стандартного катало-

Глава 11

375

га /u sn /b in /s c n ip ts , сценарии могут находиться в любом каталоге, поэтому вариант Б — неправильный. Сценарии представляют собой интерпретируемые программы; это означает, что в их компиляции нет необходимости. Введя имя сценария оболочки, вы запустите сценарий; следовательно, вариант В является неправильным. Вирусы крайне редко атакуют Linux; поскольку вы только что создали сценарий, то единственный вариант, при котором он мог бы содержать вирус, — если система уже заражена или если вы написали сценарий как вирус. Таким образом, вариант Г — неправильный. Большинство программ для про­ верки орфографии предназначены для английского или других языков, поэтому им не хватает действительных Bash-команд, таких как esae. Более того, даже если каждое ключевое слово написано правильно, сценарий может содержать ошибки. Вывод: вариант Д — неверный.

  1. В. Команда ср является единственной вызываемой в сценарии, она выполняет копирование файлов. Так как сценарий передает аргументы ($1 и $2) в ср в обрат­ ном порядке, то ср копирует свой первый аргумент во второе имя, а сценарий ері копирует второй аргумент в первое имя. Вариант В правильно описывает данный случай. Вариант А игнорирует обратный порядок аргументов, поэтому является неверным. Команда ср, как и сценарий, не имеет ничего общего с компиляцией программ на языке С или C++, что делает вариант Б неправильным. Поскольку ср является простой командой дл я копирования файлов, она может преобразовывать программу на языке С в C++, следовательно, вариант Г — неправильный. Первая строка сценария — это действительная строка с последовательностью символов# I, в отличие от варианта Д, поэтому данный ответ — неверный.

  2. В. Условные выражения возвращают ответ «верно» или «неверно», что позво­ ляет сценарию выполнять один или другой набор инструкций либо прекращать или продолжать цикл. Вариант В описывает еще один способ сказать это, поэто­ му он является правильным. Условные выражения не имеют ничего общего с лицензионными условиями (вариант А), отображая информацию о среде (вариант Б), классическое (павловское) обусловливание (вариант Г) или же выполнение сценария в определенное время суток (вариант Д). Это говорит о том, что условные выражения могут использоваться для любой из этих задач, но это не является их целью.

  3. Л о ж ь . Переменная $0 содержит в этом примере имя сценария myscript. Чтобы получить доступ к первому параметру, переданному в сценарий ( la s e r.te x t) , он должен использовать переменную $ 1.

  4. Истина. Вы можете использовать fo r для выполнения цикла фиксированное количество раз, тогда как while и u n til выполняют его до тех пор, пока соблю­ даются (или не соблюдаются) тестовые условия.

376 Приложение. Ответы на контрольные вопросы

  1. Ложь. Действие указанного сценария заключается в последовательном запуске трех экземпляров term inal; второй запускается только тогда, когда первый пре­ кращает свое действие. Чтобы сделать все так, как задано в вопросе, вам следу­ ет включить завершающий амперсанд (&) по крайней мере в два первых обра­ щения к term inal (как в term inal в ); это заставляет их работать в фоновом режиме, так что сценарий может продолжать выполняться, чтобы запустить оставшиеся экземпляры term inal.

  2. !/bin/sh. #

  3. echo.

  4. case.

  5. ex it.

Глава 12

  1. A. UID 0 зарезервирован для учетной записи суперпользователя, также извест­ ного как root, поэтому вариант А — правильный. Первая учетная запись обыч­ ного пользователя не является системной учетной записью, и ее UID обычно равен от 500 до 1000 (в зависимости от дистрибутива), поэтому вариант Б — не­ верный. Поскольку вариант А корректен, вариант В не может быть верным. Ассоциация UID, равного 0, для административных целей является стандартной в системе Linux, поэтому на этот счет вы не найдете вариаций, что делает вари­ ант Г неправильным. Вариант Д описывает учетную запись nobody, которая не имеет UID, равного 0.

  2. А, В, Д. Поля файла /etc/passwd указывают имя пользователя, зашифрованный пароль (или х для обозначения использования теневых паролей, что более рас­ пространено), номер UID (вариант А), одиночный номер GID по умолчанию, поле для комментариев, которое обычно содержит полное имя пользователя, путь к домашнему каталогу учетной записи (вариант В) и путь к оболочке с текстовым режимом по умолчанию учетной записи (вариант Д). Вариант Б является неправильным, поскольку, хотя /etc/passw d и включает группу поль­ зователя по умолчанию, пользователь может принадлежать к дополнительным группам, которые определены в другом месте. Вариант Г является неправиль­ ным, потому что среда рабочего стола пользователя по умолчанию определяет­ ся в домашнем каталоге пользователя, а не в /etc/password.

  3. А. Команда sudo является обычным способом выполнения одной команды от имени суперпользователя, а вариант А предоставляет правильный синтаксис,

Глава 13 377

чтобы использовать ее так, как указано в вопросе. Не существует стандартной команды суперпользователя, поэтому вариант Б — некорректный. Команда passwd меняет пароли, поэтому вариант В — неправильный. Хотя вы можете применять su для выполнения единичной команды от имени суперпользовате­ ля, вы должны использовать ее с параметром-с, как в su -с “cat /e t c / shadow”, поэтому вариант Г тоже неправильный. Команда варианта Д admin является вымышленной, поэтому данный ответ — неверный.

  1. Ложь. Команда whoami выводит только имя пользователя. КомандаіР выводит ваше имя пользователя, ваш номер UID, ваше основное имя группы, ваш основ­ ной GID-номер, а также имена групп и номера GID всех ваших групп.

  2. Ложь. Имя для файла групповых данных в Linux — это /etc/group, а не /e t c /

groups.

  1. Истина. Компьютеру можно нанести больше вреда в качестве суперпользова­ теля, чем в качестве обычного пользователя. Таким образом, вы должны быть предельно осторожны при работе от имени суперпользователя — запускать только доверенные программы, дважды проверять ваши команды на наличие ошибок и т. д.

  2. /etc/passwd.

  3. w.

  4. Системных.

  5. Войти в систему как суперпользователь.

Глава 13

  1. В. Команда u se rd e l удаляет учетную запись, а параметр -г, применяемый к userdel, — причина удаления домашнего каталога пользователя и файла, со­ держащего информацию о заголовке сообщения. Таким образом, ответ В удов­ летворяет условиям вопроса. Команда варианта А удаляет учетную запись, но оставляет нетронутым домашний каталог пользователя. Команда варианта Б поступает аналогичным образом; параметр - f принудительно задает удаление учетной записи и удаление файла в некоторых случаях, но это имеет смысл только тогда, когда также используется -г. Команда варианта Г, вероятно, не будет иметь никакого эффекта, поскольку rm работает на каталогах только в сочетании с параметром -г, а /home/nemo, скорее всего, является домашним каталогом пользователя. Команда rm (вариант Д) удаляет домашний каталог

378 Приложение. Ответы на контрольные вопросы

пользователя (при условии, что он расположен в обычном месте), но не удаля­ ет учетную запись пользователя.

  1. Б. Пароль в варианте Б использует комбинацию из прописных и строчных букв, чисел и символов и не содержит какого-либо очевидного слова. Более того, это длинный пароль. Благодаря этим характеристикам данный пароль вряд ли по­ явится в словаре взломщика (его очень сложно подобрать). Таким образом, в варианте Б указан хороший пароль (лучший из тех, которые показаны). Ва­ риант А — это имя знаменитости (по крайней мере в мире Linux!), и это делает выбор данного пароля неудачным. Вариант В - очень простой пароль, поэтому тоже не подходит. Кроме того, он короткий и состоит только из символов одно­ го типа (цифр). Вариант Г является еще одним популярным паролем (и следо­ вательно, очень слабым). Это одно распространенное слово, написанное строч­ ными буквами и не содержащее цифр или других неалфавитных символов. Пароль в варианте Д довольно длинный, но состоит из трех связанных между собой слов, набранных строчными буквами, в общем, тоже не лучший выбор.

  2. А. Команда groupadd создает новую группу, поэтому правильный ответ — вари­ ант А. Чтобы добавить пользователя в группу, как предлагается в варианте Б, вы будете использовать служебную программу usermod. Ни одна стандартная команда не импортирует информацию о группе из файла, как указано в вари­ анте В, поэтому данный вариант является неправильным (хотя некоторые ин­ струменты управления предлагают такую функцию). Чтобы изменить группу пользователя по умолчанию или список дополнительных групп, вы будете ис­ пользовать usermod, поэтому варианты Г и Д — неверные.

  3. Истина. Системные учетные записи имеют значения UID от 0 и до какого-то числа (обычно 499 или 999), тогда как пользовательские учетные записи имеют значения UID выше этого числа (как правило, начинаясь на 500 или 1000).

  4. Ложь. Стандартной командой для смены паролей в командной строке является

passwd.

  1. Истина. Хотя параметр -г команды userdel удаляет домашний каталог пользо­ вателя и почтовые файлы, эта команда не отслеживает пользовательские файлы, которые хранятся в реже используемых местах. Если вы хотите удалить такие файлы или изменить владельца, то для их поиска вы можете использовать ко­ манду find.

  2. -и 1926 theo.

  3. usermod -1 emilyn el211.

  4. -г и л и -system.

  5. /etc/group.

Глава 14 379

Глава 14

  1. Г. Вариант Г содержит правильную команду. Ввод chown ralph:tony somefile, как в варианте А, указывает владельцем файла ralph, а владельцем группы — tony. Команда chmod, использовавшаяся в вариантах Б и В, применяется для изменения прав доступа к файлу, а не владения. Вариант В ставит в обратном порядке имя файла и владельца.

  2. В, Г. Символ d, который вводит режим, указывает, что файл является ката­ логом, в то время как символ г в триплете г-х в конце символического режи­ ма указывает, что у всех пользователей системы есть доступ к чтению ката­ лога, поэтому верны оба варианта — В и Г. Введение символов 1, которых не хватает этому режиму, обозначает символические ссылки, поэтому вариант А является неправильным. Хотя символы х обычно обозначают исполняемые программные файлы, как указано в варианте Б, в случае с каталогами этот бит полномочий указывает, что можно выполнять поиск содержимого ката­ лога. Единственный набор прав на запись находится в первом триплете, ко­ торый ссылается на владельца файла, поэтому только этот пользователь (а не другие члены группы файла) может осуществлять запись в файл (в отличие от варианта Д).

  3. Д. Хотя команда chgrp является обычной для изменения группы файла, вы также можете использовать команду chown, чтобы выполнить ту же задачу, поэтому вариант Д — правильный. Команда groupadd (вариант А) добавляет новую группу в систему, поэтому этот ответ неверный. Команда groupadd может изменять детали определения группы, но не изменяет группу, связан­ ную с файлом, поэтому вариант Б — неправильный. Команда chmod изменяет режим файла (то есть его права доступа), но не его связь с группой, поэтому вариант В тоже неправильный. Вы можете использовать Is для того, чтобы узнать текущую группу файла, но не изменить ее, поэтому вариант Г — не­ верный.

  4. Истина. Восьмеричная запись прав 755 соответствует символическому пред­ ставлению -rw xr-xr-x, что включает глобальные права на чтение (в конечных трех битах г-х). Таким образом, любой сможет прочитать данный файл.

  5. Ложь. Любой пользователь может использовать программу chmod, однако толь­ ко владелец файла или суперпользователь могут изменить права доступа к файлу.

  6. Истина. Хотя обычный пользователь может использовать команду chown, чтобы

изменить группу файла, он не сможет изменить владение файлом.

380 Приложение. Ответы на контрольные вопросы

  1. -R или -recursive.

  2. г-х.

  3. а+х.

  4. o + t .

Глава 15

  1. В. Компьютер-шлюз представляет собой маршрутизатор, который передает данные между двумя или более сетевыми сегментами. Таким образом, если компьютер не настроен на использование шлюза, он не сможет обмениваться данными за пределами своего локального сетевого сегмента, как говорится в варианте В. (Если ваш DNS-сервер находится в другом сегменте сети, раз­ решение имени через DNS не будет работать, хотя другие типы разрешения имени, такие как запись в файл /e tc /h o s ts , по-прежнему будут работать.) Отсутствие адреса шлюза не повлечет за собой ситуаций, описанных в вари­ антах А, Б, Г и Д.

  2. Б, В. При выводе информации об интерфейсе программа iconfig показывает оборудование (вариант В) и IP -адреса (вариант Б) интерфейса, протоколы (такие как T C P /IP ), связанные с интерфейсом, и статистику о переданных и полученных пакетах. Эта команда не возвращает информацию о програм­ мах, использующих интерфейс (вариант А), имя хоста, связанное с интер­ фейсом (вариант Г), или же шлюз, с которым он обменивается данными (вариант Д).

  3. А, Д. Проблемы с DNS могут проявиться при подключении к компьютерам с помощью IP-адресов, а не с помощью имен хостов. Таким образом, вариан­ ты А и Д (и различные другие проблемы, связанные с DNS) могут создать описанные ситуации. Если бы целевая система была настроена на игнорирова­ ние ping-пакетов, как описано в варианте Б, она бы не отреагировала, когда бы ее идентифицировали по ІР-адресу. DNS-конфигурация целевой системы (ва­ риант В) не входит в уравнение, потому что отвечает на ping-запрос только через IP -адрес, Конфигурация локального имени хоста компьютера не повлия­ ет на его способность отправлять или получать пакеты даже по имени хоста, поэтому вариант Г является неправильным.

  4. Истина. Длина ІРѵ4-адресов составляет 4 байта, обычно они выражены в виде

четырех десятичных чисел, разделенных точками (как 192.168.0.1).

Глава 15 381

  1. Ложь. Файл /e tc /r e s o lv .c o n f содержит информацию о DNS-сервере — ІР- адреса до трех DNS-серверов и доменные имена, поиск которых следует вы­ полнить, когда пользователь не использует их.

  2. Истина. При применении без других параметров команда route отображает

текущую таблицу маршрутизации.

  1. Netstat.

  2. eth0.

  3. Межсетевой экран (брандмауэр).

ip route show.

Кристин Бреснахэн, Ричард Блум

Linux на практике

Перевел с английского С. Черников

Заведующая редакцией Руководитель проекта Ведущий редактор Литературный редактор Художник Корректоры Верстка

Ю . С е р г и е н к о

О . С и в ч е н к о

Н . Г р и н ч и к

О . А н д р о с и к

С . З с ш а т е в с к а я

О . А н д р и е в и ч , Е . П а в л о в и ч

А . Б а р и е в и ч

ООО «Питер Пресс», 192102, Санкт-Петербург, ул. Андреевская (д Волкова), 3, литер А, пом. 7Н.

Налоговая льгота — общероссийский классификатор продукции OK 034-2014, 5811.12 — Книги печатные профессиональные, технические и научные.

Подписано в печать 23.11.16. Формат 70x100/16. Бумага офсетная. Уел. п. л. 30,960. Тираж 1000. Заказ 9062

Отпечатано в АО «Первая Образцовая типография» Филиал «Чеховский Печатный Двор» 142300, Московская область, г. Чехов, ул. Полиграфистов, д. I Сайт: www.chpd.ru, E-mail: sales@chpd.ru, тел. 8(499)270-73-59

КНИГА-ПОЧТОЙ

ЗАКАЗАТЬ КНИГИ ИЗДАТЕЛЬСКОГО ДОМА «ПИТЕР» МОЖНО ЛЮБЫМ УДОБНЫМ ДЛЯ ВАС СПОСОБОМ:

• на нашем сайте: www.piter.com • по электронной почте: books@piter.com • по телефону: (812) 703-73-74

ВЫ МОЖЕТЕ ВЫБРАТЬ ЛЮБОЙ УДОБНЫЙ ДЛЯ ВАС СПОСОБ ОПЛАТЫ:

^

Наложенным платежом с оплатой при получении в ближайшем

почтовом отделении.

С помощью банковской карты. Во время заказа вы будете

^

перенаправлены на защищенный сервер нашего оператора, где сможете

ввести свои данные для оплаты.

^

Электронными деньгами. Мы принимаем к оплате Яндекс.Деньги,

Webmoney и Kiwi-кошелек.

<Q- В любом банке, распечатав квитанцию, которая формируется

автоматически после совершения вами заказа.

ВЫ МОЖЕТЕ ВЫБРАТЬ ЛЮБОЙ УДОБНЫЙ ДЛЯ ВАС СПОСОБ ДОСТАВКИ:

• Посылки отправляются через «Почту России». Отработанная

система позволяет нам организовывать доставку ваших покупок максимально быстро. Дату отправления вашей покупки и дату доставки вам сообщат по e-mail

• Вы можете оформить курьерскую доставку своего заказа (более

подробную информацию можно получить на нашем сайте www.piter.com).

• Можно оформить доставку заказа через почтоматы (адреса почтоматов

можно узнать на нашем сайте www.piter.com).

ПРИ ОФОРМЛЕНИИ ЗАКАЗА УКАЖИТЕ:

• фамилию, имя, отчество, телефон, e-mail;

• почтовый индекс, регион, район, населенный пункт, улицу, дом,

корпус, квартиру;

• название книги, автора, количество заказываемых экземпляров.

Г —————————————————————————————————————————————————– N

БЕСПЛАТНАЯ ДОСТАВКА:

• курьером по Москве и Санкт-Петербургу

при заказе на сумму от 2000 руб.

V________________________________________________________________________ ^

• почтой России при предварительной оплате

заказа на сумму от 2000 руб.

пзалтепьскпй д о м

ВАША УНИКАЛЬНАЯ КНИГА

Хотите издат ь с в о ю к н и г у ? О н а станет и д е а л ь н ы м п о д а р к о м д л я парт неров и д р у з е й , от личны м инст рум ент ом д л я п р о д в и ж е н и я в а ш е г о б р е н д а , презент ом д л я пам ят ны х собы т ий! М ы см о ж е м осущ ест вит ь в а ш и л ю б ы е , д а ж е с а м ы е см е л ы е и сл о ж н ы е, и д е и и проект ы .

МЫ ПРЕДЛАГАЕМ: • издать вашу книгу • • • •

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

Почему надо выбрать именно нас:

И здат ельст ву «Пит ер» б о л е е 2 0 лет. Н а ш опыт - га р а н т и я в ы с о к о г о качест ва.

Мы предлагаем:

• • • •

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

Обеспечим продвижение вашей книги:

• • •

р е к л а м о й в п р о ф и л ь н ы х С М И и м е с т а х п р о д а ж р е ц е н з и я м и в в е д у щ и х к н и ж н ы х и з д а н и я х и н т е р н е т - п о д д е р ж к о й р е к л а м н о й к а м п а н и и

М ы и м е е м со б ст в е н н у ю сеть д и с т р и б у ц и и п о в с е й Р о с с и и , а также н а У к р а и н е и в Б е л а р у с и . С о т р у д н и ч а е м с к р у п н е й ш и м и к н и ж н ы м и м а г а з и н а м и . И здат ельст во «Пит ер» являет ся п о ст о я н н ы м у ч а с т н и к о м м н о г и х к о н ф е р е н ц и й и с е м и н а р о в , кот оры е предо ст авляю т ш и р о к у ю возм ож н ост ь р е а л и з а ц и и к н и г.

М ы о б я за т е л ьн о п р о с л е д и м , чт обы в а ш а к н и г а п о ст о я н н о и м е л а с ь в н а л и ч и и в м а г а з и н а х и б ы л а в ы л о ж е н а н а с а м ы х в и д н ы х местах.

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

К р о м е того, п р е д л а г а е м в а м выпустить э л е к т р о н н у ю к н и г у . М ы р а зм е ст и м е е в к р у п н е й ш и х и н т е р н е т -м а га зи н а х. К н и г а будет св е р ст а н а в ф орм ат е e P u b и л и P D F - с а м ы х п о п у л я р н ы х и н а д е ж н ы х ф о р м а т а х н а с е г о д н я ш н и й д е н ь .

Свяжитесь с нами прямо сейчас:

Санкт-Петербург - А н н а Титова, (812) 7 0 3 -7 3 -7 3 , tito v a @ p ite r.c o m Москва - С е р г е й К л е б а н о в , (4 9 5 ) 2 3 4 -3 8 -1 5 , k le b a n o v @ p ite r .c o m

с

п

л

д
krw

rHBHP^CHR« Г О Р И Я

Д Я Н И П О Ѳ Р

uwuw.SRLD.ru 8 ( 812) 336 3739

Пнтывыр^сные

програттные п р о д у к т ы

Lin u x — д л я всех!

ОСНОВНЫЕ ДОСТОИНСТВА КНИГИ:

• Содержит тематически сгруппированные уроки, что быстро поможет вам найти

самое нужное и перейти к конкретной главе, где эта тема подробно рассматривается.

• Описывает основы операционной системы Linux, в том числе ее дистрибутивы, типы

приложений с открытым исходным кодом, свободное ПО, лицензирование, навигацию и многое другое.

• Исследует работу с командной строкой, в том числе навигацию в ней, превращение

команд в сценарии и т. п.

• Учит создавать типы пользователей и пользовательские группы.

www.piter.com — каталог книг и интернет-магазин