The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

[Linux] Основы управления доступом к файлам. (linux file access)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, file, access,  (найти похожие документы)
From: Lomash Dmitry <lomash@mtuci-ncb.donpac.ru> Subject: [Linux] Основы управления доступом к файлам. Автор статьи - Lomash Dmitry <lomash@mtuci-ncb.donpac.ru> 1.12.00 Оригинал доступен на сервере LinuxRSP.Ru (Все об операционной системе Linux на русском языке) http://www.linuxrsp.ru/ Курс молодого бойца. Основы управления доступом к файлам. Операционная система Linux - это многопользовательская система, которая дает огромные возможности манипулирования доступом к данным для каждого пользователя отдельно. Это позволяет гибко регулировать отношения между пользователями, объединяя их в группы, что позволит защитить данные одного пользователя от нежелательного вмешательства других. Бессмысленно считать, что файловая система это не самая важная часть операционной системы, поскольку все данные пользователей хранятся именно в файлах. В UNIX-подобных системах файлы также обеспечивают доступ к периферийным устройствам, дисковым накопителям, принтерам и т.п. UID, GID Каждый пользователь в системе имеет свой уникальный идентификационный номер (user-ID, или UID). Также пользователи могут объединяться в группы, которые в свою очередь имеют group-ID, или GID. Чтобы узнать свой UID и GID, т.е. уникальный номер пользователя и номер группы, к которой Вы принадлежите, необходимо ввести команду id: [dmitry@localhost dmitry]$id uid=502 (dmitry) gid=503(users) groups=503(users) Права доступа к файлам В свою очередь файлы имеют двух владельцев: пользователя (user owner) и группу пользователей (group owner). Для каждого файла есть индивидуальные права доступа, которые разбиты на три группы: 1. Доступ для пользователя-владельца файла (owner). 2. Доступ для группы-владельца файла (group). 3. Доступ для остальных пользователей (others). Для каждой категории устанавливаются три вида доступа: (x) - право на запуск файла, (r) - право на чтение файла, (w) - право на изменение (редактирование) файла. Для того, чтобы увидеть права доступа к файлам необходимо ввести команду ls с ключом -l: [dmitry@localhost dmitry]$ls -l /home/file.tmp -rwxr-xr-- 1 dmitry users 33 Dec 1 00:38 file.tmp Для данного примера мы видим, что владелец имеет права на чтение, запись, и выполнение (первые три буквы rwx), группа пользователей может лишь читать и выполнять этот файл (следующие три r-x), ну а остальные пользователи могут только читать данный файл (последние символы r--). Изменение прав доступа Права пользователя могут быть изменены только владельцем файла или пользователем с правами администратора системы. Для изменения прав используется команда chmod [ u | g | o | a ] [+ | - | = ] [r | w | x ] name1 [name2 ...]. В качестве аргументов команда принимает указание классов доступа ('u' - владелец-пользователь, 'g' - владелец-группа, 'o' - остальные пользователи, 'a' - все вышеперечисленные группы вместе), права доступа ('r' - чтение, 'w' - запись, 'x' - выполнение) и операцию, которую необходимо произвести ('+' - добавить, '-' -убрать, '=' - присвоить). Таким образом, чтобы разрешить выполнение файла prog.pl всем пользователем необходимо выполнить команду: [dmitry@localhost dmitry]$ chmod a+x prog.pl Далее, чтобы оставить права записи только для владельца файла необходимо выполнить: [dmitry@localhost dmitry]$ chmod go-w prog.pl Рассмотрим еще несколько примеров: $ chmod go=w prog.pl установить право на запись для всех пользователей кроме владельца $ chmod a+x prog.pl предоставить право на запись для всех пользователей $ chmod g+x-w prog.pl Добавить для группы право на выполнения файла, но снять право на запись Права доступа можно представить в виде битовой строки, в которой каждые 3 бита определяют права доступа для соответствующей категории пользователей, как представлено в таблице: rwx rwx rwx 421 421 421 user group others владелец группа остальные Таким образом, для команды chmod 666 prog.pl имеем: [dmitry@localhost dmitry]$ chmod 666 prog.pl [dmitry@localhost dmitry]$ ls -l prog.pl -rw-rw-rw- 1 dmitry users 78 Nov 20 prog.pl Команда chmod 644 somefile устанавливает "обычные" права доступа, т.е. владелец может читать и записывать в файл, а все остальные пользователи - только читать. Особенности прав доступа для каталогов Права доступа для каталогов не столь очевидны. Это в первую очередь связано с тем, что система трактует операции чтения и записи для каталогов отлично от остальных файлов. Право чтения каталога позволяет Вам получить имена (и только имена) файлов, находящихся в данном каталоге. Чтобы получить дополнительную информацию о файлах каталога (например, подробный листинг команды ls -l), системы придется "заглянуть" в метаданные файлов, что требует права на выполнения для каталога. Право на выполнение также потребуется для каталога, в который Вы захотите перейти (т.е. сделать его текущим) с помощью команды cd. T-бит, SUID и SGID Наиболее внимательные пользователи быстро замечают, что помимо стандартных "rwx" значений существуют еще и буквы "s" и "t". В действительности, битовая маска прав доступа к файлам содержит 4 группы по 3 бита в каждой. Таким образом, команда chmod 755 это всего лишь краткая запись полной формы команды: chmod 0755. t-бит обычно используется с каталогами. Обычно, когда t-бит для каталога не установлен, файл в данном каталоге может удалить любой пользователь, имеющий доступ на запись к данному файлу. Устанавливая t-бит на каталог мы меняем это правило таким образом, что удалить файл из каталога может только владелец этого каталога или файла. Установить t-бит можно при помощи команд chmod a+tw somefile или chmod 1777 somefile. Атрибуты SUID и SGID позволяют изменить права пользователя при запуске на выполнения файла, имеющего эти атрибуты. Запускаемая программа получает права доступа к системным ресурсам на основе прав доступа пользователя, запустившего программу. Установка же флагов SUID и SGID изменяет это правило таким образом, что назначает права доступа к системным ресурсам исходя из прав доступа владельца файла. Т.е. запущенный исполняемый файл, которым владеет суперпользователь, получает права доступа к системным ресурсам на уровне суперпользователя (фактически неограниченные). При этом установка SUID приведет к наследованию прав владельца-пользователя файла, а установка SGID -владельца-группы. В завершении хочется отметить, что пользоваться такими мощными атрибутами как SUID и SGID нужно с крайней осторожностью, особенно подвергать пристальному вниманию программы и скрипты, владельцем которых является root (суперпользователь), т.к. это потенциальная угроза безопасности системы. Литература. 1. Гвидо Сочер. Файлы - управление доступом. 2. А. Робачевский. Операционная система Unix. Автор статьи Lomash Dmitry 1.12.00

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, w0nders (?), 00:06, 16/05/2003 [ответить]  
  • +/
    Если он думает, что он понимает, ему запретить нельзя...
     
  • 2, sunnyd (?), 21:16, 23/03/2010 [ответить]  
  • +/
    $ chmod a+x prog.pl предоставить право на запись для всех пользователей
    1) На мой взгляд в этой строке явная ошибка, должно быть a+w...
    2) Отличие + и = в статье явно не раскрыто... Складывается ощущение, что это одно и то же...
     
  • 3, vodoley (?), 14:46, 08/10/2010 [ответить]  
  • +/
    Статья для меня оказалась ценной тем, что хорошо разжёваны права доступа к каталогам - именно это я и искал.
    Но комментарий sunnyd считаю справедливым. Надо бы поправить. Я напоролся и удивлялся, пока не прочёл комментарий. Писал на <lomash@mtuci-ncb.donpac.ru> - адрес мёртвый.
     
  • 4, Ask (??), 12:28, 15/02/2013 [ответить]  
  • +/
    Статья очень полезная, объясняет GID и UID, которые я часто встречал в PHP запросах, но я не смог понять из нее, откуда берется в t-bit tw-запись, если речь шла о s и t, а так же, что делает tw, мне осталось непонятно. Это права t+w?
    в таком случае, что значит запись t, дает она удалить файл (каталог) или нет?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру