Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 [ 49 ] 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

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

ОС. Описанная концепция независимости от компьютерной платформы реализована в

Perl практически повсеместно, в частности в функциях ввода/вывода. Интерпретатор по

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

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


Как следует из названия следующего раздела, приведенное на страницах этой книги описание прав доступа к файлам системы UNIX и способов их назначения ни в коей мере нельзя считать полным. Чтобы получить исчерпывающую информацию по интересующим вас вопросам, обратитесь к документации по операционной системе или нащите одну из книг по UNK, выпущенных Издательским домом "Вильяме". За справками обращайтесь по адресу http: vwv.williamspublishing.com.

Немного о правах доступа к файлам

На 1-м занятии, "Начало работы с Perl", без всяких дальнейших объяснений говорилось, что, для того чтобы в UNIX запускать программу на Per! как обычную команду, к файлу, в котором находится эта программа, необходимо применить команду chmod 75 айла. Магическое число 755 - это как раз и есть закодированные права доступа, которые назначаются указанному файлу. Таким образом, в системе UNIX для назначения и изменения прав доступа к файлам используется команда chmod.

Каждая из трех цифр представляет собой код прав доступа, которые назначаются владельцу этого файла, пользователям группы, к которой относится файл, и всем остальным пользователям компьютера (рис. 10.1). В нашем случае для владельца код прав доступа составляет 7, для группы - 5, а для всех остальных - 5. Коды прав доступа перечислены в табл. 10,2.

Права владельца

7 5 5

р-- j -S

Права группы

Права всех остальн1х

Рис. 1. Кодирование прав доступа к

файлу

Таблица 10.2. Коды прав доступа к файлам

Код Описание

Владелец/пользователи группы/остальные пользователи могут читать информацию из файла, изменять этот файл и запускать его на выполнение (RWX)

Владелец/пользователи группы/остальные пользователи могут читать информацию из файла и изменять файл (RW)

Владелец/пользователи группы/остальные пользователи могут читать информацию из файла и запускать его на выполнение (RX)

группы/остальные пользователи могут читать информацию из файла (R)



Окончание табл. 10.2

Код Описание

Владелец/пользователи группы/остальные пользователи могут записывать информацию в файл и запускать его на выполнение {WX)

Владелец/пользователи группы/остальные пользователи могут записывать информацию в файл {W)

Владелец/пользователи группы/остальные пользователи могут запускать файл на выполнение (X)*

Для установки прав доступа к файлу Perl используется встроенная функция chmod, синтаксис которой выглядит так:

chmod права цоступа, список файлов;

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

cc 55, file.pl t Назначает ва FWX владельца и

t RX для группы в всех остальных t потьзоватепей

chncd 0644, mydata.txt i Назначает грава RH для владельца и

t R для группы в всех остальных

t потьзоватепей chncd 0777, script.pl t Назначает грава RKX для всех

t пользователей (не очень грамэтное реиение) chncd 0000, cia.dat i Запрещает доступ к айлу со стороны

t любого пользователя

Выше на этом занятии мы рассматривали функцию При описании второго аргу-

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

mkdir "/usr/tmp", 0777 mkdir -myflies, 0700

i Создается каталог, полностью открытый

t для всех пользователей

f Создается каталог, открытый только для

i его владельца


Права доступа к файлам часто называют режимом доступа (mode). Поэтому название команды chmod расшифровывается как change mode (изменить режим доступа).

Получение информации о файле

ДЛЯ получения подробной информации о файле в Perl используется функция stat. Поскольку прототип этой функции взят из UNIX, а структура файловой системы UNIX отличается от принятой в других ОС, возвращаемые функцией stat данные зависят от конкретной операционной системы. Синтаксис функции stat выглядит так:

at дескрипторфайла; stst имяфайла;



Таким образом, функция stat позволяет получать информацию как по дескриптору файла (если файл уже бьш открыт), так и по имени файла. В любой операционной системе функция stat возвращает снисок, состоящий из 13 элементов, которые описывают атрибуты файла. Сами значения элементов этого списка зависят от типа операционной системы, в которой используется интерпретатор Perl. Причина заключается в том, что файловые системы некоторых операционных систем могут не поддерживать те или иные атрибуты. В табл. 10.3 описаны возвращаемые функцией stat элементы списка для двух популярных операционных систем: UNIX и Windows.

Табца 10.3. I

Номер элеме Нгэ

/нкцией stat значеи

11 12

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

ino Число индексных деск-

рипторов (inode)

mode Режим доступа к файлу

nlink Число ссылок (links) на файл

uid Идентификатор владель-

ца файла (user id)

gid Идентификатор группы

(group id)

rdev Специальная информа-

ция о файле

size Размер файла в байтах

atime Время последнего обра-

щения к файлу

mtime Время последней моди-

фикации файла

ctirae Время последней моди-

фикации индексного дескриптора

blksz Размер блока на диске

blocks Количество блоков, вы- деленных для файла

Номер диска (обычно 2 - это дискС:, 3 - D; и т.д.)

Всегда нуль

Не определено

Обычно 0, хотя в системе NTFS допускается наличие ссылок на файл

Всегда нуль Всегда нуль

Номер диска (повторно)

Размер файла в байтах

Время последнего обращения кфайлу Время последней модификации файла Время создания файла

Всегда нуль Всегда нуль

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

Вот пример использования функции stat:

istuff=stat "myfile";

Обычно возвращаемые функцией stat значения присваивают списку скаляров, которым назначены осмысленные имена, например:

($dev, $ino, $mode, Slllink, $uid, Sgid, $rdev, $size, Satime, $mtime, Sctime, $blksize, 5blocks)=stat("myfile");



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 [ 49 ] 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122