Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение. |
Файловая система
Индексные дескрипторы
Формат таблицы индексных дескрипторов и самих дескрипторов обсуждался в лекции 6. Следует сказать, что непосредственное изменение индексного дескриптора невозможно, так как модификацию дескриптора выполняют различные программы в процессе своей работы. Нет необходимости вмешиваться в содержимое индексного дескриптора напрямую. Для восстановления таблицы индексных дескрипторов после сбоя следует воспользоваться программой fsck.
Списки ACL
Стандартные права доступа в UNIX не всегда идеальным образом подходят для решения задач администрирования системы. Например, что сделает администратор, если доступ к файлу на чтение и запись надо дать одной группе пользователей? Конечно, назначит эту группу владелицей файла, а затем делегирует право чтения и записи файла этой группе, вот так:
chgrp нужная_группа файл chmod g=rw файл
А если надо дать право доступа только одному из членов этой группы? Тогда можно создать новую группу специально для этой цели, сделать ее членом только одного пользователя и затем указать, что эта новая группа будет владеть файлом:
addgroup новая_группа chgrp новая_группа файл chmod g=rw файл #редактируем /etc/group и добавляем в новую группу существующего пользователя vi /etc/group
Такое ухищрение нам помогло, но что делать, если надо дать право чтения, записи и запуска двум разным пользователям, а еще двум – право чтения и записи, а еще одному – только чтения, а всем остальным – вообще не дать доступ к этому файлу? На такой вопрос нет ответа, если вы работаете в "классической" версии UNIX. Однако, некоторые современные системы UNIX (например, Solaris и FreeBSD) обладают требуемым механизмом. Это – списки управления доступом к файловой системе, access control lists (ACLs).
Списки управления доступом дают более гибкие возможности назначения прав доступа, чем традиционные права доступа UNIX. С помощью ACL можно назначить как права доступа хозяина файла, группы файла и всех остальных, так и отдельные права для указанных пользователей и групп, а также максимальные права доступа по умолчанию, которые разрешено иметь любому пользователю.
Здесь и далее мы будем называть ACL для файлов и каталогов "расширенными правами доступа". Расширенные права доступа к файлам и каталогам устанавливаются командой setfacl.
Они представляют собой ряд полей, разделенных двоеточиями:
entry_type:[uid|gid]:perms
Здесь entry_type – тип расширенного права доступа, uid и gid – идентификаторы пользователя и группы, соответственно, а perms – собственно назначаемые права доступа.
Расширенные права доступа (ACL) к файлам
Расширенные права доступа к файлу могут быть такими, как показано в табл. 6.7.
Маска задает максимальные права доступа для всех пользователей, за исключением хозяина и групп. Установка маски представляет собой самый быстрый путь изменить фактические (эффективные) права доступа всех пользователей и групп. Например, маска r – показывает, что пользователи и группы не могут иметь больших прав, чем просто чтение, даже если им назначены права доступа на чтение и запись.
Расширенные права доступа (ACL) к каталогам
Кроме расширенных прав доступа к файлу, которые могут быть применены и к каталогу, существуют специфические права доступа к каталогу, а именно, права доступа по умолчанию. Файлы и подкаталоги, которые будут создаваться в этом каталоге, будут получать такие же расширенные права доступа по умолчанию, которые заданы в расширеных правах доступа к этому каталогу.
Устанавливая права доступа по умолчанию для конкретных пользователей и групп, необходимо также установить права доступа по умолчанию для хозяина и группы файла, а также всех остальных, и маску ACL (эти четыре обязательных записи указаны выше по тексту – первыми в таблице 6.7).
Присвоение расширенных прав доступа осуществляется программой setfacl с ключом –s (set). Без этого ключа расширенные права доступа модифицируются, с ним – устанавливаются в точности такими, как указано в данной команде setfacl.
Например, для установки права на чтение и запись файла project07 для пользователей lena и petr надлежит выполнить команду
setfacl –m user:lena:rw-,user:petr:rw- project07
Ключ -m служит для добавления прав доступа, а не для их замены. Эффективные (т.е. те, которые в самом деле будут применяться) права доступа пользователей lena и petr определяют не только их персональные права доступа к этому файлу, но и маска, которая показывает права доступа по умолчанию. Из персональных прав и маски выбираются наиболее строгие ограничения, поэтому, если в персональных правах доступа или в маске для файла project07 отсутствует право на запись, ни lena, ни petr не получат реальной возможности изменить файл project07.
Расширенные права доступа не показываются в выводе программы ls, но команда ls –l позволяет установить наличие расширенных прав доступа к файлу или каталогу. Если они назначены, то в первой колонке после стандартных прав доступа владельца, группы файла и остальных будет стоять знак "+" ("плюс"). Посмотреть, какие именно расширенные права доступа назначены, можно командой
getfacl имя_файла
Более подробную информацию о ключах setfacl и getfacl следует получить из man.
Помните, что назначение прав доступа с помощью chmod может привести к изменению записей ACL, а изменение маски ACL может повлиять на фактические права доступа к объекту для его владельца, группы и всех остальных пользователей.
Монтирование файлов в качестве устройств (lofi)
В Solaris есть возможность монтировать обычный файл в качестве блочного устройства. Самое широкое применение этой возможности – монтирование образа компакт-диска, хотя точно так же можно монтировать образы любых других дисков, которые легко создать – например, с помощью команды dd.
Для работы с образом диска, записанным в файл, требуется программа lofiadm, которая управляет драйвером lofi. Этот драйвер позволяет связать файл с блочным псевдоустройством. После этого содержимое файла будет доступно посредством обращения к файлу этого блочного устройства. У системы будет полное впечатление, что это и есть устройство и его можно монтировать с помощью mount, проверять на корректность записей на нем с помощью fsck и т.п.
Программу lofiadm следует использовать для добавления таких псевдоустройств, удаления связи файла и псевдоустройства и выводе информации о таких устройствах в системе.
Например, можно смонтировать образ компакт-диска стандарта ISO, лежащего в файле ex.iso:
lofiadm -a /home/ivan/ex.iso /dev/lofi/1
Затем можно смонтировать новое устройство в системе:
mount -F hsfs -o ro /dev/lofi/1 /mnt
и проверить, видно ли его:
df -k /mnt Filesystem kbytes used avail capacity Mounted on /dev/lofi/1 512418 512418 0 100% /mnt
Для демонтирования псевдоустройства и его удаления из системы следует дать следующие команды:
umount /mnt lofiadm -d /dev/lofi/1
Обратите внимание на возможность создания файловой системы на псевдоустройстве и появление устройства прямого доступа ( rlofi, аналогично rdsk ) после выполнения lofiadm –a:
lofiadm -a /export/home/test /dev/lofi/1 newfs /dev/rlofi/1 newfs: construct a new file system /dev/rlofi/1: (y/n)? y /dev/rlofi/1: 71638 sectors in 119 cylinders of 1 tracks, 602 sectors 35.0MB in 8 cyl groups (16 c/g, 4.70MB/g, 2240 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 9664, 19296, 28928, ...
К файлу, который смонтирован в качестве псевдоустройства с помощью lofiadm, нельзя обращаться напрямую как к файлу. Это аналогично тому, что нельзя напрямую обращаться к диску для записи файла, а следует делать это через драйвер файловой системы. Надлежит устанавливать такие права доступа к файлам, монтируемым как устройства, чтобы предотвратить несанкционированный доступ к ним как к обычным файлам.
После перезагрузки связь файла и псевдоустройства теряется. Если требуется сделать ее постоянной, надо написать скрипт, который будет запускаться при загрузке и добавлять соответствующее псевдоустройство в систему, а затем его монтировать.
Возможность управлять псевдоустройствами зависит от прав доступа к файлу /dev/lofictl. По умолчанию правом монтирования и демонирования псевдоустройств обладает только root.