Изучаем Linux, 302 (смешанные среды): Управление доступом к файловой системе и общим ресурсам Linux

Знакомство с файловыми разрешениями файловой системы в Linux

Эта статья поможет вам подготовиться к сдаче экзамена LPI-302 и содержит информацию о взаимодействии Samba с файловой системой Linux и управлении правами доступа к файлам.

Шон Уолберг, старший сетевой инженер, P.Eng

Шон Уолберг работал с Linux- и UNIX-системами с 1994 года в академических, корпоративных и "провайдерских" кругах. Он широко освещает вопросы системного администрирования в течение нескольких последних лет. С ним можно связаться по адресу sean@ertw.com.



25.09.2012

Об этой серии

Эта серия статьей поможет вам освоить задачи администрирования операционной системы Linux. Вы можете использовать материалы этих статей для подготовки к экзаменам программы LPIC третьего уровня (LPIC-3).

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

В этой статье рассматриваются следующие темы:

  • Эффективное использование системы контроля доступа к файлам и директориям.
  • Взаимодействие Samba с файловыми разрешениями операционной системы Linux.

Эта статья поможет вам подготовиться к сдаче экзамена LPI 302 (специализация "Смешанные среды") и содержит материалы цели 315.1 темы 315. Цель имеет вес 3.

Предварительные требования

Чтобы извлечь наибольшую пользу из наших статей, необходимо обладать продвинутыми знаниями о Linux и иметь работоспособный компьютер с Linux, на котором можно будет выполнять все встречающиеся команды.


Еще раз о файловых разрешениях в Linux

Взаимодействие Samba с файловой системой Linux базируется на концепции файловых разрешений этой операционной системы.

Базовые операции

О факультативном экзамене LPI-302

Как и многие другие программы, программа сертификации Linux Professional Institute (LPIC) предусматривает различные уровни сертификации, где для получения каждого последующего уровня необходимо обладать более глубокими знаниями и практическим опытом. Экзамен LPI-302 – это факультативный экзамен третьего уровня программы LPIC, требующий продвинутых знаний в области системного администрирования Linux.

Для получения сертификата LPIC третьего уровня (LPIC-3) необходимо успешно сдать два экзамена первого уровня (101 и 102), два экзамена второго уровня (201 и 202), а также базовый экзамен 301 третьего уровня (LPIC-3). Если вы получили сертификат третьего уровня, вы можете сдавать факультативные экзамены по определенным специализациям, например, экзамен LPI-302.

Управлять доступом к файлам в Linux очень просто. Каждый файл имеет двух владельцев – пользователя и группу. Права доступа к файлу определяются отдельно для пользователя, группы и всех остальных.

Права доступа управляют тремя базовыми операциями с файлами – чтение, запись и выполнение. Право на чтение (Read) означает возможность просматривать содержимое файла или директории. Право на запись (Write) позволяет владельцу удалять или изменять файл, а также создавать новые файлы в директории. Право на выполнение (Execute) требуется для запуска двоичного файла или сценария командной оболочки, а также для входа в директорию.

Особый интерес при работе с файловыми разрешениями представляют сценарии командной оболочки. Для обычного двоичного файла можно установить разрешение только на выполнение, но не устанавливать разрешение на чтение, и пользователь сможет запустить программу, не видя, что находится внутри исполняемого файла. Сценарии командной оболочки запускаются по-другому: для запуска такого сценария пользователю необходимо иметь разрешение на его чтение. Имея разрешение на выполнение, пользователь может запустить сценарий, например, с помощью такой команды: ./myscript.sh.

Разрешение для файла в Linux представлено в виде набора восьмеричных (с основанием 8) цифр и называется режимом файла. Каждая цифра содержит права на чтение/запись/выполнение для одной группы людей. Первая цифра применяется к пользователю-владельцу файла, вторая – к группе-владельцу и третья – ко всем остальным пользователям. Иногда разрешения могут состоять из четырех цифр. В этом случае первая цифра содержит специальные свойства файла, а последние три цифры – разрешения для пользователя/группы/остальных (как в первом случае).

Чтобы понять закодированные разрешения, необходимо обратиться к двоичной системе счисления. Восьмеричное число может быть представлено тремя двоичными битами:

  • 001. Бит исполнения (Execute)
  • 010. Бит записи (Write)
  • 100. Бит чтения (Read)

Складывая биты вместе, мы получим комбинацию разрешений. Для файла с правами на чтение и выполнение будут установлены два соответствующих бита, образующие двоичное число 101, что соответствует восьмеричному значению 5. Если установлены все три бита, то мы получим двоичное число 111 или 7 в восьмеричной системе. И наоборот, число 6 в восьмеричной системе соответствует числу 110 в двоичной системе, т. е. разрешениям на чтение и запись, но не на выполнение.

Режим файла 644 для всех трех групп пользователей означает следующие разрешения: чтение/запись для пользователя-владельца и только чтение для группы-владельца и всех остальных. Разрешение для группы имеет приоритет по сравнению с разрешением для всех остальных, поэтому режим файла 604 не позволит группе-владельцу просматривать файл, но позволит делать это всем остальным. Режим 640 позволит читать и изменять файл его владельцу и просто читать файл группе; любой доступ к файлу будет запрещен для всех остальных.

Работа с файловыми разрешениями из командной строки

Создайте ваш собственный канал

Вы можете создать ваш собственный RSS, Atom или HTML канал обновлений и получать уведомления о новых или обновленных статьях нашего сайта. Для этого перейдите на страницу developerWorks RSS feeds, выберите зону Linux, установите флажок Статьи и введите в качестве ключевой фразы Linux Professional Institute, после чего выберите требуемый тип канала.

Команда chmod изменяет режим файла. Например, команда chmod 700 foo изменит разрешения для файла foo на 700 независимо от того, какие разрешения были установлены ранее.

Можно также сбросить разрешения из командной строки. Вместо восьмеричных значений можно указывать относительные значение в форме [ugoa][[+-=][rwx]. Сначала указывается одна из букв u, g, o или a, что означает user (пользователь), group (группа), other (другие) или all (все), соответственно. После этого можно добавить (+), удалить (-) или установить (=) биты Read/Write/Execute (чтение/запись/выполнение).

Например, команда chmod u+x foo устанавливает для файла foo бит Execute, не затрагивая все остальные биты. Команда chmod g-rw something удаляет разрешения на запись и чтение для группы.

Можно также использовать команду chmod с параметром --reference. В результате выполнения команды chmod --reference файл1 файл2 файл 2 будет иметь такие же разрешения, что и файл 1.

Для изменения владельца файла используется команда chown. Например, команда chown sean foo изменяет владельца файла foo на sean. Владельца файла может изменить только пользователь root или текущий владелец.

Команда chgrp изменяет группу-владельца файла. Обычный пользователь должен входить в состав новой группы.

Использование масок

Поскольку по своей природе файловые разрешения являются двоичными, то для установки или снятия битов можно воспользоваться операциями двоичной логики. В данном случае применяются бинарные операции OR (логическое "или") и AND (логическое "и"). Результаты выполнения этих операций показаны в таблицах на рисунке 1.

Рисунок 1. Таблицы результирующих значений для операций OR и AND
Рисунок 1. Таблицы результирующих значений для операций OR и AND

Результат операции OR будет Истина (1) в том случае, если хотя бы один из операндов равен 1. Результат будет Ложь (0) лишь в том случае, когда оба операнда равны 0. Операция AND работает наоборот: для получения Истины оба бита должны быть равны 1, в противном случае результат будет ложным. Важно заметить, что порядок расположения операндов не имеет значения: операция A OR B тождественна операции B OR A.

Если операция выполняется над несколькими двоичными битами, то каждый бит вычисляется отдельно. Таким образом, результатом операции 01 AND 11 будет являться 01. Первая результирующая цифра – это 0, поскольку результатом операции 0 AND 1 будет 0. Вторая результирующая цифра – это 1, поскольку результатом операции 1 AND 1 будет 1. Чтобы в дальнейшем вам было проще работать с файловыми разрешениями, запомните, что для установки битов будет использоваться операция OR, а для их снятия – операция AND.

Возвращаясь к восьмеричной системе, получается, что если операция OR со значением 600 применяется к файлу с любым режимом, то пользователь-владелец файла получает разрешения на чтение и запись независимо от его текущих разрешений. Операция AND со значением 775 сбросит бит записи для всех остальных пользователей, поскольку число 5 в двоичном формате имеет значение 101, а бит записи – значение 010.


Взаимодействие Samba с файловыми разрешениями

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

В Samba есть ряд параметров, управляющих назначением разрешений в различных ситуациях. Что касается параметров для работы с файловыми разрешениями, то одни параметры предназначены для установки битов, а другие – для их сбрасывания. Все эти параметры можно использовать на уровне отдельного общего ресурса или на глобальном уровне, затрагивающем все общие ресурсы. Как и в случае с другими глобальными параметрами, их можно переопределить на уровне того или иного общего ресурса.

Создание файлов и директорий

Вновь создаваемые файлы должны иметь набор разрешений. Точно так же, директория, созданная в проводнике Windows с помощью команды New Folder, должна иметь определенный начальный режим. Эти две ситуации обрабатываются различными параметрами Samba.

Сначала Samba получает запрос на создание файла с определенным файловым режимом. Затем для сброса битов выполняется операция AND со значением параметра create mask. По умолчанию маска имеет значение 0744, в результате чего удаляются разрешения на запись и выполнение для группы и всех остальных. После этого полученный результат объединяется операцией OR с параметром force create mode для установки нужных битов. По умолчанию параметр force create mode имеет значение 000, в результате чего файловые разрешения не затрагиваются.

При создании директории выполняются те же самые действия за исключением того, что вместо параметров create mask и force create mode используются параметры directory mask и force directory mode, соответственно. В листинге 1 приведены примеры конфигураций, изменяющих процесс создания файлов и директорий.

Листинг 1. Использование параметров, изменяющих разрешения для создаваемых файлов и директорий
[global]
create mask = 770
force create mode = 600
directory mask = 777
force directory mode = 711

[public]
create mask = 777
force create mode = 666

В листинге 1 параметры распределены по двум разделам. Раздел [global] содержит параметры как для файлов, так и для директорий. При создании файлов биты разрешений для других пользователей сбрасываются в 0, поскольку последняя цифра параметра create mask – это 0, а все остальные остаются без изменений, поскольку им соответствуют семерки. После этого получившийся результат объединяется операцией ORсо значением 600, в результате чего пользователи получают разрешения на чтение и запись своих собственных файлов.

Режим директорий объединяется операцией AND со значением 777, в результате чего все биты передаются без изменений оператору OR и объединяются со значением 711, позволяющим владельцам файлов читать, изменять и выполнять, а всем остальным – по меньшей мере, выполнять их. Для файлового ресурса public установлены менее строгие ограничения. Любой пользователь получает права на чтение и запись файлов в этой директории.

Изменение разрешений для файлов и директорий

С помощью проводника Windows можно указывать пользователей, имеющих доступ к вашим файлам. По умолчанию выводятся разрешения Linux, соответствующие группам Microsoft® Windows NT®. Если вы измените эти разрешения, то они будут заново сопоставлены с файловыми разрешениями Linux. Существует другой набор параметров, управляющих установкой и сбросом битов при изменении файловых разрешений, а не при создании файлов и директорий.

Для работы с файловыми разрешениями при их изменении используются следующие параметры:

  • security mask, объединяемый операцией AND с файловыми разрешениями
  • force security mode, объединяемый операцией OR с файловыми разрешениями
  • directory security mask, объединяемый операцией AND с разрешениями для директории
  • force directory security mode, объединяемый операцией OR с разрешениями для директории

Сводная таблица параметров для работы с правами доступа

В таблице 1 перечислены все параметры, относящиеся к установке или сбросу битов файловых разрешений. Помните о том, что сначала биты сбрасываются в соответствии с заданной маской, а уже затем устанавливаются.

Таблица 1. Параметры Samba для работы с правами доступа к файлам и директориям
ДействиеУстановка битов (OR)Сброс битов (AND)
Создание файлаforce create modecreate mask
Создание директорииforce directory modedirectory mask
Изменение клиентом разрешений для файлаforce security modesecurity mask
Изменение клиентом разрешений для директорииforce directory security modedirectory security mask

Принудительная установка владельцев и групп файлов

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

Для установки требуемого владельца и группы файла в Samba есть два параметра: force user и force group. Эти параметры можно использовать на глобальном уровне, но на практике они используются на уровне общего ресурса. Например, если задать на уровне файлового ресурса параметр force group = projecta, то все файлы будут принадлежать группе projecta.

Параметр force group можно использовать совместно со знаком плюс (+), после которого указывается имя группы, например, force group = +admins. Знак плюс не воспринимается здесь дословно, а говорит Samba о том, что необходимо изменить группу на admins только в том случае, если пользователь уже состоит в ней (например, это его дополнительная группа). Пользователи, которые не состоят в группе admins, будут продолжать использовать свою основную группу при создании новых файлов.


Заключение

В Samba имеется несколько различных параметров, влияющих на расчет файловых разрешений. Эти параметры имеют вид восьмеричной маски, которая объединяется логической операцией AND с предлагаемыми разрешениями для сброса ненужных битов, а затем объединяется операцией OR для установки требуемых битов. Биты устанавливаются отдельно для файлов и директорий, а также для вновь создаваемых файлов и для изменяемых разрешений; таким образом, всего существует восемь различных параметров. Наконец, для файлов указанного общего ресурса можно принудительно назначить пользователя и группу.

Несмотря на то, что Samba позволяет гибко управлять файловыми разрешениями, следует аккуратно использовать эти возможности, поскольку можно получить совершенно не тот результат, который вы ожидали.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=837339
ArticleTitle=Изучаем Linux, 302 (смешанные среды): Управление доступом к файловой системе и общим ресурсам Linux
publish-date=09252012