Сегодня известно множество типов атак и способов перехвата секретных данных.
1 авг. 2008 г.
Удаленное управление Linux-сервером по протоколу SSH
Сегодня известно множество типов атак и способов перехвата секретных данных.
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-клиента
REGEDIT4 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters] "requiresignorseal"=dword:00000000 "requirestrongkey"=dword:00000000 "sealsecurechannel"=dword:00000001 "signsecurechannel"=dword:00000001
Samba: графический интерфейс управления
service swat { port = 901 socket-type = stream wait = no only_from =После этого перезапускаем службу xinetd:администратора> user = root server = /usr/bin/swat log_on_failure += USERID disable = no }
# /etc/init.d/xinetd restart
Samba: приступаем к настройке
/FileServer/etc | Папка будет содержать файлы конфигурации Samba |
/FileServer/netlogon | Папка для скриптов входа в домен |
/FileServer/otdel_1 | Папка 1 отдела |
/FileServer/otdel_N | Папка N отдела |
/FileServer/Public | Общий для всех отделов ресурс |
include=/FileServer/etc/smb.global include=/FileServer/etc/%U.conf
Samba: установка
Распакуем пакет samba-2.2.5.tar.gz в каталог /usr/src/redhat/SOURCES:
# cat samba-2.2.5.tar.gz | gzip -d | tar xvpf -
Samba: организация дисковых разделов
Для нормального функционирования системы в процессе эксплуатации нужно заранее определиться с дисковыми разделами, на которых будет устроен файловый сервер. Для примера я организовал дисковое пространство следующим образом:
/boot | 100M | Загрузочный раздел |
/ | 3.5G | Корень системы с не выделенным /home /usr |
/tmp | 2G | Раздел для временных файлов |
swap | 1G | Раздел виртуальной памяти |
/var | 6G | Раздел для рабочих данных системных программ и ведения логических журналов программ |
/install | 5.3G | Раздел с инсталляционным ПО и драйверами для машин пользователей |
/FileServer | 40.6G | Раздел файлового сервера |
/Vol | 17G | Раздел хранения в архивном виде данных пользователей |
Не выделяю отдельно Home, поскольку для задач пользователей предоставление каждому пользователю отдельного домашнего каталога совершенно не нужно. Это связано с тем, что работа организована по отделам,- и, соответственно, пользователи одного отдела должны иметь доступ к файлам друг друга, для хранения же прочей информации каждый пользователь использует локальный жесткий диск.
/etc: Конфигурационные файлы
passwd и shadow: это два текстовых файла, в которых хранятся все пользователи системы и их зашифрованные пароли. Вы увидите только файл shadow, если используются теневые пароли, что по соображениям безопасности является опцией установки по умолчанию.
inittab: это конфигурационный файл для команды init, которая играет основную роль в загрузке системы. Пожалуйста, обратитесь к ???.
services: этот файл содержит список существующих сетевых служб.
profile: это конфигурационный файл shell'а, хотя отдельные shells используют другие файлы. Например, bash использует файл .bashrc.
crontab: конфигурационный файл для cron - программы, отвечающей за периодическое выполнение программ.
Для программ, которым требуется большое число конфигурационных файлов, существуют отдельные подкаталоги. Это относится, например, к X Window System, которая хранит все свои файлы настроек в каталоге /etc/X11.
/var: Изменяемые при использовании данные
/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, которые соответственно содержат документацию к приложениями и системные страницы руководств.
Корневой каталог: /
- /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] пользователь ...] |
$ renice +15 785 |
top: объединение ps и kill
Утилита top полностью управляется с клавиатуры. Вы можете получить справку, нажав на клавишу h. Наиболее полезные команды:
k: эта команда используется для отправки сигнала процессу. При этом top спросит у вас PID процесса, а затем номер или название отправляемого сигнала (по умолчанию используется TERM — или 15 —);
M: эта команда используется для сортировки процессов по объёму занятой ими памяти (поле %MEM);
P: эта команда используется для сортировки процессов по занятому ими времени CPU (поле %CPU; этот метод используется для сортировки по умолчанию);
u: эта команда используется для вывода процессов заданного пользователя, имя которого top у вас спросит. Вам необходимо ввести имя пользователя, а не его UID. Если вы не введете никакого имени, будут показаны все процессы;
i: по умолчанию выводятся все процессы, даже спящие. Эта команда обеспечивает вывод только о работающих в данный момент процессах (процессы, у которых поле STAT имеет значение R, Running). Повторное использование этой команды вернёт вас назад к списку всех процессов.
r: эта команда используется для изменения приоритета выбранного процесса.
kill, killall
Обе эти команды допускают опциональное использование аргумента с номером сигнала, отправляемого процессу. По умолчанию они обе отправляют соответствующим процессам сигнал 15 (TERM). Например, если вам надо убить процесс с PID 785, используйте команду:
$ kill 785 |
Если вам нужно отправить ему сигнал 19 (STOP), введите:
$ kill -19 785 |
Допустим, что вам нужно убить процесс, для которого вы знаете имя команды. Вместо того, чтобы искать номер процесса при помощи команды ps, вы можете убить его по имени:
$ killall -9 mozilla |
В любом случае вы убьёте только свои собственные процессы (только если вы не root), поэтому вам не стоит волноваться о процессах ваших «соседей», если работаете в многопользовательской системе, так как на них это не повлияет.
ps: информация о процессах
at: Выполнение команды по расписанию один раз
$ at 17:30 # Теперь перед вами приглашение "at" at> xmessage "Пора идти! Встреча в 18:00" # Нажмите CTRL-d для выхода at> |
crontab: запуск команд по расписанию
sort: Сортировка содержимого файла
sort [опции] [файл(ы)] |
$ cat /etc/passwd |
$ sort /etc/passwd |
$ 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, вы можете заглянуть сюда Tutorial Introduction to GNU Emacs.
Краткое представление
Запускается Emacs следующим образом:
emacs [файл] [файл...]
Перенаправления
$ ls images/*.png 1>file_list |
$ ls images/*.png >file_list |
Каналы
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 [опции] <пользователь[:группа]> <файл|каталог> [файл|каталог...] |
-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 [опции] <каталог> [каталог ...] |
Только одна опция ничего не стоит: опция -p. Она выполнит два действия:
создаст родительские каталоги, если они не существовали до этого. Без этой опции mkdir просто вызовет сбой, жалуясь на отсутствие заявленных каталогов;
молча выполнит возврат, если каталог, который вы хотели создать, уже существует. Для сравнения, если вы не указали опцию -p, mkdir возвратит сообщение об ошибке, жалуясь на то, что каталог уже существует.
less: Пейджер
Название произошло от игры слов, связанной с первым пейджером из когда-либо использовавшихся в UNIX® с именем more (more - больше; less - меньше). Пейджер (page - страница) - это программа, которая позволяет пользователю просматривать большие файлы по частями страница за страницей (точнее, экран за экраном). Причина, по которой мы рассматриваем less, а не more, заключается в том, что less более интуитивна. Вам следует использовать less для просмотра больших файлов, которые не умещаются на одном экране. Например:
less /etc/termcap |
Для перемещения по этому файлу используйте клавиши вверх и вниз. Для выхода нажмите Q. Возможности less значительно шире: нажмите H для вызова справки с различными доступными опциями.
echo
HOME: эта переменная окружения содержит строку, представляющую ваш домашний каталог.
PATH: содержит список всех каталогов, в которых shell должен будет искать исполняемые файлы, когда вы набираете команду. Обратите внимание, что в отличие от DOS shell по умолчанию не будет искать команды в текущем каталоге!
PS1: определяет, как будет выглядеть ваше приглашение, и зачастую является комбинацией специальных последовательностей. Для получения дополнительной информации вы можете прочитать страницу руководства bash(1), набрав в терминале man bash.
Чтобы shell вывел значение переменной, вы должны указать перед ее именем знак $. Вот пример с командой echo:
$ echo |
Как видите, shell подставляет значение переменной перед выполнением команды. В противном случае наш пример cd $HOME не заработал бы. По сути командный процессор сначала заменил $HOME на ее значение (/home/queen), так что строка стала cd /home/queen, чего мы и добивались. То же самое происходит и с примером echo $USERNAME.
Смена графического режима входа в систему на текстовый
Для смены режима входа в систему с графического на текстовый необходимо отредактировать один файл, /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.
Внимание | |
---|---|
Меняйте только номер стартового уровня! |
Измененная строка должна выглядеть так:
id:3:initdefault:
Закончив редактирование, сохраните файл и выйдите из редактора при помощи клавиш [Ctrl]-[x]. Вы увидите сообщение о том, что файл был модифицирован и запрос на подтверждение внесенных изменений. Для подтверждения нажмите [Y].
Теперь после перезагрузки вход будет осуществляться в текстовом режиме.
Забытый пароль root
Вы можете войти в систему, используя однопользовательский режим, и установить новый пароль пользователя root.
Для входа в однопользовательский режим перезагрузите компьютер. Если вы используете загрузчик, устанавливаемый по умолчанию (GRUB), можете войти в однопользовательский режим, выполнив следующие действия:
В меню загрузчика при помощи клавиш со стрелками выберите инсталляцию, которую хотите редактировать, и наберите [A], чтобы попасть в режим append.
Вы увидите командную строку примерно такого вида:
grub append> ro root=LABEL=/
Нажмите клавишу [Пробел], чтобы добавить пробел, затем введите слово single, чтобы дать команду загрузчику GRUB загрузиться в однопользовательском режиме (single-user Linux mode). В результате вы увидите примерно следующее:
ro root=LABEL=/ single
Нажмите [Enter] и GRUB загрузит систему в однопользовательском режиме. По окончании загрузки вы увидите строку вида:
sh-2.05b#
Теперь можно изменить пароль root', введя команду
passwd root
Система попросит ввести пароль повторно для его подтверждения. По окончании выполнения операции пароль изменится. Затем можно перезагрузить систему, введя в командной строке команду reboot, после чего вы сможете войти в систему, как обычно.
man; хелп
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:
- -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.
Подсказка | |
---|---|
Для получения более подробной информации наберите в командной строке 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.
Подсказка | |
---|---|
Для получения более подробной информации наберите в командной строке man gzip и man gunzip и прочтите страницы руководства gzip и gunzip. |
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
Вот цифровой эквивалент прав доступа для файла example1.txt:
- (rw-) (rw-) (r--) | | | 4+2+0 4+2+0 4+0+0
chmod: изменение прав доступа
chmod [опции] <изменение режима> <файл|каталог> [файл|каталог...] |
- в виде восьмеричного числа. Разрешения владельца при этом соответствуют числам в виде
00 , гдесоответствует назначаемому разрешению: 4 на чтение, 2 на запись и 1 на выполнение. Аналогично, разрешения группы владельца принимают вид 0 , а разрешения для «остальных» -. Затем, все что вам нужно сделать - так это найти сумму назначаемых разрешений, чтобы получить нужный режим. Так, разрешения rwxr-xr-- соответствуют 400+200+100 (разрешения для владельца, rwx) +40+10 (разрешения для группы, r-x) +4 (разрешения для остальных, r--) = 754; таким образом, разрешения выражаются через свободные члены. Это значит, что предыдущие разрешения безусловно заменяются; - при помощи выражений. При этом разрешения выражаются через последовательность выражений, разделенных запятыми. Отсюда выражение принимает следующий вид: [категория]<+|-|=><разрешения>.
Права доступа и владельцы
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: Поиск строк в файлах
grep [опции] <шаблон> [один или более файлов] |
tail
Команда, обратная по действию команде head — tail. Используя программу 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 можно вывести на экран содержимое указанного файла. Для этого введите
cat <имя_файла>Если указанный файл очень длинный, его содержимое быстро промелькнет по экрану. Чтобы предотвратить быструю прокрутку, введите
cat <имя_файла> | lessВ этом примере команда cat соединена каналом (|) с командой less, что позволяет вывести содержимое файла постранично. Используйте клавиши со стрелками, чтобы листать страницы вперед и назад.
Очистка и реинициализация терминала
После выполнения в командной строке только одной команды ls окно терминала выглядит переполненным. Конечно, вы всегда можете закрыть терминал, а затем открыть его вновь, но есть более простой и быстрый способ очистить терминал.
Попробуйте ввести в командной строке команду clear. Команда clear делает именно то, что подразумевает ее название: она очищает окно терминала.
Подсказка | |
---|---|
Для очистки окна терминала также можно воспользоваться сочетанием клавиш [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
Замечание | |
---|---|
Если необходимо навести справки о назначении какой-либо команды, использование 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: поиск файлов
locate dogКоманда locate использует базу данных для определения местонахождения файлов или каталогов, содержащих в названии слово dog. Результаты поиска могут включать файл с названием dog, файл с названием bulldog.txt, каталог с названием /dogs/ и так далее. Чтобы узнать больше о команде locate, обратитесь к ее man-странице (введите в командной строке man locate).
При условии, что база данных обновлена, команда locate осуществляет поиск очень быстро. Обновление базы данных команды locate происходит каждую ночь при помощи службы cron. cron — это небольшая программа, которая запускается в фоновом режиме и выполняет различные задачи (такие как обновление базы данных команды locate) через определенные промежутки времени.
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: удаление файлов и каталогов
- -i (interactive) — интерактивный режим. Требует подтвердить удаление для предотвращения ошибочного удаления файла.
- -f (force) — принудительный режим. Выключает интерактивный режим и удаляет файл(ы), не запрашивая подтверждения. Не используйте эту опцию, если вы не достаточно разбираетесь, что нужно делать.
- -v (verbose) — режим дополнительных сообщений. Выводить на экран сообщение о каждой выполняемой операции.
- -r (recursive) — рекурсивный режим. Удалить каталог и все файлы и подкаталоги в нем.
rm test.txt
mv: перемещение и переименование файлов
Ниже приведены некоторые часто используемые опции команды mv:
- -i (interactive) — интерактивный режим. Предупреждает, что выбранный файл будет записан поверх уже существующего в каталоге назначения. Это полезная опция, она похожа на опцию -i команды cp и дает возможность подумать, действительно ли нужно перезаписать уже существующий файл.
- -f (force) — принудительный режим. Данная опция выключает интерактивный режим и перемещает файлы, не выдавая подсказок. Если вы еще плохо разбираетесь, что делать, эта опция опасна; старайтесь ее не использовать, пока не станете чувствовать себя в системе уверенно.
- -v (verbose) — режим дополнительных сообщений. Выводить на экран сообщение о каждой выполняемой операции.
mv example.txt docs/Та же команда, но с использованием абсолютного пути, выглядит так:
mv /home/user/example.txt /home/user/docs/
cp: копирование файлов
cp <источник> <пункт_назначения>
cp example.txt docs/
- -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, прочтите ее man-страницу, введя в командной строке man ls. Если вы хотите распечатать эту информацию, то перенаправьте вывод на принтер, введя в командной строке man ls | col -b | lpr |
[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
Атрибуты файлов
Существует две команды для управления атрибутами файла: lsattr(1) и chattr(1). Вы, наверное, догадались, что команда lsattr выводит список (LiSt) атрибутов, а команда chattr изменяет (CHange) их. Эти атрибуты могут быть установлены только для каталогов и обычных файлов. Доступны следующие атрибуты:
- A («no Access time»): если для файла или каталога установлен этот атрибут, то, всякий раз при обращении к нему для чтения или записи, у него не будет обновляться время последнего доступа. Это может быть полезно, например, для файлов и каталогов, к которым очень часто обращаются для чтения, особенно из-за того, что это единственный параметр в inode, который изменяется при открытии файла только для чтения.
- a («append only»): если для файла установлен этот атрибут, и этот файл открыт для записи, то единственной доступной операцией будет добавление данных к его предыдущему содержимому. Для каталога это означает, что вы сможете только добавить файлы, но не сможете переименовать или удалить ни одного из существующих файлов. Только root может установить или снять этот атрибут.
Типы файлов
Сейчас «всё» действительно означает всё. Жесткий диск, раздел на жестком диске, параллельный порт, подключение к веб-сайту, карта Ethernet - всё это файлы. Даже каталоги являются файлами. Linux различает много типов файлов в дополнение к стандартным файлам и каталогам. Обратите внимание, что здесь под типом файла мы подразумеваем не содержимое файла: в GNU/Linux, как и в любой другой системе UNIX®, файл, будь то изображение PNG, двоичный файл или что-либо еще, - это просто поток байтов. Разделение файлов согласно их содержимому оставляется приложениям.
Файловая система Linux
Если вы не специалист, то выбор файловой системы не совсем понятен. Мы вкратце рассмотрим несколько современных файловых систем, доступных в Mandrakelinux.
ext2 соблюдает обычные стандарты для файловых систем UNIX®-типа. С самого начала она была предназначена для дальнейшего развития, сохраняя при этом высокую отказоустойчивость и хорошую производительность.