Настройка пользователей и права доступа

Навигация по сайту:
Главная  |   Авто, Мото   |   Аудио Видео   |   Бизнес, Работа   |   Бытовая техника   |   Дача, Сад, Огород   |   Детский Мир   |   Дом, Семья   |   Зверье мое   |   Здоровье   |   Компьютеры и Оргтехника   |   Кулинария   |   Любовь и Секс   |   Связь и Телефоны   |   Спорт   |   Стиль и Мода   |   Строительство и Ремонт   |   Туризм Охота Рыбалка   |   Фото и Видеокамеры




Главная Страница > Программное обеспечение > Настройка пользователей и права доступа

Настройка пользователей и права доступа

Компьютерная безопасность - вещь в наше время более чем актуальная. Количество различных гадов, которые стремятся осложнить жизнь добропорядочным пользователям ПК, очень быстро растет, в равной степени как из-за беспечности самих пользователей, так и заботами производителей ПО, которые очень стараются, но далеко не всегда справляются с задачей создания более или менее защищенных программных продуктов. Впрочем, они тоже не лыком шиты, а кто предупрежден, тот вооружен, как известно. Так что давайте постепенно знакомиться с теми понятиями и разработками, на которых базируются современные представления о компьютерной безопасности.
Одним из основополагающих понятий современной концепции компьютерной безопасности является разделение прав доступа между пользователями. Эта концепция широко применяется как в Unix (FreeBSD, Linux), так и в Windows. Однако если Unix была многопользовательской всегда, то Windows, как и Mac OS, стала такой не сразу.

Системы, которые предназначались для частных лиц (Windows 95 / 98 / МE), по сути дела многопользовательскими не были. Все, на что они были способны, - это предоставить возможность выбора профилей, то есть способа отображения данных в соответствии с настройками того или иного юзера. По-настоящему многопользовательской системой являлась лишь Windows NT, преимущества которой унаследовала Windows 2000. Разделение прав доступа в этих системах было организовано невероятно сложно (например, по неведомым причинам можно было создавать аж три учетные записи, предоставляющие юзеру права суперпользователя).

Unix-системы используют так называемую одноуровневую модель прав доступа. Иными словами, в них предусмотрено лишь два вида пользователей - root и все остальные. Root может делать все, что ему заблагорассудится, а остальные - только то, что им позволит root. Простота этой модели и обуславливает высокую защищенность Unix-систем: лифт нередко ломается, а вот лестницу разрушить сложновато. Разумеется, никто не утверждает, будто по сравнению с открытой ОС Windows ущербна. Более того, даже в операционках на базе Unix для того, чтобы правильно настроить доступ к веб-серверу, нужно постараться. Хотя из этого не следует, что проделать ту же самую работу на Windows-сервере намного проще.

Немного теории

Учитывая то, что большинство домашних пользователей по тем или иным причинам предпочитают иметь дело с системой Windows, установленной в NTFS-разделе (это очень важно, поскольку в FAT понятие права доступа является условным), в теоретической части я буду описывать настройки параметров безопасности именно этой ОС. Хотя, по сути дела, все нижеизложенное пригодится и владельцам других ОС: концепция есть концепция, понятие это довольно общее, и его можно отнести (обладая развитым воображением, разумеется) к чему угодно.

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

Очевидно, что количество объектов в многопользовательской системе избыточно для каждого отдельно взятого юзера. Таким образом, многопользовательскую систему можно сравнить с режимным предприятием, на котором каждый сотрудник имеет право пользоваться не только собственным кабинетом, но и некоторыми другими помещениями.
Реализуются эти права примерно одинаково. Когда пользователь заходит в систему, то блок, отвечающий за аутентификацию, спрашивает у него имя и пароль (фактически пропуск с фотографией). В базе данных этого блока хранятся все пары "логин-пароль" для всех пользователей системы. Если предъявленная пара находится в базе, то система запускает процесс, в ходе которого создается рабочая среда для данного пользователя.

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

Вроде бы все понятно, за исключением одного момента, но на нем-то и основана концепция прав доступа. Как только процесс или программа, запущенная пользователем, обращается к тому или иному объекту, операционная система должна свериться с маркером доступа и решить вопрос о допуске либо положительно, либо отрицательно. А для этого нужно, чтобы система имела некоторые данные, с которыми она и будет сравнивать маркер. В Windows-системах эта структура называется дескриптором защиты.

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

Давайте рассмотрим технологию, на которой построено обращение к спискам контроля доступа (Access Control List, или ACL), встроенную в систему Windows. У этой технологии есть два главных достоинства: гибкость и универсальность.

Сам дескриптор защиты состоит из номера версии защиты, SID владельца, SID группы, списка управления избирательным доступом (Discretionary Access Control List, или DACL), системного списка управления доступом (System Access Control List, или SACL) и опционных флагов. Первая и последняя составляющие особого отношения к технологии защиты не имеют, поэтому мы их проигнорируем: какие есть, такие есть. Остальные параметры заслуживают тщательного изучения.
SID владельца - это идентификатор защиты объекта, который может выполнять какие-либо действия (как вы понимаете, пользователь в операционной системе также является объектом). SID содержится в дескрипторе защиты объекта и используется системой для идентификации этого объекта. SID группы - то же самое, что SID владельца, только относится он уже к группе.

В списке управления избирательным доступом содержатся сведения о правах доступа к этому объекту для каждого пользователя и каждой группы. А системный список управления доступом работает с журналом безопасности, в который заносятся все действия, произведенные над объектом. И DACL, и SACL состоят из элементов контроля доступа (Access Control Entries, или ACE). DACL состоит из SID пользователя или маски доступа, которая является или отдельной, или не совпадающей с другими масками доступа для каждой группы объектов. Если в системе принято наследование прав доступа, то в ACE помещаются и соответствующие флаги. ACE бывают либо запрещающими, либо разрешающими (мы не учитываем Active Directory).
В SACL имеются ACE двух типов - системный аудит (System Audit ACE) и объект системного аудита (System Audit Object ACE). Таким образом, обеспечивается контроль над всеми операциями: система регистрирует и разрешения, и запреты. Причем SACL может вообще не существовать: в таком случае протоколирование не будет производиться.

Любой ACL работает в соответствии с несколькими основными принципами. К объекту, у которого DACL вообще отсутствует, всем юзерам предоставляется неограниченный доступ. Если же DACL существует, но внутри него ничего нет (пустой DACL), то доступ к объекту закрыт для всех. Изменить DACL может либо непосредственный владелец объекта, либо пользователь, имеющий право завладеть им, а точнее, захватить его. Если SID объекта совпадает с SID маркера доступа процесса, то либо из маски прав доступа будут удалены запрещающие маски доступа каждого ACE, либо в нее будут добавлены разрешающие маски доступа каждого ACE. В результате этой операции будет получена маска, которая определяет права доступа для любой запрашивающей их программы.

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

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

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

Немного практики

Для настройки прав доступа в системе Windows XP Номе Edition, установленной в NTFS-разделе, используются две консольные программы - cacls и xcacls. Первая утилита устанавливается в систему по умолчанию, а вторую можно найти в Support Tools на компакт- диске Windows XP (если он потерян, то придется скачивать утилиту со страницы
www.microsoft.com/windows2000/techinfo/reskit/tools). Cacls менее функциональна, зато охотно выдает подсказки на русском языке.
Cacls - это сокращение от Control ACLs (дословный перевод - "управление списками управления доступом"). Синтаксис этой команды таков: cacls имя_файла [/t] [/e] [/c] [/g пользователь:разрешение] [/r пользователь [...]] [/p пользователь:разрешение [...]] [/d пользователь [...]].

Вполне очевидно, что имя файла является обязательной частью команды, причем вместо точного названия разрешается указать его маску с использованием символов "*" и "?". Параметр t позволяет изменить таблицы контроля доступа (DACL) указанных файлов в текущем каталоге и всех его подкаталогах. Параметр e говорит системе о том, что DACL следует не заменить, а редактировать. Если указать параметр c, то изменения в DACL будут вноситься, несмотря на обнаруженные синтаксические ошибки.

Перед именем пользователя должен стоять хотя бы один из четырех параметров: g, r, p, d. Первый из них позволяет предоставить пользователю определенные права и может иметь одно из пяти значений: n (никаких прав), r (право на чтение), w (право на запись), с (право на изменение) и f (полный доступ). Параметр p, стоящий перед именем пользователя, указывает на то, что произойдет изменение прав пользователя. Права обозначаются точно так же, как и в предыдущем случае. Параметр r отменяет все текущие права доступа, а d запрещает доступ для пользователя, указанного в команде.


Консольная утилита cacls - самое удобное средство для работы с правами доступа пользователей. Правда, аскетичная она.

Как и все консольные программы, утилита cacls проста, понятна и весьма удобна в использовании. Однако встречаются пользователи, у которых к командной строке что-то вроде идиосинкразии. (Идиосинкразия (от греч. idios "своеобразный, особый, необычный" и synkrasis "смешение") - это болезненная реакция, возникающая у некоторых людей на раздражители, которые у большинства других не вызывают подобных явлений. - Прим. ред. - Угу, но сейчас такие времена, что большинство пользователей и не помнят, как командная строка выглядит. - Прим. Remo.) Им стоит либо разориться на Windows XP Professional Edition, либо перегрузиться в безопасном режиме, в котором можно отредактировать права доступа к любому файлу, проставляя галочки в нужных квадратиках.
Для того чтобы открыть графический редактор ASL, достаточно в контекстном меню "Проводника" выбрать пункт "Свойства" и открыть в нем вкладку "Безопасность".


На вкладке "Безопасность" свойств файла можно задать основные права доступа к файлу. Приятно, что все понятно.

Там вы увидите всех зарегистрированных в системе пользователей и найдете информацию о том, какие права доступа к выделенному файлу имеет каждый из них. Правда, только самые общие, которые основаны на нескольких ACE с одинаковым SID. На настоящий ACL-редактор как-то не тянет. В этом окне можно только добавить или удалить уже имеющиеся права, да и то если это не противоречит порядку наследования.

Для входа в полнофункциональную утилиту, позволяющую добавлять, удалять и изменять ACE, следует нажать кнопку "Дополнительно". В открывшемся меню перечислены все ACE, причем, согласно известному нам "антидемократическому" принципу, сперва идут запрещающие, а за ними все прочие. Само собой, ACE можно удалять, изменять и добавлять.
Однако если вы собрались добавить ACE, то программа попросит вас ввести имя пользователя, иначе понятие ACE потеряло бы всякий смысл. Тут возможны варианты: имя пользователя либо вводится вручную, либо выбирается стандартным для Windows способом - через "Поиск".

При помощи этой программы можно менять имя пользователя прямо по ходу дела: начали работать с одним пользователем, а закончили с другим. Для упрощения процедуры редактирования в программе предусмотрена полезная кнопка "Очистить". Она предназначена для того, чтобы одним разом убирать галки изо всех квадратиков. Редактор ACE, как и все остальные инструменты системы Windows, достаточно разумен, убедитесь сами.

Какая текстовая утилита позволит ввести явно противоречащие друг другу параметры? А графический редактор ACE даже к таким выходкам пользователя относится с пониманием. Если одновременно поставить галочки в квадратиках, которые соответствуют разрешению и запрету на доступ к объекту, то программа не выругается, а создаст сразу два ACE - запрещающий и разрешающий.

В операционной системе Windows очень важным является такое понятие, как наследование. На вкладках "Разрешения" и "Аудит" дополнительных параметров безопасности находится несколько квадратиков: проставляя в них галки, можно без труда разобраться с наследованием. Одна галка определяет, что дочерний объект наследует права доступа от родительского. Если пользователь снимет ее, ему будет предложено либо установить унаследованные права как явно заданные для этого объекта, либо очистить ACL. Вторая опция позволяет заменить разрешения для всех дочерних объектов явно определенными. Фактически вторая галка предназначена для принудительной передачи прав доступа. Опции наследования на вкладке "Аудит" ничем не отличаются от рассмотренных нами выше.

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


Загрузка системы Windows XP Home Edition в безопасном режиме открывает доступ к средству работы с пользователями.

Напоследок хочу рассказать об одном забавном феномене, связанном с правами. Очень часто для работы с файлами используется стандартный "Проводник" системы Windows. Положим, мы решили переместить файл из одной папки в другую, причем права доступа к конечной папке отличаются от прав доступа к исходной. Таким образом, файл на новом месте получит новые права, определяемые новой папкой. А это может привести к недоразумениям.
Тем не менее избежать подобных неприятностей в ваших силах. Тот же Total Commander, например, умеет копировать файлы, сохраняя исходные права доступа.

Немного альтернативы

В Linux с правами все несколько проще. Каждый пользователь в системе имеет свой уникальный идентификационный номер, или просто UID. Каждой группе тоже соответствует отдельный номер Group ID, или GID. Кстати говоря, группы используются в Linux сплошь и рядом, поскольку это весьма удобно. Чаще всего группы создаются для того, чтобы пользователь мог выполнять какую-либо конкретную задачу. Например, в дистрибутиве ALTLinux пользователю, не включенному в группу cdwriter, не разрешается записывать компакт-диски. Узнать свой идентификационный номер вы можете, введя в консоли команду id.

Каждый файл в системе Linux имеет двух владельцев - пользователя и группу. Соответственно, право доступа к файлу определяется параметрами доступа для пользователя-владельца (owner), параметрами доступа для группы-владельца (group) и параметрами доступа для всех остальных (others). Сами права могут быть такими: право на запуск файла (x), право на чтение файла (r), право на редактирование (w). Получаем по три вида доступа для каждой из трех категорий. Просмотреть права доступа к файлу можно командой ls -l.

Команда выведет на экран строку, которая будет выглядеть примерно так: -rw-r----. Читается сия абракадабра предельно просто. Каждая из трех букв соответствует определенной категории обладателей прав. То есть владелец-пользователь имеет права -rw, владелец-группа - права -r-, а все остальные - права ---. Таким образом, выходит, что пользователю разрешается читать файл и редактировать его, члены группы имеют доступ только на чтение, а для всех остальных файл закрыт.

Для решения задач, связанных с правами доступа, используются команды chmod, chown, chgrp и umask. Команда chown изменяет владельца-пользователя и / или владельца-группу каждого заданного файла. Именем владельца команда считает первый аргумент, который не является опцией. Таким образом, если задать только имя пользователя, то он станет владельцем каждого из указанных файлов. Если за именем пользователя через двоеточие следует имя группы, то изменяется также и группа файла. Команда chgrp очень похожа на chown и производит смену владельца-группы файла.

Команда umask предназначена для изменения одноименного параметра, который, в свою очередь, определяет права доступа по умолчанию для всех файлов, создаваемых пользователем. Если этот параметр равен нулю, то права доступа к создаваемым файлам будут такими: rw-rw-rw, а права доступа к директориям или исполняемым файлам - такими: rwxrwxrwx.


Кнопка "Дополнительно" запускает полноценный графический ACL-редактор. Ненавистникам командной строки понравится.

Полезный параметр umask можно узнать по команде umask, набранной без аргументов. На первый взгляд может показаться, что umask - не более чем аналог ls -l. Это и так, и не так одновременно. Дело в том, что аргументом в случае с umask является не строка символов, а трехзначное число. Действительно, набор прав для каждой категории можно рассматривать как набор битов, который можно выразить восьмеричным числом. Например, параметр umask самого обыкновенного файла, имеющего права rw-rw-rw, будет равен 666, а доступной для всех программы с правами rwxrwxrwx - 777.


На самом деле есть не только чтение, запись и исполнение, но и другие разрешения. Их много, и они очень разные!

Однако самая популярная в широких слоях населения команда для изменения прав доступа - chmod. Ее синтаксис таков: chmod [[u] [g] [o] [a]] [[+] [-] [=]] [[r] [w] [x]] filename1 [filename2 ...]. Аргументами этой команды служат категории пользователей (u - владелец-пользователь, g - владелец-группа, o - остальные пользователи, a - все они, вместе взятые), права доступа (r - чтение, w - запись, x - выполнение) и производимая операция (+ - добавить, - - убрать, = - присвоить).

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


Использование профилей

В этой статье было бы несправедливо не упомянуть о профилях. Рассмотрим это на примере браузера Firefox.
В профиле браузера хранятся все настройки, закладки, cookies, пароли, журнал посещений, темы, кэш и тому подобные полезности. Также в директорию профилей устанавливаются расширения. Кстати, именно этим и отличается расширение от плагина: плагины инсталлируются в директорию браузера.

При первом запуске под управлением системы Windows XP браузер Firefox создает профиль в каталоге :\Documents and Settings\%USER%\Application Data\Mozilla\Firefox\Profiles\
Default.xxx. В профиле находятся файл закладок - bookmarks.html, база данных сертификатов (cert7.db - старый формат; cert8.db - новый формат), база данных cookies - cookies.txt, база данных менеджера загрузок - downloads.rdf, база сохраненных данных форм - formhistory.dat, журнал посещений - history.

dat, список сайтов, которым разрешено или запрещено устанавливать cookies и которым разрешено открывать всплывающие окна, - hostperm.1, база данных ключей для сертификатов - key3.db, файл, определяющий расположение и размер окон, - localstore.rdf, файл mimeTypes.rdf, определяющий порядок работы с MIME-types, файл, определяющий вид боковых панелей - panels.rdf, основной и резервный файлы конфигурации - prefs.js и prefs.bak, файл конфигурации, определяемый пользователем, - user.js. Также в каталоге профиля содержатся три подкаталога: Cache, где хранятся посещенные страницы, временная папка кэша Cache.Trash и Сhrome, содержащая настройки интерфейса, расширений и тем.

При каждом запуске Firefox ищет файл profiles.ini, который лежит в директории профиля и содержит информацию обо всех имеющихся профилях. При этом сама папка профиля может находиться где угодно, хоть на другом логическом диске. Кстати, и профилей тоже может быть сколько угодно. Создавать профили и указывать программе место, где будет находиться папка профиля, удобнее всего при помощи "Менеджера профилей", который запускается командой firefox.exe -p. Только учтите, что при открытом браузере "Менеджер профилей" не стартует.

Несмотря на то что Windows XP является достаточно устойчивой системой, иногда приходится ее переустанавливать (или восстанавливать из образа, что намного быстрее). Операция, конечно, проста и привычна. Однако проблема заключается в том, что приходится восстанавливать не только систему и приложения, но и все настройки. Заново инсталлировать расширения, восстанавливать файл закладок (если есть копия)... В общем, мороки много.
Но всех этих хлопот, если хранить рабочий профиль на отдельном логическом диске и подключать его не только после восстановления системы, но и при загрузке другой ОС, можно избежать. Нужно только запустить "Менеджер профилей" и указать путь к уже существующей папке.

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

Биты и атрибуты

Помимо уже знакомых нам прав rwx, в системе Linux используется t-бит. И битовая маска на самом деле представляет собой конструкцию, состоящую не из трех, а из четырех трехбитовых групп.

Итак, t-бит устанавливается для каталога и корректирует права доступа к файлам, расположенным в этом каталоге. Как правило, для удаления файла из каталога достаточно иметь право на запись в этот файл. Если же t-бит для каталога установлен, то удалить файл может либо владелец каталога, либо владелец файла. Таким образом, в системе очень легко создать некое файловое хранилище, куда пользователи могут помещать свои файлы. А решать вопрос о целесообразности их хранения в этом каталоге будут только два человека - владелец файла (что совершенно справедливо) и владелец каталога (что не менее справедливо). Установить t-бит можно командой chmod a+tw filename или chmod 1777 filename.

Атрибуты SUID и SGID нужны для того, чтобы изменять права пользователя при запуске файла. Как правило, программа получает права пользователя, который запустил эту программу. SUID и SGID изменяют параметры таким образом, что права доступа к системным ресурсам определяются исходя из прав доступа владельца файла. Например, если владельцем файла является суперпользователь, то при запуске файла он получит неограниченный доступ к системным ресурсам.

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

 



Статьи по теме:

{catnews}