CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
16.09.2019

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки

Linux для начинающих: файлы

PC Week

Файл — один из базовых элементов любой операционной системы, и Linux здесь не исключение. Но в этой ОС файлу придается особое значение, ведь им описывается любой объект — от текстового документа до устройства. А технологии разграничения прав доступа к файлам являются основой концепции безопасности Linux. Стало быть, объект заслуживает отдельного разговора.

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

Для создания файлов проще всего обратиться к команде cat, используя перенаправление вывода: cat > [имя файла]. В этом случае в объект будет помещено всё, что вводится с клавиатуры (окончание операции — одновременное нажатие клавиш Ctrl и D). Разумеется, на практике данный метод используется редко — разве что при необходимости создать небольшой текстовый файл, состоящий из одной-двух строк.

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

Впрочем, на практике чаще применяются другие программы: more и less. Синтаксис их довольно прост, в чем вы убедитесь, набрав в консоли команду man [название программы].

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

Для копирования файлов в Linux существует команда cp. Набирать ее следует так:

cp [параметры] [источник] [приемник]. В роли приемника выступает либо имя файла, либо название каталога, в котором объект будет продублирован с тем же наименованием.

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

За перемещение или переименование файлов отвечает команда mv. Скажем, если надо перенести несколько объектов из одного каталога в другой, то следует набрать в консоли mv ~/*.[расширение] /[каталог назначения].

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

Удаление объектов системы осуществляется командой rm. Если набрать ее без параметров, то никакого предупреждения выдаваться не будет. Учитывая, что использование этой команды (особенно от имени суперпользователя) потенциально опасно, лучше ввести в консоли следующее: rm -i [файл ли группа файлов]. В этом случае у вас будет шанс передумать, поскольку система потребует подтверждения.

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

Если речь идет о команде (программе), то в командной строке нужно набрать which [имя]. Этот подход удобен не только для нахождения файла. В частности, таким методом можно быстро узнать, установлено или нет какое-либо приложение. Впрочем, той же цели можно достичь более коротким путем.

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

Ссылки

Ссылки — это специальные файлы, позволяющие хранить в системе один и тот же объект под разными именами. Зачем это нужно? Представьте себе, что у вас есть большой неструктурированный архив документации. Работать с ним неудобно, а упорядочить его по каким-либо причинам нельзя.

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

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

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

Для создания жесткой ссылки следует набрать в командной строке ln [имя файла] [имя ссылки]. Если и к исходному файлу, и к файлу-ссылке применить команду ls —i, предписывающую показать индексный дескриптор, то результат, как нетрудно догадаться, будет совершенно одинаковым.

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

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

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

Кстати, отсюда и следствие: операции с символическими ссылками выполняются несколько медленнее. Ведь система обращается не напрямую к индексному дескриптору, а совершает одно “лишнее” действие, вызывая родительский файл.

Создается символическая ссылка командой ln -s [имя исходного файла] [имя символической ссылки]. При ее удалении исходный файл сохраняется. А вот если убрать из системы основной объект, то ссылка становится ненужной, хотя и останется в системе.

Права доступа

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

Важно понимать, что права не имеют иерархии — они равноценны и независимы друг от друга. Например, возможна конфигурация, когда пользователь, у которого нет права чтения файлов какого-либо каталога, может вносить в него запись. Причем именно этот вариант часто применяется на практике при организации FTP-сервера: в нем должна быть директория, куда пользователи могли бы выкладывать любые объекты. Но скачать их будет нельзя до тех пор, пока администратор не перенесет материалы в специально предназначенный для этого раздел, предварительно проверив содержимое.

Просмотреть права, определенные для какого-либо объекта, можно командой ls -l [имя файла или каталога]. Она вернет набор символов примерно такого вида:-rwxr-xr-x (разумеется, в каждом конкретном случае порядок символов может отличаться от других). Применим ее к уже известному нам файлу cat. Получится такая последовательность: -rwxr-xr-x. Что же означают эти символы?

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

- — обычный файл;

d — каталог;

b — файл блочного устройства;

c — файл символьного устройства;

s — файл типа socket;

p — именованный канал;

l — символическая ссылка.

Далее идут три набора, в каждом из которых по три символа. Первый описывает права создателя файла, второй — группу пользователей, в которую входит создатель, третий — всех остальных. Знаки, применяемые для обозначения прав доступа, должны входить в множество {-, r, w, x}.

Символ “r” означает, что пользователь имеет право читать файл, “w” говорит о том, что допускается его запись, и “x” указывает на то, что файл является исполняемым и пользователь может его запускать. Черточка, разумеется, означает, что право, соответствующее месту расположения символа, отсутствует.

Таким образом, из нашего примера видно, что cat — это программа (обычный исполняемый файл), создатель которой (root) может всё, а остальные имеют права только на чтение и исполнение. Как говорится, коротко и ясно. Отсюда к тому же видно, что, работая от имени простого пользователя, стереть или видоизменить объект никак нельзя. Кстати, именно так и достигается высокая защита системных приложений.

Для изменения прав доступа к какому-либо файлу используется команда chmod [символ, указывающий на пользователя][символ, указывающий на действие][символ, обозначающий вид права] [имя файла].

Символом, указывающим на пользователя, может быть:

u — владелец файла;

g — группа, к которой принадлежит владелец;

o — пользователи, не входящие в группу, к которой принадлежит владелец;

a — все пользователи системы.

Символом, указывающим на действие, может быть:

+ — предоставление права;

- — лишение права;

= — установление нового права вместо уже имеющегося.

Помимо такой формы записи на практике часто используется так называемое цифровое предоставление прав. При этом символ “r” кодируется цифрой 4, символ “w” — цифрой 2, а символ “x” — цифрой 1. Сложив любые комбинации этих значений, можно получить число от нуля до семи, при этом каждое из них будет однозначно описывать требуемую конфигурацию.

Вернемся к нашему примеру. Набор “rwx” соответствует семи, “r-x” — пяти и “r-x” — тоже пяти. Если вы хотите назначить файлу аналогичные права, то команда будет выглядеть так: chmod 755 [имя файла]. Коротко и изящно, ведь такая запись — это всего лишь восьмеричная запись той самой информации размером в 9 бит, которая задает права доступа к файлу.

Если работа в командной строке кажется сложной, то можно воспользоваться помощью программы Midnignt Commander. На основной панели надо выбрать пункт “Файл” и в ниспадающем меню — “Права доступа”. Активируйте нужные вам опции и щелкните на кнопке “Сохранить”.

Удобные инструменты для назначения и смены прав доступа предоставляют пользователю и графические среды KDE и GNOME. Действия в обеих оболочках аналогичны. Кликом правой клавишей мыши на пиктограмме объекта следует вызвать контекстное меню, а в открывшемся окне перейти на вкладку “Доступ”.

Читайте также другие статьи из цикла «Linux для начинающих»




Комментарии

Страницы комментариев: 1 :: 2 :: 3 :: следующая

аноним, Sun Nov 29 21:30:15 2009:
>Работаю в МС...

И сколько же вам платят за работу в MC...?
Виктор, Sun Nov 29 20:00:06 2009:
"стотю писать" "если мозг не способен сформулировать как надо..."

Дааааа.... Этот мозг явно не способен такую "стотю" написать.
Юрий, Sat May 9 15:36:31 2009:
Отличная статья. Побольше бы таких. А то достали деятели со своими лозунгами; "читайте маны"... Эти маны в основной своей массе на английском, во вторых довольно бестолковые, ибо содержат минимум примеров, то есть, если что-то надо сделать быстро для начинающего совершенно бесполезны, потому как синтаксис команд ему приходится все равно уточнять в других местах.
x, Sat Apr 11 22:03:41 2009:
Это прекрасная статья!
Побольше бы таких для начинающих!
Просто и доступно!
аноним, Mon Nov 3 11:23:20 2008:
>я же просто спросил...
я просто ответил...

>тогда зачем вот эта статья?
а это для кого как... Для кого-то это начало, а кому-то и этого хватает... Если не хватает, и хочется дальше - то привыкай читать и разбираться... Мало кто захочет написать еще одну подобную статью к примеру по финду только потому что тебе лень ман прочитать...

>может проще
делай проще... чем проще - тем лучше...
аноним, Mon Nov 3 10:15:45 2008:
аноним, понедельник, 3 ноября 2008 г. 01:44:19:
можно продолжать в том же духе и дальше...
man правила приличия :))))))
я же просто спросил... маны читать... тогда зачем вот эта статья?
может проще Alt Tab in MC нажать да посмотреть вобще сколько всяких команд существует....
Это к тому что в статье написано типа "cp [параметры] [источник] [приемник]. " etc.
аноним, Mon Nov 3 01:44:19 2008:
>man russian language
в mc отменили консоль?
---
man mc
man юзабилити mc
man интерфейс mc
man правила приличия

:)
аноним, Sun Nov 2 22:14:28 2008:
2DdShurick - Благодарю!
(Раздел hda1 у меня системой, потому в mnt не примонтирован, а сам я зарапортовался :) )
А, допустим, мне нужно в нескольких разделах искать, например в hda1 и hdb5, как их правильно обозначить?

2аноним, воскресенье, 2 ноября 2008 г. 19:44:56:
>Какой совет?
man find...

Ну вот...Комьюнити... сказано-же "РАБОТАЮ В МС!"
man russian language
DdShurick, Sun Nov 2 20:01:10 2008:
>Работаю в МС и при нахождении хочу перейти к этому файлу (там есть такая команда).

В открывшемся окне верхняя строка - откуда начинать поиск
/mnt/hda1
В данном случае первый раздел первого диска (primary master)
Вторая строка
*/file.xbf
И запустить поиск.
аноним, Sun Nov 2 19:44:56 2008:
>Какой совет?

man find...

Страницы комментариев: 1 :: 2 :: 3 :: следующая

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds