вторник, 16 марта 2010 г.

Основы управления доступом к файлам

истчник: http://www.opennet.ru/base/sys/file_access.txt.html
Курс молодого бойца. Основы управления доступом к файлам.

   Операционная система 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 (суперпользователь), т.к. это потенциальная
   угроза безопасности системы.

Комментариев нет:

Отправить комментарий

Ярлыки

Архив блога