1 авг. 2008 г.

Удаленное управление Linux-сервером по протоколу SSH

Изначально UNIX-системы проектировались для многопользовательской работы. Для обеспечения удаленного доступа к ПК служит целый ряд приложений и протоколов — наиболее известными в Linux-системах являются rlogin, rsh, rcp и telnet. Многие годы они исправно справлялись со своими задачами, но в условиях стремительного роста Сети их применение стало создавать серьезную угрозу для безопасности. Работа подобных программ оставляет злоумышленнику множество путей для перехвата и анализа рабочего трафика и использования полученных данных с недобрым умыслом или в корыстных целях.
Для обеспечения достаточного уровня безопасности был разработан SSH (Secure Shell) — так называется и набор программ, необходимых для входа на удаленный компьютер, исполнения команд и перемещения файлов между машинами, и задействованный в нем протокол. SSH обеспечивает высокий уровень аутентификации и безопасности передачи данных при использовании незащищенных каналов. Появившись в 1995 году, SSH завоевал доверие пользователей и стал очень популярным, в настоящее время он рассматривается как проект стандарта Интернет. Фактически SSH уже негласно завоевал статус стандарта Интернет на безопасные терминальные соединения. На данный момент существуют две реализации протокола SSH — SSH1 и SSH2. Правда, применение SSH1 не рекомендуется по причине подверженности атакам типа man-in-the-middle (временная подмена сервера).
Сегодня известно множество типов атак и способов перехвата секретных данных.

PSTAT

pstat - Сообщает системную информацию.

СИНТАКСИС

pstat [ -aixpf ] [ -u ubase ] [ -c corefile ] [ -n namelist ] [file ]


ОПИСАНИЕ
Команда pstat интерпретирует содержание определенных системных таблиц, команда pstat выполняет поиск этих таблиц в файле /dev /mem и /dev/kmem. Если задан файл (аргумент file), то таблицы прежде разыскиваются в описанном файле, а затем в /dev/mem. Аналогично, опция -с позволяет вам указать для поиска файл corefile, в котором таблицы будут разыскиваться раньше, чем в /dev/mem. Необходимый список имен берется из файла /xenix. Доступны следующие опции:

-a
Под действием опции -p описывает в первую очередь все сегменты процессов, а не процессы, которые уже действуют.


Samba: настройка Windows-клиента

Прежде чем ввести компьютер в созданный домен, необходимо (для ОС Windows 2000/XP/2003 Server) изменить параметры входа в домен. Под этим подразумевается, что мы отключим некоторые ключи, использующиеся для задания специального доверительного общения между доменом, сделанным на базе ОС Windows, и Windows-клиентом. Для упрощения этого процесса создадим файл domain_fix.reg следующего содержания:
REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]
"requiresignorseal"=dword:00000000
"requirestrongkey"=dword:00000000
"sealsecurechannel"=dword:00000001
"signsecurechannel"=dword:00000001

Samba: графический интерфейс управления

Этот интерфейс называется swat, он является так называемым веб-интерфейсом (то есть его можно использовать на любом компьютере, имеющем веб-браузер). Для активации доступа к этой службе необходимо создать в каталоге /etc/xinetd.d файл swat следующего содержания:
service swat
{
port   = 901
socket-type = stream
wait   = no
only_from =                          администратора>
user   = root
server = /usr/bin/swat
log_on_failure += USERID
disable  = no
}
После этого перезапускаем службу xinetd:
# /etc/init.d/xinetd restart

Samba: приступаем к настройке

Для начала определимся со структурой каталогов на разделе /FileServer - для примера рассмотрим такой вариант:
/FileServer/etc Папка будет содержать файлы конфигурации Samba
/FileServer/netlogon Папка для скриптов входа в домен
/FileServer/otdel_1 Папка 1 отдела
/FileServer/otdel_N Папка N отдела
/FileServer/Public Общий для всех отделов ресурс
Соответственно, в основном файле конфигурации /etc/samba/smb.conf прописываем:
include=/FileServer/etc/smb.global
include=/FileServer/etc/%U.conf
- то есть мы будет управлять каждым пользователем отдельно. Такое управление выбрано как более гибкое, нежели управление группами пользователей, потому что оно позволяет более жестко контролировать отдельных пользователей в случае необходимости в таком контроле. В обычный ситуации я создаю один конфигурационный файл для всей группы, а для отдельных пользователей делаю на него symlink ("мягкую" ссылку на файл) по имени пользователя.

Samba: установка

Все операции проводим под авторизацией root (администратора системы).
Распакуем пакет samba-2.2.5.tar.gz в каталог /usr/src/redhat/SOURCES:
# cat samba-2.2.5.tar.gz | gzip -d | tar xvpf -
Теперь установим поддержку "сетевой корзины". Зачем нужна "сетевая корзина"? Все операционные системы, имеющие GUI, предоставляют пользователям (в той или иной мере) так называемую "корзину", которая служит для временного хранения файлов, удаленных пользователем на своей рабочей станции. При работе в сети эти функции обычно недоступны для сетевых ресурсов, поэтому администраторам системы приходиться делать периодический BackUp файлов пользователей. Но это перестает быть эффективным, если удаленный файл не был сохранен с помощью программ, организующих BackUp. Именно для такого случая и нужна "сетевая корзина".

Samba: организация дисковых разделов

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

/boot 100M Загрузочный раздел
/ 3.5G Корень системы с не выделенным /home /usr
/tmp 2G Раздел для временных файлов
swap 1G Раздел виртуальной памяти
/var 6G Раздел для рабочих данных системных программ и ведения логических журналов программ
/install 5.3G Раздел с инсталляционным ПО и драйверами для машин пользователей
/FileServer 40.6G Раздел файлового сервера
/Vol 17G Раздел хранения в архивном виде данных пользователей

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

/etc: Конфигурационные файлы

/etc - это один из самых жизненно важных каталогов систем UNIX®, потому что он содержит все конфигурационные файлы системы, индивидуальные для каждого хоста. Никогда не удаляйте его для освобождения дискового пространства! Более того, если вы желаете разнести структуру вашего дерева на несколько разделов, запомните, что /etc не должен быть помещен на отдельный раздел: он необходим для инициализации системы и при загрузке должен находится на загрузочном разделе.

Вот некоторые важные файлы:

  • passwd и shadow: это два текстовых файла, в которых хранятся все пользователи системы и их зашифрованные пароли. Вы увидите только файл shadow, если используются теневые пароли, что по соображениям безопасности является опцией установки по умолчанию.

  • inittab: это конфигурационный файл для команды init, которая играет основную роль в загрузке системы. Пожалуйста, обратитесь к ???.

  • services: этот файл содержит список существующих сетевых служб.

  • profile: это конфигурационный файл shell'а, хотя отдельные shells используют другие файлы. Например, bash использует файл .bashrc.

  • crontab: конфигурационный файл для cron - программы, отвечающей за периодическое выполнение программ.

Для программ, которым требуется большое число конфигурационных файлов, существуют отдельные подкаталоги. Это относится, например, к X Window System, которая хранит все свои файлы настроек в каталоге /etc/X11.

/var: Изменяемые при использовании данные

Каталог /var содержит все рабочие данные для запущенных в системе программ. В отличие от рабочих данных каталога /tmp, эти данные должны остаться нетронутыми в случае перезагрузки. В нем имеется много подкаталогов, вот некоторые из наиболее полезных:
  • /var/log: содержит системные файлы журналов, которые вы можете читать для выявления неисправностей в своей системе (/var/log/messages и /var/log/kernel/errors, но только до второго имени типа *.0).

  • /var/run: используется для слежения за всеми процессами, используемыми системой с момента ее загрузки, позволяя вам выполнять над ними действия в случае изменения runlevel'а системы (см. Глава 11, Загрузочные файлы: init sysv).

  • /var/spool: содержит рабочие файлы системы, ожидающие определенных действий или обработки. Например, /var/spool/cups содержит рабочие файлы сервера печати, а /var/spool/mail хранит рабочие файлы почтового сервера (например, всю входящую и исходящую почту вашей системы).

/usr: просто Большой каталог

Каталог /usr является главным каталогом для хранения приложений. Все бинарные файлы в этом каталоге не требуются для загрузки или обслуживания системы, поэтому иерархия /usr может, а часто так и есть, размещаться на отдельной файловой системе. Вследствие его (обычно) большого размера, /usr имеет свою собственную иерархию подкаталогов. Мы затронем только несколько из них:

  • /usr/X11R6: полная иерархия X Window System . Все бинарные файлы и библиотеки, необходимые для работы X (включая X-серверы) должны находиться здесь. Каталог /usr/X11R6/lib/X11 содержит все аспекты конфигурации X, которые являются общими для разных компьютеров. Индивидуальные конфигурации для каждого компьютера должны помещаться в /etc/X11;

  • /usr/bin: содержит значительное большинство системных бинарных файлов. Любая бинарная программа, не являющаяся необходимой для обслуживания системы, и не предназначенная для системного администрирования, должна находиться в этом каталоге. Единственным исключением являются программы, которые вы самостоятельно компилируете и устанавливаете; они должны помещаться в /usr/local;

  • /usr/lib: содержит все библиотеки, необходимые для запуска программ, находящихся в /usr/bin и /usr/sbin. Имеется также символическая ссылка /usr/lib/X11, указывающая на /usr/X11R6/lib - каталог, содержащий библиотеки X Window System (но только, если установлен X); [18].

  • /usr/local: это место, куда вы должны устанавливать любые приложения, копилируемые вами из исходных кодов. Программа установки должна будет создать необходимую иерархию.

  • /usr/share: содержит все аппаратно-независимые данные в режиме только для чтения, необходимые для приложений из /usr. Среди всего прочего вы найдете в нем информацию с часовыми поясами и региональными стандартами (локалями) (zoneinfo и locale).

Также следует упомянуть каталоги /usr/share/doc и /usr/share/man, которые соответственно содержат документацию к приложениями и системные страницы руководств.

Корневой каталог: /

В корневом каталоге (root) содержится вся иерархия системы. Он не может быть классифицирован, т.к. его подкаталоги могут быть статическими или разделяемыми. Вот список главных каталогов и подкаталогов с их классификациями:
  • /bin: важнейшие бинарные файлы. Он содержит базовые команды, которые могут использоваться всеми пользователями, и которые являются необходимыми для работы системы: ls, cp, login и др. Статический, неразделяемый.
  • /boot: содержит файлы, необходимые для начального загрузчика GNU/Linux (GRUB или LILO для Intel, yaboot для PPC и т.п.). В нем может находится ядро, но если ядро в этом каталоге отсутствует, тогда оно должно быть в корневом каталоге. Статический, неразделяемый.
  • /dev: файлы системных устройств (dev от англ. DEVices). Некоторые файлы, находящиеся в /dev, являются обязательными, такие как /dev/null, /dev/zero и /dev/tty. Статический, неразделяемый.
  • /etc: содержит все конфигурационные файлы этого компьютера. Этот каталог не может содержать бинарные файлы. Статический, неразделяемый.

nice, renice: приоритеты процессов

renice
Если один или несколько процессов используют слишком много ресурсов системы, вы можете изменить их приоритеты вместо того, чтобы убивать их. Для этого используется команда renice. Ее синтаксис:
renice приоритет [[-p] pid ...] [[-g] pgrp ...] [[-u] пользователь ...]
Где приоритет - значение приоритета, pid - идентификатор процесса (используйте опцию -p для указания нескольких процессов), pgrp - идентификатор группы процесса (если их несколько, используйте -g) и user - имя пользователя, владеющего процессом (-u для нескольких пользователей).
Давайте представим, что вы запустили процесс с PID 785, который выполняет длительные научные вычисления, а пока он работает, вы хотели бы немного расслабится и поиграть, для чего вам нужно освободить немного системных ресурсов. Тогда вы можете набрать:
$ renice +15 785
В этом случае выполнение вашего процесса потенциально может занять больше времени, однако он не будет забирать процессорное время у других процессов.

top: объединение ps и kill

top - это программа, одновременно совмещающая функции ps и kill, а также используемая для наблюдения за процессами в режиме реального времени, предоставляя информацию об использовании процессора и памяти, времени работы и т.п., как показано на Рисунок 6.1, «Наблюдение за процессами при помощи top».

Рисунок 6.1. Наблюдение за процессами при помощи top

Наблюдение за процессами при помощи top

Утилита top полностью управляется с клавиатуры. Вы можете получить справку, нажав на клавишу h. Наиболее полезные команды:

  • k: эта команда используется для отправки сигнала процессу. При этом top спросит у вас PID процесса, а затем номер или название отправляемого сигнала (по умолчанию используется TERM — или 15 —);

  • M: эта команда используется для сортировки процессов по объёму занятой ими памяти (поле %MEM);

  • P: эта команда используется для сортировки процессов по занятому ими времени CPU (поле %CPU; этот метод используется для сортировки по умолчанию);

  • u: эта команда используется для вывода процессов заданного пользователя, имя которого top у вас спросит. Вам необходимо ввести имя пользователя, а не его UID. Если вы не введете никакого имени, будут показаны все процессы;

  • i: по умолчанию выводятся все процессы, даже спящие. Эта команда обеспечивает вывод только о работающих в данный момент процессах (процессы, у которых поле STAT имеет значение R, Running). Повторное использование этой команды вернёт вас назад к списку всех процессов.

  • r: эта команда используется для изменения приоритета выбранного процесса.

kill, killall

Эти две команды используются для отправки сигналов процессам. Для команды kill требуется номер процесса в качестве аргумента, а для killall требуется имя процесса.

Обе эти команды допускают опциональное использование аргумента с номером сигнала, отправляемого процессу. По умолчанию они обе отправляют соответствующим процессам сигнал 15 (TERM). Например, если вам надо убить процесс с PID 785, используйте команду:

$ kill 785

Если вам нужно отправить ему сигнал 19 (STOP), введите:

$ kill -19 785

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

$ killall -9 mozilla

В любом случае вы убьёте только свои собственные процессы (только если вы не root), поэтому вам не стоит волноваться о процессах ваших «соседей», если работаете в многопользовательской системе, так как на них это не повлияет.

ps: информация о процессах

Запуск ps без аргументов покажет только те процессы, что были запущены вами, и которые привязаны к используемому вами терминалу:

$ ps
      PID TTY          TIME CMD
    18614 pts/3    00:00:00 bash
    20173 pts/3    00:00:00 ps
Как и многие утилиты UNIX®, ps обладает рядом полезных опций, наиболее общими из которых являются:
  • a: выводит процессы, запущенные другими пользователями;
  • x: выводит процессы без управляющего терминала или с управляющим терминалом, но отличающимся от используемого вами;
  • u: выводит для каждого из процессов имя запустившего его пользователя и время запуска.

at: Выполнение команды по расписанию один раз

Возможно, вы хотели бы выполнить какую-нибудь команду в определённый день, но не регулярно. Например, вам нужно напомнить себе о сегодняшней встрече в 18:00. Вы работаете в X, у вас установлен пакет X11R6-contrib и вы хотели бы получить напоминание, скажем, в 17:30 о том, что пора выходить. Тогда at - это то, что вам нужно:
$ at 17:30
 # Теперь перед вами приглашение "at"
at> xmessage "Пора идти! Встреча в 18:00"
 # Нажмите CTRL-d для выхода
at> 
$

crontab: запуск команд по расписанию

crontab - это команда, которая позволяет вам периодически выполнять команды через определенные промежутки времени с тем преимуществом, что вам нет необходимости входить в систему. crontab отправит вам письмо с отчетом о выполнении вашей команды. Вы можете указывать интервалы в минутах, часах, днях и даже месяцах. В зависимости от указанных опций, crontab будет работать по-разному:
  • -l: Вывод вашего текущего файла crontab.
  • -e: Редактирование вашего файла crontab.
  • -r: Удаление вашего текущего файла crontab.
  • -u <пользователь>: Применение одной из перечисленных выше опций для <пользователя>. Это может сделать только root.

sort: Сортировка содержимого файла

Ниже представлен синтаксис этой можно утилиты для сортировки[16]:
sort [опции] [файл(ы)]
Давайте отсортируем часть файла /etc/passwd. Как видите сам по себе этот файл не отсортирован:

$ cat /etc/passwd
Если нам нужно отсортировать его по полю login, мы набираем:

$ sort /etc/passwd
По умолчанию команда sort сортирует информацию по первому полю в порядке возрастания (в нашем случае по полю login). Если нам нужно отсортировать данные в порядке убывания, мы используем опцию -r:

$ sort -r /etc/passwd

Vi



Основные команды vi

Команды Выполняемые функции
TERM=terminal_name
export TERM
Установка конфигурации терминала
tput init Инициализировать терминал как terminal_name
vi filename Вызов редактора vi для редактирования файла filename
a Добавить текст после курсора
h Перемещает курсор на один символ влево
j Перемещает курсор вниз на одну строку
k Перемещает курсор вверх на одну строку
l Перемещает курсор на один символ вправо
x Удалить символ
Возврат каретки
Перейти из режима ввода в командный режим
:w Записать в файл
:q Завершить работу с редактором
:wq Записать буфер в файл и завершить работу с редактором vi
ZZ Записать изменения в файл и завершить работу с vi



Emacs

Emacs - это, вероятно, самый мощный текстовый редактор из всех существующих. Он может делать абсолютно все, и неограниченно расширяется, благодаря своему встроенному языку программирования на базе lisp. С помощью Emacs вы можете бродить по вебу, читать почту, принимать участие в группах новостей Usenet, готовить кофе и т.п. Это не значит, что из этой главы вы узнаете, как все это делается, однако вы получите хорошие начальные знания о том, как запустить Emacs, отредактировать один или несколько файлов, сохранить их и выйти из Emacs.

Если после прочтения этого, вы захотите более подробно изучить Emacs, вы можете заглянуть сюда Tutorial Introduction to GNU Emacs.
Краткое представление

Запускается Emacs следующим образом:

emacs [файл] [файл...]


Перенаправления

Например, представьте себе, что вам надо получить список файлов, оканчивающихся на .png [6] в каталоге images. Этот список очень длинный, поэтому у вас может возникнуть желание сохранить его в файл для того, чтобы просмотреть его позже. Вы можете ввести следующую команду:
$ ls images/*.png 1>file_list
Это означает, что стандартный вывод этой команды (1) перенаправляется (>) в файл с именем file_list. Оператор > - это оператор перенаправления вывода. Если файл для перенаправления не существует, он будет создан, но если он существует, его предыдущее содержимое будет перезаписано. Однако дескриптором по умолчанию, который перенаправляется этим оператором, является стандартный вывод, и поэтому нет необходимости явным образом указывать его в командной строке. Следовательно, вы можете записать команду более упрощенно:

$ ls images/*.png >file_list
и результат при этом будет точно таким же. Затем вы можете просмотреть файл при помощи программы просмотра текстовых файлов, например, less.

Каналы

Каналы (pipes) - это, в некотором роде, комбинирование перенаправлений ввода и вывода. Принцип действия подобен физическому каналу, отсюда и такое название: один процесс отправляет данные в один конец канала, а другой процесс считывает данные на другом конце. Оператор канала - |. Давайте вернемся назад к примеру со списком файлов. Допустим, вам нужно сразу узнать, сколько там соответствующих файлов, но без сохранения списка во временном файле. Тогда вам надо воспользоваться следующей командой:
ls images/*.png | wc -l

которая означает, что стандартный вывод команды ls (т.е. список файлов) перенаправляется на стандартный ввод команды wc. При этом вы получите искомый результат.

Также вы можете сразу составить список файлов «без расширений», воспользовавшись следующей командой:

ls images/*.png | sed -e 's/\.png$//g' >the_list

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

ls images/*.png | sed -e 's/\.png$//g' | less

Действие каналов и перенаправлений не ограничивается только текстом, который может читать человек. Например, следующая команда, выполненная в Terminal'е:

xwd -root | convert - ~/my_desktop.png

отправит снимок вашего рабочего стола в файл my_desktop.png в вашем домашнем каталоге.

chown, chgrp: изменение владельца и группы

Синтаксис команды chown (CHange OWNer - изменить владельца) выглядит следующим образом:
chown [опции] <пользователь[:группа]> <файл|каталог> [файл|каталог...]

Опции включают:

  • -R: рекурсия. Для изменения владельца для всех файлов и подкаталогов в указанном каталоге.

  • -v: подробный режим. Показывает все действия, выполняемые chown; сообщает, у каких файлов были изменены владельцы в результате выполнения команды, а какие файлы остались без изменений.

  • -c: подобна опции -v, но сообщает только о тех файлах, что были изменены.

Несколько примеров:

  • chown nobody /shared/book.tex: изменяет владельца файла /shared/book.tex на nobody.

  • chown -Rc queen:music *.mid concerts/: изменяет владельца всех файлов в текущем каталоге, чьи имена заканчиваются на .mid, и всех файлов и подкаталогов в каталоге concerts/ на пользователя queen и группу music, сообщая только о тех файлах, которые были затронуты командой.

Команда chgrp (CHange GRouP - изменить группу) позволяет вам изменить группу владельца для файла (или файлов); ее синтаксис очень похож на синтаксис команды chown:

chgrp [опции] <группа> <файл|каталог> [файл|каталог...]

Опции для этой команды такие же, как и у chown, и она используется очень похожим способом. Так, команда:

chgrp disk /dev/hd*

изменяет группу владельца всех файлов в каталоге /dev/ с именами, начинающимися с hd, на группу disk.

mkdir: создание каталога

Команда mkdir (MaKe DIRectory - создать каталог) используется для создания каталогов. Ее синтаксис довольно прост:
mkdir [опции] <каталог> [каталог ...]

Только одна опция ничего не стоит: опция -p. Она выполнит два действия:

  1. создаст родительские каталоги, если они не существовали до этого. Без этой опции mkdir просто вызовет сбой, жалуясь на отсутствие заявленных каталогов;

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

Вот несколько примеров:

  • mkdir foo: создает каталог foo в текущем каталоге;

  • mkdir -p images/misc docs: создает каталог misc в каталоге images. Сначала создается последний каталог, если такой не существует (-p); также создается каталог с именем docs в текущем каталоге.

less: Пейджер

Название произошло от игры слов, связанной с первым пейджером из когда-либо использовавшихся в UNIX® с именем more (more - больше; less - меньше). Пейджер (page - страница) - это программа, которая позволяет пользователю просматривать большие файлы по частями страница за страницей (точнее, экран за экраном). Причина, по которой мы рассматриваем less, а не more, заключается в том, что less более интуитивна. Вам следует использовать less для просмотра больших файлов, которые не умещаются на одном экране. Например:

less /etc/termcap

Для перемещения по этому файлу используйте клавиши вверх и вниз. Для выхода нажмите Q. Возможности less значительно шире: нажмите H для вызова справки с различными доступными опциями.

echo

Все процессы имеют свои переменные окружения, а shell позволяет вам увидеть их непосредственно при помощи команды echo. Некоторые интересные переменные:
  1. HOME: эта переменная окружения содержит строку, представляющую ваш домашний каталог.

  2. PATH: содержит список всех каталогов, в которых shell должен будет искать исполняемые файлы, когда вы набираете команду. Обратите внимание, что в отличие от DOS shell по умолчанию не будет искать команды в текущем каталоге!

  3. USERNAME: эта переменная содержит ваше имя логина.

  4. UID: эта переменная содержит ваш ID пользователя.

  5. PS1: определяет, как будет выглядеть ваше приглашение, и зачастую является комбинацией специальных последовательностей. Для получения дополнительной информации вы можете прочитать страницу руководства bash(1), набрав в терминале man bash.

Чтобы shell вывел значение переменной, вы должны указать перед ее именем знак $. Вот пример с командой echo:

$ echo
Hello
Hello
$ echo $HOME
/home/queen
$ echo $USERNAME
queen
$ echo Hello $USERNAME
Hello queen
$ cd /usr
$ pwd
/usr
$ cd $HOME
$ pwd
/home/queen

Как видите, shell подставляет значение переменной перед выполнением команды. В противном случае наш пример cd $HOME не заработал бы. По сути командный процессор сначала заменил $HOME на ее значение (/home/queen), так что строка стала cd /home/queen, чего мы и добивались. То же самое происходит и с примером echo $USERNAME.

[Tip]Подсказка

Если одна из ваших переменных окружения не существует, вы можете временно их создать, набрав export ИМЯ_ПЕРЕМ_ОКР=значение. После этого вы можете проверить, были ли они созданы:

$ export USERNAME=queen
$ echo $USERNAME queen

Смена графического режима входа в систему на текстовый

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

Войдите в shell. Если вы являетесь обычным пользователем, перейдите в режим суперпользователя root, введя команду

su -

Теперь наберите gedit /etc/inittab для редактирования файла при помощи редактора gedit. Откроется файл /etc/inittab. В начале файла вы увидите раздел, выглядящий примерно так:

# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

Для смены графического режима входа на текстовый необходимо в строке id:5:initdefault: изменить номер с 5 на 3.

[Warning]Внимание

Меняйте только номер стартового уровня!

Измененная строка должна выглядеть так:

id:3:initdefault:

Закончив редактирование, сохраните файл и выйдите из редактора при помощи клавиш [Ctrl]-[x]. Вы увидите сообщение о том, что файл был модифицирован и запрос на подтверждение внесенных изменений. Для подтверждения нажмите [Y].

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

Забытый пароль root

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

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

  1. В меню загрузчика при помощи клавиш со стрелками выберите инсталляцию, которую хотите редактировать, и наберите [A], чтобы попасть в режим append.

  2. Вы увидите командную строку примерно такого вида:

    grub append> ro root=LABEL=/
  3. Нажмите клавишу [Пробел], чтобы добавить пробел, затем введите слово single, чтобы дать команду загрузчику GRUB загрузиться в однопользовательском режиме (single-user Linux mode). В результате вы увидите примерно следующее:

    ro root=LABEL=/ single
  4. Нажмите [Enter] и GRUB загрузит систему в однопользовательском режиме. По окончании загрузки вы увидите строку вида:

    sh-2.05b#
  5. Теперь можно изменить пароль root', введя команду

    passwd root

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

man; хелп

Страницы man могут быть вызваны из оболочки командной строки вводом команды man и следующим за ней именем исполняемого файла (программы). Например, чтобы получить справку о команде ls, введите:
man ls
В разделе ИМЯ (NAME) выводится имя исполняемого файла и краткое объяснение, какие функции он выполняет и для каких целей служит. В разделе ОБЗОР (SYNOPSIS) показан формат вызова приложения, в том числе опции и аргументы (такие как файлы или параметры). В разделе ОПИСАНИЕ (DESCRIPTION) дается подробное описание опций и аргументов. Раздел СМОТРИ ТАКЖЕ (SEE ALSO) содержит термины, файлы и программы, имеющие отношение к данной команде.

vi: текстовый редактор

vi — текстовый редактор командной строки. При запуске vi, как и при запуске less, не открывается новое графическое окно, просмотр и редактирование файла производится в текущем окне терминала. За счет того, что vi может работать и без Графического пользовательского интерфейса (GUI), он может использоваться для редактирования файлов, когда система X Window не работает.

Операции в vi осуществляются путем нажатия определенных клавиш или их комбинаций. В таблице ниже описаны некоторые операции для редактирования текста в vi.

КлавишиДействие
[i] Для перехода в режим вставки нажмите клавишу [i]. Это позволит вносить изменения в файл.
[Esc]Нажатие клавиши [Esc] в любое время отключает режим вставки и включает нормальный режим.
[w][w] записывает в файл изменения. Перейдите в нормальный режим, нажмите [Shift]-[:], [w] и в завершение нажмите [Enter].
[q][q] закрывает vi. Перейдите в нормальный режим, нажмите [Shift]-[:], [q] и в завершение нажмите [Enter]. Чтобы сохранить изменения, не выходя из редактора, введите :wq. Чтобы выйти без сохранения изменений, введите :q!.
[!][!] принуждает vi выполнить команды, стоящие перед восклицательным знаком.

Таблица 10.1. Полезные клавиши vi

В vi существует множество других операций. Узнать о них больше можно, почитав страницы руководства. Для этого введите в командной строке man vi. Вы можете также почитать vim tutorial, введя в командной строке vimtutor.

tar: сжатие файлов

Файл с расширением tar — это набор отдельных файлов и/или каталогов в одном файле. Это бывает удобно при создании резервных копий и архивов.
Вот некоторые опции, используемые с командой tar:
  • -c — создать новый архив
  • -f — в сочетании с опцией -c используется для создания файла tar из указанного файла; в сочетании с опцией -x используется для разархивирования указанного файла
  • -t — показать список файлов в файле tar
  • -v — показывать ход выполнения процесса архивирования
  • -x — извлечь файлы из архива
  • -z — сжать файл tar с помощью программы gzip
  • -j — сжать файл tar с помощью программы bzip2

zip: сжатие файлов

Чтобы сжать файл с помощью команды zip, наберите в командной строке:

zip -r имя_файла.zip каталог

В этом примере имя_файла.zip — создаваемый вами файл, а каталог — каталог, который будет помещен в новый zip-файл. Опция -r указывает, что все файлы из каталога каталог будут включены рекурсивно.

Чтобы извлечь содержимое файла zip, наберите в командной строке:

unzip имя_файла.zip

Программа zip может быть использована для сжатия нескольких файлов и каталогов одновременно. Для этого перечислите их, разделив пробелами:

zip -r имя_файла.zip файл1 файл2 файл3 /usr/user/docs/ 

В этом примере файлы файл1, файл2, файл3 и содержимое каталога /usr/user/docs/ сжимаются и помещаются в файл имя_файла.zip.

[Tip]Подсказка

Для получения более подробной информации наберите в командной строке man zip и man unzip и прочтите страницы руководства zip и unzip.

Gzip: сжатие фалов

Для сжатия файлов с помощью команды gzip наберите в командной строке:

gzip имя_файла

Файл будет сжат и сохранен под именем имя_файла.gz.

Для декомпрессии сжатого файла наберите в командной строке:

gunzip имя_файла.gz

Сжатый файл имя_файла.gz будет заменен файлом имя_файла.

Программа gzip может быть использована для сжатия нескольких файлов и каталогов одновременно. Для этого перечислите их, разделив пробелами:

gzip -r имя_файла.gz файл1 файл2 файл3 /usr/user/docs/ 

В этом примере файлы файл1, файл2, файл3 и содержимое каталога /usr/user/docs/ сжимаются и помещаются в файл с именем имя_файла.gz.

[Tip]Подсказка

Для получения более подробной информации наберите в командной строке man gzip и man gunzip и прочтите страницы руководства gzip и gunzip.

Bzip2: сжатие файлов

Чтобы сжать файл с помощью bzip2, наберите в командной строке:

bzip2 имя_файла

Файл будет сжат и сохранен под именем имя_файла.bz2.

Для декомпрессии сжатого файла воспользуйтесь командой:

bunzip2 имя_файла.bz2

Сжатый файл имя_файла.bz2 будет заменен файлом имя_файла.

Программа bzip2 может быть использована для сжатия нескольких файлов и каталогов одновременно. Для этого перечислите их, разделив пробелами:

bzip2 имя_файла.bz2 файл1 файл2 файл3 /usr/user/docs/

В этом примере файлы файл1, файл2, файл3 и содержимое каталога /usr/user/docs/ сжимаются и помещаются в файл имя_файла.bz2.
[Tip] Подсказка

Для получения более подробной информации наберите в командной строке man bzip2 и man bunzip2 и прочтите страницы руководства bzip2 и bunzip2.

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



Помните сокращенный вариант записи аргументов команды chmod? Рассмотрим теперь другой способ изменения прав доступа. На первый взгляд он выглядит более сложным.
Вернем первоначальные права доступа к файлу example1.txt:
-rw-rw-r--  1 user user 42 Мар 24 22:07 example1.txt
Каждый тип прав доступа может быть представлен в цифровом виде:
  • r = 4
  • w = 2
  • x = 1
  • - = 0
Для установки определенных прав доступа используется сумма этих значений. Например, если вы хотите дать право на чтение и запись, необходимо использовать число 6, так как 4 (чтение) + 2 (запись) = 6.
Вот цифровой эквивалент прав доступа для файла example1.txt:
-  (rw-)   (rw-)  (r--)
    |       |      |
  4+2+0   4+2+0  4+0+0

chmod: изменение прав доступа

Команда chmod (CHange MODe - изменить режим) имеет весьма специфический синтаксис. Синтаксис в общем случае:
chmod [опции] <изменение режима> <файл|каталог> [файл|каталог...]
но чем она характеризуется, так это тем, что изменение режима может принимать разные формы. Оно может быть указано двумя способами:
  1. в виде восьмеричного числа. Разрешения владельца при этом соответствуют числам в виде 00, где соответствует назначаемому разрешению: 4 на чтение, 2 на запись и 1 на выполнение. Аналогично, разрешения группы владельца принимают вид 0, а разрешения для «остальных» - . Затем, все что вам нужно сделать - так это найти сумму назначаемых разрешений, чтобы получить нужный режим. Так, разрешения rwxr-xr-- соответствуют 400+200+100 (разрешения для владельца, rwx) +40+10 (разрешения для группы, r-x) +4 (разрешения для остальных, r--) = 754; таким образом, разрешения выражаются через свободные члены. Это значит, что предыдущие разрешения безусловно заменяются;
  2. при помощи выражений. При этом разрешения выражаются через последовательность выражений, разделенных запятыми. Отсюда выражение принимает следующий вид: [категория]<+|-|=><разрешения>.


Права доступа и владельцы

Несколько раньше была описана ситуация, когда при попытке перейти в домашний каталог суперпользователя система выдавала следующее сообщение:
bash: cd: /root/: Permission denied
Это была демонстрация одного из способов защиты системы в Linux. Linux, как и UNIX, является многопользовательской системой и разрешение доступа к файлам — это один из способов ее защиты от злонамеренного вмешательства.
Как мы рассказывали ранее, один из способов получения доступа к требуемому файлу или каталогу, в доступе к которому вам отказано, — ввести в командной строке su -. Человек, знающий пароль суперпользователя, имеет доступ ко всему.
Но переход к профилю суперпользователя не всегда удобен и не может быть рекомендован, так как всегда существует возможность сделать ошибку и изменить важный конфигурационный файл.
Все файлы и каталоги «находятся в собственности» пользователя, который их создал. Ранее вы создавали файл example1.txt в вашем домашнем каталоге, таким образом вы являетесь владельцем файла example1.txt.
Это означает, что вы можете указать, кому разрешено читать этот файл, кто может записывать текст в этот файл, или (если это программа, а не текстовый файл) кто может запускать его на исполнение.

Одновременный запуск нескольких команд

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

Предположим, вы скачали файл с названием foobar-1.3-2.i386.rpm и хотите положить его в новый каталог с названием rpms/ внутри вашего домашнего каталога, но этот подкаталог вами еще не создан. Вы можете скомбинировать создание подкаталога rpms/ и перемещение туда указанного файла, введя в командной строке:

mkdir rpms/; mv foobar-1.3-2.i386.rpm rpms/

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

grep: Поиск строк в файлах

Ни имя команды, ни ее аббревиатура (“General Regular Expression Parser” - синтаксический анализатор общих регулярных выражений) не слишком интуитивны, но ее действие и ее использование довольно просты для понимания: grep выполняет поиск в одном или нескольких файлах по шаблону, заданному в качестве аргумента. Ее синтаксис:
grep [опции] <шаблон> [один или более файлов]
Если указано несколько файлов, в отображаемом результате их имена будут выводиться перед каждой найденной строкой. Для предотвращения вывода этих имен используйте опцию -h; используйте опцию -l для вывода только имен файлов с найденными совпадениями. Шаблон - это регулярное выражение, хотя в большинстве случаев он состоит просто из одного слова. Наиболее часто используемые опции:
  • -i: поиск без учета регистра (т.е. игнорирование разницы между верхним и нижним регистром);
  • -v: обратный поиск. Вывод строк, которые не соответствуют шаблону;
  • -n: вывод номера строки для каждой из найденных строк;
  • -w: сообщает grep'у, что шаблон должен совпадать со всем словом.

tail

Команда, обратная по действию команде headtail. Используя программу tail, вы можете увидеть последние десять строк файла. Это может оказаться полезным, если, например, вы хотите просмотреть последние строки файла журнала системных сообщений. Также при помощи программы tail можно наблюдать за изменением журнала. При использовании ключа -f программа tail автоматически выводит новые строки открытого файла на экран в реальном времени. Например, чтобы просматривать файл /var/log/messages в реальном времени, введите в командной строке следующую команду (при этом вам надо быть суперпользователем, так как вы просматриваете системный файл):

tail -f /var/log/messages

Вы можете использовать опцию -n для вывода последних N строк файла.
Например, для вывода последних 2-х строк наберите:# tail -n2 /var/log/mail/info

head

Вы можете воспользоваться командой head, чтобы просмотреть начало файла. Формат вызова команды таков:

head <имя_файла>

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

head -20 <имя_файла>

cat: управление файлами

позволяет сливать несколько файлов в один и называется cat, сокращение от concatenate.
Кроме того, при помощи команды cat можно вывести на экран содержимое указанного файла. Для этого введите
cat <имя_файла>
Если указанный файл очень длинный, его содержимое быстро промелькнет по экрану. Чтобы предотвратить быструю прокрутку, введите
cat <имя_файла> | less
В этом примере команда cat соединена каналом (|) с командой less, что позволяет вывести содержимое файла постранично. Используйте клавиши со стрелками, чтобы листать страницы вперед и назад.

Очистка и реинициализация терминала

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

Попробуйте ввести в командной строке команду clear. Команда clear делает именно то, что подразумевает ее название: она очищает окно терминала.

[Tip]Подсказка

Для очистки окна терминала также можно воспользоваться сочетанием клавиш [Ctrl]-[L]. Чтобы больше узнать об используемых в Scientific Linux комбинациях клавиш, обратитесь к Прил. F, Комбинации клавиш.

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

В таком случае надо ввести команду reset, чтобы восстановить исходные параметры окна терминала.

Расширения файлов

Сжатые и архивные файлы

  • .bz2 — файл, сжатый при помощи bzip2
  • .gz — файл, сжатый при помощи gzip
  • .tar — файл, заархивированный при помощи tar (сокращение от tape archive), также известный как tar файл
  • .tbz — файл, заархивированный tar и сжатый bzip
  • .tgz — файл, заархивированный tar и сжатый gzip
  • .zip — файл, сжатый при помощи алгоритма сжатия ZIP, обычно используемого приложениями MS-DOS. Для Linux более привычен алгоритм сжатия gzip, так что архивы .zip в Linux достаточно редки

whatis: поиск файлов

Команда whatis имеет следующий формат:

whatis команда

Эта команда показывает информацию о команде из ее man-страницы.

Команда

whatis lp

покажет

lp          (4) - line printer devices
lp(lp-cups) (1) - print files
[Note]Замечание

Если необходимо навести справки о назначении какой-либо команды, использование whatis до обращения к man-странице может сэкономить время.

whereis: поиск файлов

Команда whereis имеет следующий формат:

whereis команда

Команда

whereis find

покажет положение бинарного файла, исходников и man-страницы команды find:

find: /usr/bin/find /usr/share/man/man1p/find.1p.gz /usr/share/man/man1/find.1.gz

which: поиск файлов

Команда which имеет следующий формат:

which команда

which показывает положение бинарных, или исполняемых файлов. Вывод команды which может быть полезен при создании кнопки запуска приложения. Эта процедура описана в Разд. 2.2.1, Добавление кнопки запуска приложения.

Команда

which gedit

покажет /usr/bin/gedit.

locate: поиск файлов

С помощью этой команды вы можете увидеть все файлы или каталоги, названия которых содержат искомый образец. Например, для поиска файла, содержащего в названии слово dog, введите в командной строке:
locate dog
Команда locate использует базу данных для определения местонахождения файлов или каталогов, содержащих в названии слово dog. Результаты поиска могут включать файл с названием dog, файл с названием bulldog.txt, каталог с названием /dogs/ и так далее. Чтобы узнать больше о команде locate, обратитесь к ее man-странице (введите в командной строке man locate).
При условии, что база данных обновлена, команда locate осуществляет поиск очень быстро. Обновление базы данных команды locate происходит каждую ночь при помощи службы cron. cron — это небольшая программа, которая запускается в фоновом режиме и выполняет различные задачи (такие как обновление базы данных команды locate) через определенные промежутки времени.

find: поиск файлов

find - это одна из старейших утилит UNIX®. Она предназначена для рекурсивного сканирования одного или нескольких каталогов и поиска в них файлов, соответствующих определённому набору критериев. При всей своей полезности её синтаксис не слишком понятен, и для её использования требуется некоторая практика. Общий синтаксис:
find [опции] [каталоги] [критерий] [действие]
Если вы не укажете ни одного каталога, find будет выполнять поиск в текущем каталоге. Если вы не укажете критерии, это будет эквивалентно “истине”, т.е. будут найдены все файлы. Опции, критерии и действия настолько многочисленны, что мы здесь упомянем только некоторые из них. Давайте начнем с опций:
  • -xdev: не искать в каталогах, находящихся в других файловых системах.
  • -mindepth : спускаться при поиске файлов как минимум на n уровней ниже указанного каталога.
  • -maxdepth : искать файлы не ниже n уровней относительно указанного каталога.
  • -follow: следовать по символическим ссылкам, если они ссылаются на каталоги. По умолчанию find не переходит по символическим ссылкам.
  • -daystart: при использовании проверок, связанных со временем (см. ниже), вместо значения по умолчанию (24 часа назад от текущего времени) за точку отсчета принимается начало текущего дня.

ln: создание ссылок

Для создания ссылок, символьных и жестких, используется команда ln.

Жесткая ссылка — другое имя для существующего файла. Для создания жесткой ссылки введите в командной строке:

ln файл ссылка

Символьная ссылка — особый маленький файл, содержащий путь к файлу. Для создания символьной ссылки используется та же команда, что и для создания жесткой, но с опцией -s:

ln -s файл ссылка

При создании символьной ссылки на каталог автоматически создаются символьные ссылки на все входящие в него файлы и каталоги.

Чтобы больше узнать о команде ln, прочтите ее man-страницу, введя в командной строке man ln.

rmdir: удаление каталогов

Чтобы удалить каталог, используйте команду rmdir (например, rmdir examples), но только если каталог пуст.

Удаление каталога с помощью команды rmdir безопаснее, чем с помощью rm. С rmdir вы не сможете использовать рекурсивное удаление, поэтому каталог, который содержит какие-нибудь файлы, не будет удален.

Чтобы больше узнать о команде rmdir, обратитесь к ее man-странице (введите man rmdir).

rm: удаление файлов и каталогов

Удаление командой rm — простой процесс. Для получения более подробной информации обратитесь к man-странице команды rm. Ниже перечислены некоторые опции данной команды:
  • -i (interactive) — интерактивный режим. Требует подтвердить удаление для предотвращения ошибочного удаления файла.
  • -f (force) — принудительный режим. Выключает интерактивный режим и удаляет файл(ы), не запрашивая подтверждения. Не используйте эту опцию, если вы не достаточно разбираетесь, что нужно делать.
  • -v (verbose) — режим дополнительных сообщений. Выводить на экран сообщение о каждой выполняемой операции.
  • -r (recursive) — рекурсивный режим. Удалить каталог и все файлы и подкаталоги в нем.
Чтобы удалить файл test.txt с помощью команды rm, наберите:
rm test.txt

mv: перемещение и переименование файлов

Для перемещения файлов используйте команду mv. Узнать больше о команде mv можно из man-страницы mv, для чего необходимо набрать в командной строке man mv.
Ниже приведены некоторые часто используемые опции команды mv:
  • -i (interactive) — интерактивный режим. Предупреждает, что выбранный файл будет записан поверх уже существующего в каталоге назначения. Это полезная опция, она похожа на опцию -i команды cp и дает возможность подумать, действительно ли нужно перезаписать уже существующий файл.
  • -f (force) — принудительный режим. Данная опция выключает интерактивный режим и перемещает файлы, не выдавая подсказок. Если вы еще плохо разбираетесь, что делать, эта опция опасна; старайтесь ее не использовать, пока не станете чувствовать себя в системе уверенно.
  • -v (verbose) — режим дополнительных сообщений. Выводить на экран сообщение о каждой выполняемой операции.
Если вы хотите переместить файл из своего домашнего в другой существующий каталог, наберите, находясь в домашнем каталоге, следующее:
mv example.txt docs/
Та же команда, но с использованием абсолютного пути, выглядит так:
mv /home/user/example.txt /home/user/docs/


cp: копирование файлов

Для копирования файла наберите следующее:
cp <источник> <пункт_назначения>
Замените <источник> названием файла, который вы копируете, а <пункт_назначения> названием каталога, куда он должен попасть.
Итак, чтобы скопировать файл example.txt в каталог docs/ в вашем домашнем каталоге, перейдите в свой домашний каталог и наберите:
cp example.txt docs/
В команде cp вы можете использовать как относительный, так и абсолютный путь к файлу. Наш домашний каталог является вышестоящим по отношению к каталогу docs/; каталог docs/ на ступень ниже домашнего каталога.
Прочтите man-страницу команды cp (наберите в командной строке man cp) и просмотрите полный список опций команды cp. Среди прочих опций команды cp имеются следующие:
  • -i (interactive) — интерактивный режим. Требует подтверждения, если командой будет переписан файл в месте назначения. Это помогает избежать возможных ошибок.
  • -f: противоположность -i, заменяет любые существующие файлы без запроса подтверждения.
  • -r (recursive) — рекурсивный режим. Вместо копирования всех указанных файлов и каталогов скопирует все дерево каталогов, подкаталоги и прочее.
  • -v (verbose) — режим дополнительных сообщений. Выводить на экран сообщение о каждой выполняемой операции.

touch: создание файлов

Вы можете создавать новые файлы как при помощи приложений (таких как текстовые редакторы), так и командой touch, которая создает пустой файл, куда можно добавить текст или другие данные.

Изначально команда touch предназначалась не для создания файлов, а для обновления времени последнего доступа к файлу и времени его изменения[

Чтобы создать файл с помощью команды touch, наберите в командной строке:

touch <имя_файла>

Вместо <имя_файла> должно стоять название файла по вашему выбору. Просмотрев список файлов текущего каталога с помощью команды

ls -l имя_файла

вы увидите, что этот файл содержит ноль (0) байт информации:

-rw-rw-r--   1 user  user  0 Mar 07 16:01 имя_файла

ls: просмотр содержимого каталога

Теперь, когда вы уже умеете переходить из каталога в каталог, самое время узнать, как просмотреть содержимое каталога. Используя команду ls, вы можете вывести на экран список файлов и каталогов текущего каталога.
У команды ls есть много опций. Сама по себе команда ls не покажет все файлы в каталоге. Некоторые файлы являются скрытыми, их можно увидеть, только задав дополнительный ключ команде ls.
[Tip]Подсказка
Чтобы увидеть все возможные опции команды ls, прочтите ее man-страницу, введя в командной строке man ls. Если вы хотите распечатать эту информацию, то перенаправьте вывод на принтер, введя в командной строке
man ls | col -b | lpr
Введите команду ls -a. Теперь вы можете видеть скрытые файлы, имена которых начинаются с точки:
[user@localhost ~]# ls -a
.    .bash_history  .bash_profile  Desktop  .gtkrc
..   .bash_logout   .bashrc        .emacs   test.txt  

Полезные советы

Дописывание при помощи клавиши [Tab]


Дописывание при помощи клавиши [Tab] — один из наиболее полезных приемов при работе в командной строке. Linux обладает способностью «угадывать», какую команду, каталог или имя файла вы вводите. Если вы введете первые несколько букв имени файла, команды или пути и затем нажмете клавишу [Tab], bash покажет оставшуюся часть имени файла или пути, или компьютер подаст звуковой сигнал (если в вашей системе настроен звук). Услышав звуковой сигнал, нажмите клавишу [Tab] еще раз для получения списка файлов или путей, имена которых начинаются с заданных букв.
Например, если вы забыли команду updatedb, но помните часть команды, вы можете набрать команду su -, чтобы стать root'ом, и использовать следующую конструкцию. В командной строке наберите up и дважды нажмите клавишу [Tab]. Вы увидите список возможных окончаний, включающий updatedb и uptime. Набрав часть команды upd и снова нажав клавишу [Tab], вы получите полную команду.
Закончив выполнять работу, для которой вы стали root'ом, наберите в командной строке exit — вы вернетесь в свою сессию.

pwd: определение текущего каталога

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

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

В результате ее работы на экран будет выведено что-то вида:

/home/user

В рассмотренном примере получается, что вы находитесь в каталоге пользователя user, расположенном в каталоге /home/.

pwd расшифровывается как print working directory (напечатать рабочий каталог). Когда вы вводите pwd, вы просите систему Linux отобразить текущее местоположение. Система отвечает, выводя в окне оболочки командной строки полный путь до текущего каталога. Когда система отвечает на запрос, требующий какую-нибудь информацию, ответ, называемый стандартным выводом (standard output), может быть отображен в окне оболочки командной строки или перенаправлен другой программе или на какое-нибудь устройство, например, на принтер.

Команда pwd очень полезна при перемещении по системе Scientific Linux.


cd: смена каталога

Сменить рабочий каталог на другой очень легко, если известно, где вы находитесь (известен ваш текущий каталог) и где находится каталог, в который необходимо перейти.
Для смены каталога используется команда cd. Если вы введете эту команду без аргументов, вы попадете в свой домашний каталог; чтобы попасть в любой другой каталог, необходимо указать путь (pathname) к нему.
Вы можете использовать или абсолютный, или относительный путь. Абсолютный путь начинается от верха файловой системы, с корневого каталога /, также называемого просто корень (root), и продолжается до запрашиваемого каталога; относительный путь начинается от вашего текущего каталога, где бы он ни находился. Приведенное ниже дерево каталогов показывает, как работает команда cd.
/
/dir1
/dir1/dir2
/dir1/dir2/dir3
Если в данный момент вы находитесь в каталоге dir3 и хотите перейти в dir1, вам необходимо переместиться по дереву каталогов выше.
Если находясь в каталоге dir3 ввести команду
cd dir1 
появится сообщение об отсутствии такого каталога. Это происходит потому, что каталога dir1 действительно нет в каталоге dir3.
Чтобы подняться к каталогу dir1, наберите:
cd /dir1 

Атрибуты файлов

Аналогично файловой системе FAT, имеющей атрибуты файлов (архивный, системный файл, скрытый), в файловой системе ext2fs также имеются свои собственные, но они отличаются. Мы вкратце пройдемся по ним для полноты повествования, но используются они очень редко. Однако, если вы действительно хотите получить защищенную систему - читайте дальше.
Существует две команды для управления атрибутами файла: lsattr(1) и chattr(1). Вы, наверное, догадались, что команда lsattr выводит список (LiSt) атрибутов, а команда chattr изменяет (CHange) их. Эти атрибуты могут быть установлены только для каталогов и обычных файлов. Доступны следующие атрибуты:
  1. Ano Access time»): если для файла или каталога установлен этот атрибут, то, всякий раз при обращении к нему для чтения или записи, у него не будет обновляться время последнего доступа. Это может быть полезно, например, для файлов и каталогов, к которым очень часто обращаются для чтения, особенно из-за того, что это единственный параметр в inode, который изменяется при открытии файла только для чтения.
  2. aappend only»): если для файла установлен этот атрибут, и этот файл открыт для записи, то единственной доступной операцией будет добавление данных к его предыдущему содержимому. Для каталога это означает, что вы сможете только добавить файлы, но не сможете переименовать или удалить ни одного из существующих файлов. Только root может установить или снять этот атрибут.

Типы файлов

Стартовое руководствоWe ознакомило вас с понятиями владельца файла и разрешениями для файла, но для того, чтобы действительно понять файловую систему UNIX® (а это также касается и файловых систем Linux), необходимо, чтобы мы заново определили понятие «Что такое файл.»
Сейчас «всё» действительно означает всё. Жесткий диск, раздел на жестком диске, параллельный порт, подключение к веб-сайту, карта Ethernet - всё это файлы. Даже каталоги являются файлами. Linux различает много типов файлов в дополнение к стандартным файлам и каталогам. Обратите внимание, что здесь под типом файла мы подразумеваем не содержимое файла: в GNU/Linux, как и в любой другой системе UNIX®, файл, будь то изображение PNG, двоичный файл или что-либо еще, - это просто поток байтов. Разделение файлов согласно их содержимому оставляется приложениям.

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

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

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

Ext2

Second Extended Filesystem (сокращенно звучит как ext2 или просто ext2) много лет была файловой системой GNU/Linux по умолчанию. Она заменила Extended File System (вот откуда в названии появилось «Second»). ext2 устраняет определенные проблемы и ограничения своей предшественницы.
ext2 соблюдает обычные стандарты для файловых систем UNIX®-типа. С самого начала она была предназначена для дальнейшего развития, сохраняя при этом высокую отказоустойчивость и хорошую производительность.