Chmod

Файлы в Unix имеют двух владельцев: пользователя (user owner) и группу (group owner). Владелец пользователь может не являтся членом группы, владеющей файлом. Это дает большую гибкость в организации доступа к файлам.

Для определения владельцев файла текущего каталога можно получить подробный листинг командой ls -l. Третья и четвертая колонки содержат имена владельца-пользователя и владельца-группы:

1 2 3 4 5 6 7 8
drwxr-x—x  2 root root 5456 Dec 31  23:59 Santa.Claus
-rw-r—r—  andy group 23456 Nov 12  13:29  readme.txt

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

Для определения прав доступа к файлу можно воспользоваться той же самой командой ls -l

1 2 3 4 5 6 7 8
drwxr-x—x  2 root root 5456 Dec 31  23:59 Santa.Claus
-rw-r—r—  andy group 23456 Nov 12  13:29  readme.txt

Права доступа листинга отображаются в первой (1) колонке (за исключением первого символа, обозначающего тип файла)  Наличие прав доступа обозначается соответствующим символом, а отсутствие — символом «-».

Права доступа могут быть изменены только владельцем файла или суперпользователем(superuser) — администратором системы. Для этого используется команда chmod.

 

 chmod — изменение атрибутов защиты файла

синтаксис 

chmode mode file…

описание

Команда изменяет атрибуты защиты файла file. Атрибуты защиты, обозначимые mode, могут быть заданны в числовом или символическом виде.

В символическом виде атрибуты задаются в формате

[who]+ | — | = [permission]

В операционной системе Unix существуют три базовых класса доступа к файлу, в каждом из которых установленны соответствующие права доступа:

User accsess(u)  для владельца — пользователя файла 
Group accsess(g) для членов группы, являющихся владельцем файла 
Other accsess(o) для остальных пользователей (кроме  супер- пользователя)

Первое поле, обозначеное как who, может содержать один или несколько следующих символов:

a      установка атрибутов защиты для всех категорий пользователей;

g      установка атрибутов защиты для групп пользователей;

o      установка для прочих процессов (эффективные идентификаторы которых не совпадают с пользовательскими);

u      установка прав доступа только для владельца.

Допустимые операции:
+     добавление прав доступа;

     отмена прав доступа;

=     определение перечисленных прав и отмена всех прочих для данного who.
Поле, обозначенное как permission, может быть комбинацией следущих символов:

     делает файл выполнимым(разрешение выполнения);

r        разрешение чтения;

w     разрешение записи;

     установка пользовательского или группового идентификатора.

В числовом виде атрибуты защиты файла здаются в форме восьмеричного числа, соответствующие биты которого обозначают режимы доступа:

4000    установка ID пользователя при выполнениии (S_ISUID);

2000     установка ID группы при выполнениии (S_ISGID);

1000     зависит от реализации;

0400     право владельца на чтение (S_IRUSR);

0200     право владельца на   запись (S_IWUSR);

0100     право владельца на выполнение (S_IXUSR);

0040     право группы на чтение (S_IRGRP);

0020     право группы на запись (S_IWGRP);

0010      право группы на выполнение (S_IXGRP);

0004     право прочих процессов на чтение (S_IROTH);

0002      право прочих процессов на запись (S_IWOTH);

0001     право прочих процессов на выполнение (S_IXOTH);

0000     нет доступа.

Для каталогов поле х означает не выполнение, а поиск. Для каталога с правом х— пользователи будут иметь доступ к любому известному им файлу в каталоге, но не смогут выполнять команду ls или читать каталог, что бы узнать, какие файлы в нем находятся. Каталог с правом r— можно читать, но нельзя работать с его файлами. Право на запись w для каталога дает пользователю возможность записывать и удалять файлы из каталога! При этом права доступа для самого файла!

Примеры использования команды chmod
$ chmod a+w text Предоставить право на запись для всех пользователей для файла text
$ chmod go=r text Установить право на чтение для всех пользователей,за исключением владельца
$ chmod g+x-w run Добавить для группы право на выполнение файла run и снять право на запись
$ chmod u+w,og+r text1 text2 Добавить право записи для владельца, право на чтение для группы и остальных пользователей, отключить право на записьвсех пользователей, исключая владельца 
$ chmod 754 * Устанавить для владельца права на чтение, запись и выполнение, для группы на чтение и выполнение и для остальных пользователей только на чтение, всех файлов в текущем каталоге
число определяется следущим образом: нужно предствить права доступа в двоичном виде(0 — отсутствие соответствуещего права, 1 — его наличие) и каждую триаду, соответсчвующую класу доступа, в свою очередь преобразовать в десятичное число.7=111(rwx)  5=101(r-x)  4=100(r—)
$ chmod rw-rw-rw junk Так нельзя!  надо использовать: $ chmod a=rw junk или$ chmod 666 junk
$ chmod a-w . закрыть текущий каталог по записи для всех пользователей, включая себя
$ chmod o-r+x private сделать для всех пользователей, кроме себя текущий каталог private невидимым.

 

Статья взята с http://linuxland.itam.nsc.ru/book/unix09/chmod/index.html

 

Leave a comment

Your comment