![]() |
![]() |
![]() |
Анимация
JavaScript
|
Главная Библионтека ся в том, что средства для удаления файлов есть в любой операционной системе, поэтому 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 |
![]() |