LinuxBegin.ru - offline-версия от 26.04.2004
Главная | Все темы | Все статьи | Ссылки | Аналоги Windows-программ в Linux | Top 20

Права доступа к файлам в Unix/Linux.
(Основные концепции UNIX,файловые системы)


- Valery V. Kachurov, 15.11.01. -

Поскольку UNIX - многопользовательская OS, в ней существует система прав доступа к файлам, служащая для защиты файлов каждого пользователя от влияния других пользователей системы.

Права доступа подразделяются на три типа:

-чтение (read),
-запись (write),
-выполнение (execute).

Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов - просматривать перечень имен файлов в каталоге (используя, например, ls). Разрешение на запись позволяет пользователю писать в файл, изменять его или удалять. Для каталогов это дает право cоздавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге. Наконец, разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Если на файле стоит атрибут Execute, то независимо от его расширения он считается программой, которую можно запустить. (Вот почему в *nix не принято ставить исполняемым файлам расширения по типу DOS'овских *.com, *.exe, *.bat. Вообще в Unix/Linux нет такого жесткого понятия 'расширение файла', как в Dos/Windows, и система сама определяет тип файлов независимо от их расширения, но это - уже другая история...). Так же атрибут выполнения может стоять у shell-скриптов, CGI-скриптов, и у всего, что можно хоть как-то запустить. Разрешение на выполнение применительно к каталогам означает возможность выполнять команды вроде cd.

Эти типы прав доступа могут быть предоставлены для трех классов пользователей:

- владельца ? у каждого файла в Linux'e есть один владелец.
- группы ? с каждым файлом связана группа пользователей этого файла. Наиболее общая группа для файлов пользователей называется users, в эту группу обычно включаются все пользователи системы (чтобы узнать группу конкретного файла, используйте команду ls -l file).
- всех остальных пользователей.

Владельцем файла становится юзер, который создал этот файл. Короче говоря, для файла все юзеры делятся на 3 типа: хозяин, или владелец, юзеры, состоящие в одной группе с владельцем, и все остальные юзеры. Для каждого типа - свои права. Учтите, что директории и все системные устройства в UNIX являются обычными файлами. Тот же самый /dev/fd0 - это не сам Floppy disk, а всего лишь файл, связанный с флопповодом. Поэтому, если root запретил юзеру доступ к этому файлу, тот не сможет использовать флопповод (так же обстоят дела с модемами, хардами, etc). Владельцем всех системных файлов является Root. Он же имеет право забирать файлы у одного юзера и передавать их другому (менять владельца).

Делается это так: chown <имя нового владельца> <имя файла>. Для передачи каталога надо вводить: chown -R <ия нового владельца> <имя каталога>

Изменить права доступа к файлу может либо его владелец, либо сам Root. Делается это командой chmod. Существует две формы представления прав доступа: символьная и цифровая.

Символьная форма прав доступа.

Если войти в любой каталог, где есть файлы, и набрать "ls -l", то появится список всех файлов в этом каталоге и права доступа в символьной форме. Строка прав доступа состоит из 10 символов. Первый символ указывает на тип файла: "d"-директория, "-"-обычный файл. Три последующих - права доступа владельца к этому файлу. Если первый символ из этих трех - "r", владелец имеет право читать этот файл, а если "-", то не имеет. Следующие 2 символа - "w"-писать и "x"-запускать. Если вместо них стоит "-", значит, владелец этого права не имеет. Еще 3 символа - права доступа группы, еще три - права всех остальных пользователей. Примеры:

drwxrwxrwx - директория, к которой все имеют любые права доступа.

-rwxr--r-- - обычный файл, владелец может делать все, а остальные - только читать.

-r-------- - обычный файл, который владелец может только читать, а остальные пользователи не видят.

Важно заметить, что права доступа, которые имеет файл, зависят также от прав доступа к каталогу, в котором этот файл находится. Например, даже если файл имеет -rwxrwxrwx, другие пользователи не смогут до него добраться, если у них не будет прав на чтение и выполнение каталога, в котором находится файл. Например, если юзер захочет ограничить доступ ко всем своим файлам, он может просто изменить права доступа своего домашнего каталога /home/user на drwx------. Таким образом, никто другой не будет иметь доступ в его каталог, а следовательно посторонним будут недоступны и все файлы. Так что, пользователь может не заботиться об индивидуальной защите своих файлов. Другими словами, чтобы иметь доступ к файлу, вы должны иметь доступ ко всем каталогам, лежащим на пути от корня к этому файлу, а также разрешение на доступ собственно к этому файлу. Обычно пользователи UNIX весьма открыты всеми своими файлами. По умолчанию файлам устанавливается защита -rw-r--r--, которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа drwxr-xr-x, что позволяет другим пользователям ходить с правами экскурсантов по вашим каталогам, но ничего в них не трогать и не записывать.

Но многие пользователи хотят держать других подальше от своих файлов. Установив права доступа файла -rw-------, вы никому не покажете этот файл и не дадите записать в него. Также хорошо закрывает файлы защита соответствующего каталога drwx------.

С правами доступа в символьной форме chmod работает так:

chmod {a,u,g,o}{+,-}{r,w,x} <filenames>

Кратко, вы выбираете из all (все), user (пользователь), group (группа) или other (другие). Далее указываете, либо вы добавляете права (+), либо лишаете прав (-). И наконец, вы указываете один или несколько режимов: read, write
или execute. Несколько примеров допустимых команд:

- chmod a+r stuff
Дает всем пользователям право читать файл stuff.

- chmod +r stuff
То же самое, что и ранее (a - по умолчанию).

- chmod og-x stuff
Лишает права на выполнение всех, кроме владельца.

- chmod u+rwx stuff
Разрешает владельцу все (read, write и execute).

- chmod o-rwx stuff
Запрещает все (read, write и execute) пользователям категории другие (other).

Числовая форма прав доступа.

Теперь права доступа в числовой форме. Для некоторых эта форма может показаться более простой. Надо запомнить только следующее:

400 - владелец имеет право на чтение
200 - владелец имеет право на запись
100 - владелец имеет право на выполнение
40 - группа имеет право на чтение
20 - группа имеет право на запись
10 - группа имеет право на выполнение
4 - остальные имеют право на чтение
2 - остальные имеют право на запись
1 - остальные имеют право на выполнение

Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые мы хотим поставить файлу.

Примеры:

400+200+100+40+4=744.
chmod 744 stuff - владелец может делать все, а остальные - только читать.

400+40+4=444.
chmod 444 stuff - все имеют право только на чтение.

400+100+10+1=611.
chmod 611 stuff - владелец может читать и выполнять, остальные - только выполнять.

400+200+100+40+10+4+1=755.
chmod 755 script - Классическая команда. Скрипт - это исполняемый файл, и все должны иметь к нему доступ на чтение и выполнение. Только владелец этого файла может его изменять или удалять.

И, наконец, соответствия атрибутов файлов в Dos и Unix/Linux:

Dos
Unix/Linux
Read only (Только для чтения)
Выключено право на запись файла для владельца.
Archive (Архивный)
Такого не замечено.
Hidden (Скрытый)
Если в начале файла стоит точка, то этот файл - скрытый. Пример: .hidden_file
System (Системный)
Такого тоже не замечено :)

Просмотров: 2326  |  Рейтинг статьи: 4.11 (Голосов: 9).
4.11
Дата размещения статьи: 2002-12-09 12:41:35



5 последних поступлений в раздел Основные концепции UNIX,файловые системы:

11.01.04: Идеология файловой системы. (Данный текст представляет собой главу 4 из книги Алексея Стахнова "Linux в подлиннике. Наиболее полно...)
29.12.03: Разбиение дисков и инсталляция Linux на LVM. (3 в 1) (В статьи рассматриваются некоторые варианты разбиения диска на разделы для инсталляции Linux и новые ...)
18.12.03: Процессы в Linux (Данной теме посвящено много статей, но в Сети мало сугубо практических статей. Правда, одной только п...)
15.10.03: Повесть о Linux и LVM (Logical Volume Manager). (LVM (Logical Volume Manager), менеджер логических томов -- это система управления дисковым пространст...)
09.06.03: Архитектура UNIX и Windows (Статья посвящена детальному рассмотрению архитектуры UNIX и Windows. В ней мы постарались заглянуть в...)

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

Re: Права доступа к файлам в Unix/Linux. (Оценка: 0)
от Anonymous на 03.12.03
---
400+100+10+1=611.
chmod 611 stuff - владелец может читать и выполнять, остальные - только выполнять.
---
там вроде при сложении 511 получаецца



-- gook


LinuxBegin.ru © 2003-2004 Valery V. Kachurov | Условия использования материалов | О проекте