[ назад ] [ Содержание ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ вперед ]


Справочник по Debian
Глава 4 - Руководство по Debian


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


4.1 Введение

После установки системы Debian на Ваш ПК Вам нужно изучить несколько полезных вещей. Я предлагаю это сделать в форме экспресс-тренировки.


4.1.1 Вход в систему как пользователь root

Сразу после перезагрузки системы Вам представляется либо графический экран входа в систему, либо текстовый - в зависимости от изначального выбора пакетов при установке. Для простоты, если Вы видите графический экран для входа, нажмите Ctrl-Alt-F1, чтобы перейти к текстовому экрану входа в систему. [2]

Предположим, что имя Вашей системы - foo, тогда приглашение на вход будет таким:

     foo login:

Наберите root, нажмите клавишу Enter и введите пароль, который Вы указывали в процессе установки. В системе Debian согласно традиций Unix пароль чувствителен к регистру. После этого система выводит приветствие и представляет Вам приглашение командой строки пользователя root, ожидая ввода. [3]

     foo login: root
     Password: 
     Last login: Sun Oct 26 19:04:09 2003 on tty3
     Linux foo 2.4.22-1-686 #6 Sat Oct 4 14:09:08 EST 2003 i686 GNU/Linux
     
     Most of the programs included with the Debian GNU/Linux system are
     freely redistributable; the exact distribution terms for each program
     are described in the individual files in /usr/share/doc/*/copyright
     
     Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
     permitted by applicable law.
     
     root@foo:root#

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

Если Вам нужно дать кому-либо часть полномочий root, не стоит этого делать, разделяя с ним пароль учетной записи root. Используйте для этого программы типа sudo(8).

В Unix cчитается хорошей привычкой регистрироваться в системе, используя непривелегированную учетную запись, даже если Вы собираетесь выполнять некую административную работу. Используйте команды sudo, super, или su -c для получения дозированных привилегий root, когда это необходимо. Смотрите Working more safely – sudo, раздел 9.2.4. [4]


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

Я думаю, что изучение компьютерной системы схоже с изучением нового иностранного языка. И хотя учебники достаточно полезны, Вам нужно попрактивать с подручными инструментами. В этом контексте я считаю, что хорошей идей будет установка нескольких дополнительных пакетов типа mc, vim, lynx, doc-linux-text и debian-policy. [5]

     # apt-get update
      ...
     # apt-get install mc vim lynx doc-linux-text debian-policy 
      ...

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


4.1.3 Добавление пользовательской учетной записи

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

Предположим, что Вы захотели, чтобы ее имя было penguin. Тогда следущая команда:

     root@foo:root# adduser penguin
     ... ответьте на все вопросы

создаст ее. [7] Перед тем, как идти дальше, мы должны сперва изучить еще несколько вещей.


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

В системе Debian по умолчанию существует шесть независимых превдотерминалов, т.е. Вы можете использовать текстовый консольный экран VGA Вашего персонального компьютера как 6 переключаемых терминалов VT-100. Переключение между терминалами осуществляется одновременным нажатием клавиши левый-Alt и одной из функциональных F1–F6. Каждый псевдотерминал позволяет независимую регистрацию в системе. Это является проявлением такой важной черты Unix, как многопользовательность.

Если Вы случайно нажали Alt-F7 на системе с работающей системой X Window и видите графический экран, то для возврата к текстовым консолям нажмите Ctrl-Alt-F1. Для тренировки просто попытайтесь попереключаться на другую консоль и возвращаться назад.


4.1.5 Как завершить работу системы

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

     # shutdown -h now

Эта команда используется в нормальном многопользовательском режиме. Если же Вы в однопользовательском режиме, то в командной строке root используйте следующую команду:

     # poweroff -i -f

Также Вы можете нажать Ctrl-Alt-Delete для завершения работы системы. [8]

Подождите, пока система не отобразит сообщение "System halted", и только тогда выключайте питание. Если функции APM или ACPI надлежащим образом включены как в BIOS, так и в Linux, то система выключит питание самостоятельно. Подробности смотрите в Большой размер оперативной памяти и автовыключение питания, раздел 3.7.4.


4.1.6 Время поразвлечься

Теперь Вы готовы без риска поиграть с системой Debian, так как используете учетную запись непривилегированного пользователя penguin. [9]

Давайте войдем в систему как пользователь penguin. Если Вы сейчас работаете как root, нажмите Ctrl-D [10] в командой строке, чтобы закрыть командный интерпретатор root'а и выйти на приглашение к входу в систему. Введите Ваше только что созданное имя пользователя penguin и его пароль. [11] Вам будет показано следующее приглашение ко вводу команд.

     penguin@foo:penguin$

С этого момента для простоты даваемые примеры будут использовать упрощенное приглашение ко вводу команд. Я буду использовать:

Мы начнем изучение системы Debian сначало по-простому через Midnight Commander (MC), раздел 4.2, а позже по-настоящему через Традиционная для Unix рабочая среда, раздел 4.3.


4.2 Midnight Commander (MC)

Midnight Commander (MC) - это "Швейцарский армейский нож" от проекта GNU, применяемый в консоли Linux и прочих терминальных средах. Он дает новичку опыт работы в консоли через меню-подобный интерфейс, который гораздо проще изучить, чем стандартные команды Unix.

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


4.2.1 Улучшим MC

Чтобы MC изменял рабочий каталог при выходе из него, Вам нужно изменить файл ~/.bashrc (или /etc/bash.bashrc, вызываемый из .bashrc) образом, описанным на соответствующей man-странице mc(1) касательно опции -P. [12]


4.2.2 Запуск MC

     $ mc

MC выполняет все операции с файлами через его меню, требуя от пользователя минимум усилий. Для получения справки просто нажмите F1. Вы можете поиграть с MC путем нажатий клавиш управления курсором и функциональных клавиш. [13]


4.2.3 Файловый менеджер в MC

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


4.2.4 Особенности командной строки в MC


4.2.5 Редактор в MC

Встроенный редактор имеет интересную систему "вырезать-вставить". Нажатие F3 помечает начало выделения текста, повторное нажатие помечает конец выделения и высвечивает выбранный текст. Теперь Вы можете передвигать Ваш курсор. И если нажмете F6, то выделенная область будет перенесена в позицию курсора. Если же Вы нажмете F5, то выделенная область будет скопирована в позицию курсора. F2 сохраняет файл, F10 завершает работу редактора. Большинство курсорных клавиш работают так, как Вы интуитивно преполагаете.

Этот редактор может быть запущен непосредственно для работы с файлом:

     $ mc -e имя_файла_для_правки
     $ mcedit имя_файла_для_правки

Данный редактор не является мультиоконным, но можно использовать множество линукс-консолей для достижения похожего эффекта. Чтобы копировать между окнами, для переключения между виртуальными консолями используйте клавиши Alt-Fn, а для переноса части файла в другой используйте "Файл->Вставить файл" или "Файл->Копировать в файл"

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

Также многие программы используют переменную окружения EDITOR или VISUAL для определения, какой редактор использовать. Если Вам неудобно в vim, установите эти переменные на mcedit, добавив следующие строки в файл ~/.bashrc:

     ...
     export EDITOR=mcedit
     export VISUAL=mcedit
     ...

По возможности я рекомендую устанавливать эти переменные на vim. Использование редактора vim предпочтительнее потому, что он (а точнее vi) всегда существует на любой Linux/Unix системе. [14]


4.2.6 Программа просмотра в MC

Представляет собой очень интеллектуальную программу. Это великолепный инструмент для поиска слов в документах. Я использую эту возможность для файлов в каталоге /usr/share/doc. Это самый быстрый способ просмотреть множество информации по Линукс. Программа просмотра может быть непосредственно запущена таким образом:

     $ mc -v имя_файла_для_просмотра

4.2.7 Возможности MC по автоматическому запуску программ

Нажмите клавишу Enter на файле и соответствующая программа будет обрабатывать содержимое файла. Это очень удобная возможность MC.

     выполняемый файл:   Выполняет команду
     файл  man, html-страницы:  Направляет содержимое в программу просмотра
     файл tar.gz, deb:  Отображает содержимое файла как подкаталог

Чтобы позволить функционировать этим возможностям просмотра, просматриваемые файлы не должны быть выполняемыми. Изменить их статус можно или через программу chmod или через меню MC.


4.2.8 Виртуальная FTP-файловая система MC

MC можно использовать для доступа через Интернет к файлам, используя протокол FTP. Перейдите в меню, нажав F9, затем нажмите 'p' для активации виртуальной файловой системы FTP (в моей версии MC работает клавиша 'F' - прим. переводчика) . Введите URL в форме имя_пользователя:пароль@имя_хоста.имя_домена, после чего будет осуществлена выборка удаленного каталога, который будет представлен как локальный.

Попробуйте в качестве URL указать http.us.debian.org/debian и просмотреть файловый архив Debian. Смотрите Архивы Debian, раздел 2.1 относительно того, как они (архивы) организованы.


4.3 Традиционная для Unix рабочая среда

Хотя MC позволяет делать Вам практически все, очень важно изучить, как использовать инстументы командной строки, вызываемые из приглашения командного интерпретатора и познакомиться с рабочей средой, традиционной для Unix. [15]


4.3.1 Специальные комбинации клавиш

В традиционной unix-среде существует несколько комбинаций клавиш, которые имеют специальный смысл. [16]

Командный интерпретатор по умолчанию, bash, имеет возможности по хранению истории команд командной строки и tab-completion для повышения интерактивности.

Запомните еще несколько важных комбинаций клавиш:

Чтобы использовать мышь в текстовой консоли Linux, Вам нужно иметь запущенный демон gpm. [18] Смотрите Настройка мыши, раздел 3.3.


4.3.2 Основные команды Unix

Давайте изучим основные команды Unix. [19] Выполните все следующие команды от имени непривелегированного пользователя penguin:

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

     $ man man
     $ man bash
     $ man ls

Также неплохо запустить vim и нажать клавишу F1. Вам нужно прочесть не менее 35 строк. Затем пройдите онлайновый курс обучения, передвинув курсор к |tutor| и нажав Ctrl-]. Смотрите Editors, Глава 11 для дополнительного изучения редакторов.

Пожалуйста заметьте, что многие Unix-команды, включая из GNU и BSD, будут показывать краткую справочную информацию, если Вы вызовете их одним из следующих способов (или, в некоторых случаях, без аргументов вовсе):

     $ имя_команды --help
     $ имя_команды -h

Для самоподготовки также посмотрите примеры из Debian tips, Глава 8.


4.3.3 Выполнение команд

Теперь Вы имеете представление о том, как использовать систему Debian. Давайте внимательно взглянем на механизм выполнения команд в системе Debian. [24]


4.3.4 Простая команда

Простая команда - это последовательность, состоящая из:

  • необязательных присвоений переменных

  • имени команды

  • необязательных аргументов

  • необязательных перенаправлений (> , >> , < , << и пр.)

  • необязательного оператор контроля (&& , || ; <newline> , ; , & , ( , ) )

  • Для более сложных команд с кавычками и заменами смотрите Command-line processing, раздел 13.2.6.


    4.3.5 Выполнение команды и переменные окружения

    Рассмотрим следующую типовую последовательность команд: [25]

         $ date
         Sun Oct 26 08:17:20 CET 2003
         $ LC_ALL=fr_FR date
         dim oct 26 08:17:39 CET 2003
    

    Здесь выполняется программа date. Переменная окружения LC_ALL:

    Обычно при выполнении команд определение переменных окружения отсутствует. Для выше приведенного примера Вы можете сделать и так:

         $ LC_ALL=fr_FR
         $ date
         dim oct 26 08:17:39 CET 2003
    

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

         $ export LC_ALL
    

    4.3.6 Путь поиска команды

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

    В системе Debian по умолчанию переменная окружения PATH у пользовательской учетной записи не включает каталог /sbin. Таким образом, если Вы хотите запускать любые команды вроде ifconfig из каталога /sbin (без указания полного пути к команде - прим. переводчика), Вам нужно дополнить значение переменной PATH каталогом /sbin. Эта переменная обычно устанавливается в стартовом файле ~/.bash_profile, подробнее Конфигурация командного интерпретатора Bash, раздел 3.2.


    4.3.7 Опции командной строки

    Некоторые команды принимают аргументы. Аргументы, начинающиеся с - или --, называются опциями и управляют поведением команды.

         $ date
         Mon Oct 27 23:02:09 CET 2003
         $ date -R
         Mon, 27 Oct 2003 23:02:40 +0100
    

    Здесь аргумент командной строки -R изменяет поведение команды date для вывода строки даты, соответствующей документу RFC-2822.


    4.3.8 Шаблоны имени файла (wildcards) командного интерпретатора

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

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

         $ mkdir junk; cd junk; $ touch 1.txt 2.txt 3.c 4.h .5.txt
         $ echo *.txt
         1.txt 2.txt
         $ echo *
         1.txt 2.txt 3.c 4.h
         $ echo *.[hc]
         3.c 4.h
         $ echo .*
         . .. .5.txt
         $ echo .[^.]*
         .5.txt
         $ echo [^1-3]*
         4.h
         $ cd ..; rmdir junk
    

    4.3.9 Код возврата команды

    Каждая команда возвращает свой статус завершения как код возврата.

    Этот код возврата сразу после завершения команды может быть получен через переменную командного интерпретатора $?.

    Пожалуйста заметьте, что когда код возврата используется в логическом контексте командного интерпретатора, успешное завершение обрабатывается как логическая ИСТИНА. Это некоторым образом нелогично, так как успешное завершение соответствует значению нуль.

    Смотрите также Shell conditionals, раздел 13.2.5.


    4.3.10 Типовые последовательности команд

    Постарайтесь запомнить следующие распространенные способы запуска команд. А после этого посмотрите части Shell parameters, раздел 13.2.3, Shell redirection, раздел 13.2.4, Shell conditionals, раздел 13.2.5 и Command-line processing, раздел 13.2.6.


    4.3.10.1 команда &

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

    Управление фоновыми процессаами осуществляется через встроенные команды: jobs, fg, bg и stop. Пожалуйста изучите man-страницу bash(1) в части описаний "SIGNALS", "JOB CONTROL" и "SHELL BUILTIN COMMANDS". [26]


    4.3.10.2 команда1 | команда2

    Стандартный поток вывода команды команда1 направляется в стандартный поток ввода команды команда2. Обе команды могут выполняться одновременно. Этот механизм называется программным каналом.


    4.3.10.3 команда1 ; команда2

    Команды команда1 и команда2 выполняются последовательно.


    4.3.10.4 команда1 && команда2

    Выполняется команда команда1. Если она завершается успешно, за ней последовательно выполняется команда команда2. Код возврата будет успешным, если обе команды команда1 и команда команда2 завершились успешно.


    4.3.10.5 команда1 || команда2

    Выполнятеся команда команда1. Если она завершается с ошибкой, последовательно запускается команда команда2. Код возврата будет успешным, если хотя бы одна из команд завершилась успешно.


    4.3.10.6 команда > foo

    Перенаправить стандартный поток вывода команды команда в файл foo (с перезаписью файла, если он существует)


    4.3.10.7 команда >> foo

    Перенаправить стандартный поток вывода команды команда в файл foo. (данные добавляются в конец файла)


    4.3.10.8 команда > foo 2>&1

    Перенаправить потоки стандартного вывода и стандартного вывода ошибок команды команда в файл foo.


    4.3.10.9 команда < foo

    Содержимое файла foo направляется в стандартный поток ввода команды команда. Попробуйте следующее:

         $ </etc/motd pager
          ... (приветствие)
         $ pager </etc/motd
          ... (приветствие)
         $ pager /etc/motd
          ... (приветствие)
         $ cat /etc/motd | pager
          ... (приветствие)
    

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


    4.3.11 Псевдоним команды

    Вы можете установить псевдоним для часто используемой команды. Например:

         $ alias la='ls -la'
    

    Теперь la работает как сокращенная форма ls -la, которая выводит список всех файлов в полном формате (лучший вариант был предложен на кулере: alias ls='logout' - прим. переводчика ;-) )

    Вы можете определить точный путь или подлинность команды, используя команду type. Например:

         $ type ls
         ls is hashed (/bin/ls)       информация о ls хэширована (/bin/ls)
         $ type la
         la is aliased to `ls -la'    la - псевдоним `ls -la'
         $ type echo 
         echo is a shell builtin      echo - встроенная команда командного интерпретатора
         $ type file
         file is /usr/bin/file        команда file = /usr/bin/file
    

    Здесь недавно выполнялся поиск команды ls, а команда file искалась в первый раз, поэтому команда ls помечена как "hashed", т.е. командный интерпретатор имеет внутренную запись для быстрого ответа на запрос о месторасположении файла ls.


    4.4 Традиционная для Unix обработка текста

    Существует несколько стандартных инструментов по обработке текста, которые очень часто используются на unix-подобных системах.

    Смотрите Regular-expression substitution, раздел 8.6.12, Script snippets for piping commands, раздел 8.6.17 и Perl short script madness, раздел 8.6.19 на предмет примеров скриптов.


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

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

    Регулярное выражение описывает шаблон соответствия и составляется из символов текста и метасимволов. Метасимвол - это простой символ со специальным смыслом. Существует два основных стиля регулярных выражений, БРВ и РРВ, в зависимости от текстовых инструментов, описанных в Традиционная для Unix обработка текста, раздел 4.4.

    Для РРВ метасимволы включают "\ . [ ] ^ $ * + ? ( ) { } |". Регулярное выражение означает:

    В БРВ метасимволы "+ ? ( ) { } |" теряют свое особое значение, взамен используйте те же символы с обратным слешем впереди "\+ \? \( \) \{ \} \|". Поэтому конструкция с скобками (r1|r2), записанная с использованием БРВ, должна быть в виде \(r1|r2\). Однако программа emacs, использующая БРВ, обрабатывает символы "+ ?" как метасимволы. То есть нет необходимости предворять их обратным слешем. Смотрите Выражения подстановки, раздел 4.4.2, чтобы узнать, как используются конструкции со скобками.

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

         $ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL
                             GNU GENERAL PUBLIC LICENSE
                             GNU GENERAL PUBLIC LICENSE
           Yoyodyne, Inc., hereby disclaims all copyright interest in the program
    

    4.4.2 Выражения подстановки

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

    Для выражений подстановки языка Perl используется конструкция $n вместо \n и символ & не имеет особого значения.

    Например:

         $ echo zzz1abc2efg3hij4 | \
           sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/'
         zzz=1abc2efg3hij4=
         $ echo zzz1abc2efg3hij4 | \
           sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/'
         zzzefg3hij4===1abc
         $ echo zzz1abc2efg3hij4 | \
           perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/'
         zzzefg3hij4===1abc
         $ echo zzz1abc2efg3hij4 | \
           perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=&=/'
         zzz=&=
    

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

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

    Пожалуйста, прочтите все связанные man-страницы для изучения этих команд.


    4.5 Традиционная файловая система Unix

    В системах GNU/Linux и других Unix-подобных операционных системах файлы размещаются в каталогах. [27] Все файлы и каталоги образуют одно большое дерево, иерархическую файловую структуру, корень которой /.

    Эти файлы и каталоги могут располагаться на нескольких устройствах. Команда mount(8) занимается подключением файловой системы, найденной на некотором устройстве в единое дерево файлов. И наоборот, команда unmount(8) отсоединит файловую систему устройства из дерева файлов.


    4.5.1 Основы файлов Unix

    Вот несколько основых положений:

    Хорошо описанные примеры по иерархии файлов есть в документе Стандарт на иерархию файловой системы. Вам же для начала нужно запомнить следующие факты:


    4.5.2 Концепция файловой системы в Debian

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

    Каждый файл, каталог, именованный канал или физическое устройство в системе Debian имеет структуру данных, называющуюся индексным дескриптором (inode), который описывает связанные атрибуты, такие как владелец файла, группа, которая владеет файлом, время последнего доступа к файлу и пр. Точное описание структуры inode в системе Debian GNU/Linux смотрите в документе /usr/include/linux/fs.h.

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

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


    4.5.3 Права доступа к файлам и каталогам

    Права доступа к файлу и каталогу определяются индивидуально для каждой из трех следущих категорий пользователей:

    Для файла соответствующие права доступа позволяют соответственно:

    Для каталога права доступа позволяют соответственно:

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

    Чтобы отобразить информацию о правах доступа (и многую другую) на файлы и каталоги используется программа ls. Смотрите ls(1). Когда программа ls запускается с опцией -l, она показывает следующую информацию в указанном порядке:

    Чтобы изменить владельца файла, используется программа chown, запущенная от имени учетной записи root. Чтобы изменить группу файла, используется программа chgrp, запущенная от имени учетной записи владельца файла или root. Для изменения прав доступа к файлу или каталогу используется программа chmod, запущенная от имени пользователя-владельца файла/каталога или от имени пользователя root. Основной синтаксис работы с файлом-примером foo следующий:

         # chown новый_владелец foo
         # chgrp новая_группа foo 
         # chmod  [ugoa][+-=][rwx][,...] foo
    

    Подробности смотрите в соответствующих man-страницах chown(1), chgrp(1) и chmod(1).

    Например, чтобы для некоторого дерева каталогов задать владельцем пользователя foo и сделать группу bar, владеющей этим деревом, выполните следующие команды от имени пользователя root:

         # cd /некий/каталог/
         # chown -R foo:bar .
         # chmod -R ug+rwX,o=rX .
    

    Существует три бита специальных прав:

    В выводе команде ls -l бит специального права выводится заглавной буквой (S или T), если бит выполнения, который он скрыл собой, не установлен, и наоборот.

    Установка бита set user ID на выполняемый файл позволяет пользователю выполнить этот файл от имени владельца файла (например, root) Подобным образом, установка бита set group ID на выполняемый файл позволяет выполнить данный файл от имени группы, владеющей этим файлом, например, от имени группы root). Так как эти установки могут создать серъезную дыру в безопасности системы, устанавливайте эти биты очень внимательно.

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

    Установка бита sticky bit на каталог предотвращает удаление файлов в каталоге пользователями, ими не владеющими. Для защиты содержимого файла в каталоге, в который разрешена запись всем, например, /tmp, или в каталоге, в который разрешена запись некоторой группе, нужно не только снять право записи в файл, но и установить бит sticky bit на каталог. В противном случае любой пользователь, имеющий право записи в этот каталог, может удалить этот файл и создать новый с тем же именем (и с любым содержимым - прим. переводчика)

    Вот несколько интересных примеров прав на файлы:

         $ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/pppd
         crw-rw----    1 root     dip      108,   0 Jan 18 13:32 /dev/ppp
         -rw-r--r--    1 root     root         1051 Jan 26 08:29 /etc/passwd
         -rw-r-----    1 root     shadow        746 Jan 26 08:29 /etc/shadow
         -rwsr-xr--    1 root     dip        234504 Nov 24 03:58 /usr/sbin/pppd
         $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src
         drwxrwxrwt    4 root     root         4096 Feb  9 16:35 /tmp
         drwxrwsr-x   10 root     staff        4096 Jan 18 13:31 /usr/local
         drwxrwsr-x    3 root     src          4096 Jan 19 08:36 /usr/src
         drwxrwsr-x    2 root     mail         4096 Feb  2 22:19 /var/mail
         drwxrwxrwt    3 root     root         4096 Jan 25 02:48 /var/tmp
    

    В командах chmod(1) существует альтернативный числовой способ описания прав на файлы. Этот числовой способ использует трех-четырехзначные восьмеричные (основание системы счисления = 8) числа. Каждая цифра соответствует:

    Это выглядит сложновато, но на самом деле все очень просто. Если вы посмотрите на первые несколько столбцов (2-10) вывода команды ls -l и проинтерпретируете их как двоичное (с основанием = 2) представление прав на файл ("-" означает "0", а "r", "w", "x" означает "1"), то полученное число, переведенное в восьмеричную систему счисления будет являться восьмеричным представлением прав на файл. [30] Попробуйте для примера:

         $ touch foo bar
         $ chmod u=rw,go=r foo
         $ chmod 644 bar
         $ ls -l foo bar
         -rw-r--r--    1 penguin  penguin  0 Nov  3 23:30  foo
         -rw-r--r--    1 penguin  penguin  0 Nov  3 23:30  bar
    

    Маска прав на файл по умолчанию может быть установлена встроенной командой командного интерпретатора umask. Смотрите страницу builtins(7).


    4.5.4 ВременнЫе метки (Timestamps)

    У файла в системе GNU/Linux cуществует три типа временных метки:

    Заметьте, что ctime не является временем создания файла.

    Обратите внимание, что даже простое чтение файла в системе Debian обычно приводит к операции записи с файлом для обновления временной метки atime в структуре inode. Монтирование файловой системы с опцией noatime позволит системе не делать эту операцию и приведет к повышению скорости чтения. Смотрите страницу mount(8).

    Используйте команду touch(1)для изменения временных меток существующих файлов.


    4.5.5 Ссылки

    Существует два способа связать файл foo с другим именем файла bar.

    Смотрите следующий пример на предмет изменения счетчика ссылок и тонкую разницу в результате команды rm

         $ echo "Исходное содержимое" > foo
         $ ls -l foo
         -rw-r--r--    1 osamu    osamu           4 Feb  9 22:26 foo
         $ ln foo bar     # жесткая ссылка
         $ ln -s foo baz  # символическая ссылка
         $ ls -l foo bar baz
         -rw-r--r--    2 osamu    osamu           4 Feb  9 22:26 bar
         lrwxrwxrwx    1 osamu    osamu           3 Feb  9 22:28 baz -> foo
         -rw-r--r--    2 osamu    osamu           4 Feb  9 22:26 foo
         $ rm foo
         $ echo "Новое содержимое" > foo
         $ cat bar
         Исходное содержимое
         $ cat baz
         Новое содержимое
    

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

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


    4.5.6 Именованные каналы (FIFOs)

    Именованный канал - это файл, которые действует как труба. Вы помещаете что-то в данный файл, и оно выходит с другого конца. Это называется FIFO или First-In-First-Out: то, что первым помещено в канал, первым из него и выходит с другой стороны.

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

    Вы можете изучить, как работает канал, на следующем примере:

         $ cd; mkfifo mypipe
         $ echo "hello" >mypipe & # запустим в фоновом режиме
         [1] 5952
         $ ls -l mypipe
         prw-r--r--    1 penguin penguin  0 2003-11-06 23:18 mypipe
         $ cat mypipe
         hello
         [1]+  Done                    echo hello >mypipe
         $ ls mypipe
         prw-r--r--    1 penguin penguin  0 2003-11-06 23:20 mypipe
         $ rm mypipe
    

    4.5.7 Сокеты

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


    4.5.8 Файлы устройств

    Файлы устройств ссылаются на физические или виртуальные устройства в Вашей системе, такие как жесткий диск, видеокарта, экран или клавиатура. Пример виртуальнго устройства - консоль, представленная файлом устройства /dev/console.

    Существует два типа устройств:

    Вы можете читать или записывать в файл устройства, хотя сам файл содержит двоичные данные, не очень понятные человеку. Запись данных непосредственно в такие файлы иногда полезны для решения проблем подключений оборудования. Например, Вы можете вывести текстовый файл в принтерный файл устройства /dev/lp0 или послать команды модему в соответствующий файл устройства последовательного порта /dev/ttyS0. Но делайте это аккуратно, так как это может привести к серъезным последствиям. Будьте осторожны.


    4.5.8.1 /dev/null и прочее.

    Файл /dev/null - это специальный файл устройства, который обрасывает все то, что Вы в него записываете. Если Вам что-то не нужно, направьте это в /dev/null. Это в сущности бездонная яма. Если же Вы читаете файл /dev/null, то сразу получите символ конца файла (EOF).

    Файл /dev/zero очень похож, но только если Вы читате его, то получите символ \0 (это не тоже самое, что ASCII-код цифры ноль). Смотрите Dummy files, раздел 8.6.33.


    4.5.8.2 Номер устройства

    Номер устройства отображается при выполнении команды ls:

         $ ls -l /dev/hda /dev/ttyS0 /dev/zero
         brw-rw----    1 root     disk       3,   0 Mar 14  2002 /dev/hda
         crw-rw----    1 root     dialout    4,  64 Nov 15 09:51 /dev/ttyS0
         crw-rw-rw-    1 root     root       1,   5 Aug 31 03:03 /dev/zero
    

    Здесь

    В системах постарше процесс установки создавал файлы устройств при помощи команды /sbin/MAKEDEV. Смотрите MAKEDEV(8).

    В более новых системах файловая система в /dev автоматически наполняется при помощи файловой системы устройств, как это делается, например, в /proc.


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

    Файловая система /proc - это псевдо-файловая система, содержащая информацию о системе и работающих процессах.

    Часто пугаются того, что один файл в этой файловой системе /proc/kcore очень большого размера. Он содержит копию (более или менее) оперативной памяти Вашего компьютера и используется для отладки ядра. Поскольку фактически он нигде не существует, то и не беспокойтесь о его размере.

    Смотрите раздел Tuning the kernel through the proc filesystem, раздел 7.3 и страницу proc(5).


    4.6 Система X Window System

    Смотрите X, раздел 9.4.


    4.6.1 Запуск системы the X Window System

    Система X Window System может быть запущена автоматически при помощи специального графического демона входа навроде xdm или через ввод команды в консоли:

         $ exec startx
    

    4.6.2 Меню в системе X Window System

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

    Если Вы не нашли нужный элемент в меню, установите требуемые пакеты. Смотрите раздел Основы управления пакетами в Debian, раздел 6.2.


    4.6.3 Клавиатурные комбинации клавиш в системе X Window System

    Запомните следующие важные при работе в системе X Window System комбинации клавиш:


    4.7 Для дальнейшего изучения

    На этот момент я рекомендую Вам прочесть ключевые руководства из раздела Проекта документации Linux: Руководства:

    Дополнительную информацию смотрите в разделе Support for Debian, Глава 15.


    [ назад ] [ Содержание ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ вперед ]


    Справочник по Debian

    CVS, Чтв 18. Янв 2007, 11:54:11 UTC

    Osamu Aoki osamu#at#debian.org
    Перевод Ильи В. Головко qref#at#yandex.ru
    Authors, раздел A.1