1.
При написании сценариев WSH пожалуй наиболее часто используемый объект - FileSystemObject. В то же время описание этого объекта весьма объемно. Нужно потратить определенное время, просматривая документацию, что бы понять что именно из объекта FileSystemObject необходимо для решения конкретной задачи. Здесь сделана попытка в краткой форме описать основные файловые операции и объекты, методы и коллекции, необходимые для их выполнения. Так что эту страницу можно в некоторой степени считать кратким путеводителем по объекту FileSystemObject.
Операция |
Используемые объекты, свойства и методы |
---|---|
Получение сведений об определенном диске ( метка тома, тип файловой системы, общий объем и количество свободного места и т. д.) | Свойства объекта Drive. Сам объект Drive создается с помощью метода GetDrive объекта FileSystemObject |
Получение сведений о заданном каталоге или файле (дата создания, размер, атрибуты и т. д. ) | Свойства объектов Folder и File. Сами эти объекты создаются с помощью метода GetFolder и GetFile объекта FileSystemObject |
Проверка существования определенного диска, каталога или файла | Методы DriveExists, FolderExists, FileExists объекта FileSystemObject |
Копирование файлов и каталогов | Методы CopyFile, CopyFolder объекта FileSystemObject, а также методы File.Copy, Folder.Copy |
Перемещение файлов и каталогов | Методы MoveFile, MoveFolder объекта FileSystemObject или методы File.Move, Folder.Move |
Удаление файлов и каталогов | Методы DeleteFile, DeleteFolder объекта FileSystemObject или методы File.Delete, Folder.Delete |
Создание каталога | Методы FileSystemObject.CreateFolder или Folder.Add |
Создание текстового файла | Методы FileSystemObject.CreateTextFile или Folder.CreateTextFile |
Получение списка всех доступных дисков | Коллекция Drives, содержащаяся в свойстве FileSystemObject.Drives |
Получение списка всех подкаталогов заданного каталога | Коллекция Folders, содержащаяся в свойстве Folder.SubFolders |
Получение списка всех файлов заданного каталога | Коллекция Files, содержащаяся в свойстве Folder.Files |
Открытие текстового файла для чтения, записи или добавления | Методы FileSystemObject.CreateTextFile или File.OpenAsTextStream |
Чтение информации из заданного текстового файла или запись ее в него | Методы объекта TextStrem |
2.
Для начала следует разобраться с основными понятиями такими как: кто такой владелец файла в Linux, каким образом к файлу получают доступ другие пользователи, а не только сам владелец и т.д.
В Unix-подобных системах приложение запускается с правами пользователя, вызвавшего указанное приложение. Это обеспечивает дополнительную безопасность, так как процесс с правами пользователя не сможет получить доступ на запись к важным системным файлам, например /etc/passwd
, который принадлежит суперпользователю root
. Звучит просто, но существует некоторые особенности, которые нужно обязательно знать и учитывать.
Владелец, Группа и Все остальные
Владелец
Владелец файла или директории в Linux – это пользователь, который их создал. Командойchown
можно поменять владельца для файла или директории.
Права на чтение, запись и исполнение устанавливаются с помощью числовых кодов 0400, 0200 и 0100 соответственно. Их можно комбинировать. Например, код 0700 позволяет читать, записывать и изменять файлы владельцем.
Группа
Группа — это несколько пользователей Linux, которые могут использовать (при достаточных правах доступа) файлы и папке на уровне с их владельцем. Изменить группу пользователей ассоциированных с файлом или директорией можно командой chgrp
.
Права на чтение, запись и исполнение устанавливаются с помощью числовых кодов 0040, 0020 и 0010 соответственно. Их можно комбинировать. Например, код 0070 позволяет читать, записывать и изменять файлы ассоциированной с файлом группой пользователей.
Все остальные
Это собирательное название для тех, кто не является владельцем файла или не относится к группе пользователей, которая может работать с этим файлом или директорией. Хорошая аналогия – это «весь мир», «каждый» или «любой».
Права на чтение, запись и исполнение устанавливаются с помощью числовых кодов 0004, 0002 и 0001 соответственно. Их можно комбинировать. Например, код 0007 позволяет читать, записывать и изменять файлы любому желающему.
Права на чтение, запись и выполнение
Чтение
Позволяет файлу быть прочитанным определенной группой пользователей.
Определяется как «r» в выводе команды ls
Запись
Позволяет изменять файлы или директории.
Определяется как «w» в выводе команды ls
Выполнение
Позволяет запускать бинарные файлы. Кроме этого, проверяет является ли папка доступной для поиска. Например, если у директории выставлены права 0600, то Вы не сможете воспользоваться командой cd
, чтобы войти в эту папку или просмотреть ее содержимое командой ls
Определяется как «x» в выводе команды ls
Ну а теперь можно переходить к практике.
Определение и контроль прав доступа в Linux командой ls
С помощью команды ls
можно узнать какие права доступа выставлены на файлы в данной или указанной директории:
total 0
-rw-r--r-- 1 gruyere staff 0 27 Feb 19:43 bar
drwxr-xr-x 2 gruyere staff 68 27 Feb 19:45 baz
-rw-r--r-- 1 gruyere staff 0 27 Feb 19:43 foo
Как видно из примера выше, команда ls
показывает символьный код прав доступа на файлы и директории. В 3 и 4-ой колонке также указывается, кто является владельцем этих файлов или директорий и к какой группе пользователей они принадлежат.
chmod
chmod
(change mode) – это широко используемая команда для изменения прав доступа к файлам и папкам в Linux. Она позволяет устанавливать права на доступ как пользователю, так и группе пользователей и для всех остальных.
Кроме этого, серверные язык программирования (вроде php или Python) предоставляют некую копию этой команды в том смысле, что у них схожа нотация установки прав.
Абсолютная и символьная нотация
chmod
поддерживает 2 типа синтаксиса для изменения прав доступа:
- Абсолютная нотация – восьмеричное число, указывающее на то, какие биты доступа активировать(ны), например 0777
- Символьная нотация – сочетание букв и цифр устанавливающих бит доступа.
Восьмеричный код более естественен, он гарантирует установку особых прав доступа на файлы и директории, кроме этого, этот подход используется в языках программирования для программного изменения прав доступа.
Символьная нотация используется для добавления или удаления уже определенных прав. Существуют специальные сайты для перевода абсолютной нотации в символьную и наоборот, они позволяют лучше понять как работают все эти права доступа и командаchmod
. Вот один из них:
Установка или изменение прав доступа с помощью chmod
в Linux
Синтаксис chmod
очень прост:
Права доступа можно указывать используя числовой или символьный код:
chmod +x bar.sh # symbolic
Для дополнительной информации о команде воспользуйтесь командой man chmod