Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек_1_8_Файловая система_пользовательский аспек...doc
Скачиваний:
8
Добавлен:
21.09.2019
Размер:
1.37 Mб
Скачать

Команды доступа к файлу и работы с ним

cat печатает содержимое указанного файла на терминал;

pg печатает содержимое указанного файла на терминал порциями или страницами;

pr печатает частично отформатированную версию указанного файла на терминал;

cp создает копию существующего файла;

mv перемещает или удаляет файлы;

rm удаляет файл;

wc распечатывает информацию о числе строк, слов и символов в файле;

chmod изменяет режим доступа к файлу (или каталогу).

Владельцы файлов

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

Файлы в UNIX имеют двух владельцев: пользователя (user owner) и группу (group owner). Владелец-пользователь – это тот пользователь, который создал файл (точнее запустил процесс, создавший файл с помощью open( ) или create( ) ). Группа – это определенный список пользователей системы. Пользователь м.б. членом нескольких групп, одна из них – основная (primary), основные – дополнительные (suppliementary). Порядок назначения владельца группы зависит от конкретной версии UNIX: это может быть и первичная группа пользователя (SVR4), и группа, унаследованная от владельца группы каталога, в котором создается файл (для BSD).

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

Для изменения владельца файла используется команда:

chown <имя_нового_владельца> <список_файлов>

Например, chown ivan my1.c my2.c {пользователь ivan станет владельцем 2-х файлов }

Для изменения владельца-группы используется команда:

chgrp <имя_нового_владельца_группы> <список_файлов>

Например, chgrp stars * {группа stars станет владельцем всех файлов текущего каталога}

Операция

Имеет право выполнить

SVR BSD

chown

суперпользователь

владелец файла

chgrp

суперпользователь

владелец файла только для группы, к которой сам принадлежит (в соответствии с POSIX)

Права доступа к файлу

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

владельца файла u (user)

группового пользователя g (group)

прочих o (other)

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

1 2 3 4 5 6 7 8

-rwxr-xr-x 1 startship project 9346 Nov 1 08:06 display

-rw-r--r-- 1 startship project 6428 Dec 2 10:26 list

drwxr-x—x 2 startship project 32 Nov 8 15:32 tools

В левой части экрана отображены права доступа для двух файлов и каталога:

-rwxr-xr-x для файла display

-rw-r--r-- для файла list

drwxr-x--x для каталога tools

Первый символ описывает тип файла (например, символ "-" говорит, что это обыкновенный файл, символ "d" - Каталог). Дальнейшие девять символов описывают права доступа. Первые три символа из девяти устанавливают права доступа для владельца, вторые три – для группы, третьи – для всех остальных пользователей. Каждый набор символов r,w,x показывает текущие установленные права доступа для каждой категории пользователей.

r разрешение на чтение файла или копирование его содержимого:

w разрешение вносить изменения в файл или копировать его содержимое;

x разрешение на запуск файлов на выполнение

Если вместо символа стоит "-", то соответствующее право отсутствует.

Команда chmod позволяет пользователю устанавливать разрешение на чтение, запись и использование своих файлов или каталогов. Синтаксис команды:

chmod кто+права файл(ы)_или_каталог(и)

или

chmod кто-права файл(ы)_или_каталог(и)

Важно!. Команда chmod не будет выполняться, если поставить пробел между "кто", символами "+", "-" и "право". В одной команде можно задать различные права доступа для нескольких классов, разделив их запятыми, причем u, g, o можно использовать дополнительное обозначение – символ «а» – все классы пользователей (от англ. all).

В следующих примерах приведены несколько способов использования команды chmod.

chmod u-w display { защитить файл от случайного изменения, сделанного владельцем }

Право на чтение для g и o означает, что они могут копировать файл в свой собственный каталог и затем вносить в свою копию изменения. Чтобы предотвратить эти действия, следует отменить право на чтение:

chmod go-r display

Способ, описанный выше, в котором символы r, w и x используются для указания права, называется символическим методом. Альтернативным методом является восьмеричный метод. Его формат требует указания права с использованием трех восьмеричных цифр (от 0 до 7).

rwx rwx rwx rwx r-x r-- r-x r-- r--

111 111 111 111 101 100 101 100 100

777 754 544

chmod 777 <файл(ы)> chmod 754 <файл(ы)> chmod 544 <файл(ы)>

Команда chmod используется и для предоставления или отрицания права для каталогов. Но здесь не все так очевидно, как для файлов.

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

Права r и x действуют независимо, поэтому комбинация этих прав позволяет создать т.н. «темные» каталоги, файлы которых доступны только в случае, если пользователь заранее знает их имена и хочет работать с ними, а получить весь список файлов этого каталога он не может:

>mkdir darkdir {создадим каталог, его атрибуты rwxr--r--}

>chmod a-r+x darkdir {превратим его в «темный»}

>cp f1.c darkdir {поместим в него файл}

>cd darkdir {перейдем в этот каталог}

>ls –l {попытка получить подробный листинг}

##permission denied {доступ запрещен}

>cat f1.c {а вот работать с файлом можно! если есть права}

Создание и удаление файлов в каталоге требуют изменения его содержимого, а значит права на запись в этот каталог. Но при этом не учитываются права доступа для находящихся в них файлов! Т.е. для удаления какого-либо файла необязательно иметь какие-либо права на него, а лишь иметь право на запись каталога, в котором находится этот файл. Будьте осторожны! Предоставляйте это право с осторожностью!

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

Дополнительные атрибуты для файла

Команда chmod кроме r,w,x позволяет установить дополнительные атрибуты:

t Sticky bit Сохранить образ выполняемого файла в памяти

после завершения программы

s Set UID (SUID) Временно установить пользователю UID процесса

(с более высоким приоритетом) при выполнении

этого процесса

s Set GID (SGID) То же для GID

l Блокирование Установить обязательное блокирование файла

Установка атрибута Sticky bit (save text mode) – сейчас используется редко. А применялся к интерпретаторам, компилятрам, т.к. они часто используются и при завершении оставались в памяти для быстрого следующего вызова.

Атрибуты SUID и SGUID позволяют изменить права пользователя при запуске файла на выполнение. Привилегии обычно расширяются но лишь на время выполнения этой программы. (Пример. Утилита passwd, которая позволяет пользователю изменить пароль. На время смены пароля пользователь получает права администратора и редактирует в файле паролей etc/passwd свой пароль. Владельцем этого файла является суперпользователь, просто так к нему доступ получить нельзя. Но на исполняемый файл программы смены пароля /usr/bin/passwd установлен флаг SUID и кто бы ни запустил утилиту passwd на выполнение,, получит права суперпользователя и сможет отредактировать файл. При этом утилита позволяет редактировать только свою строку и ничего более!). Блокирование рассмотрим позже.

Дополнительные атрибуты для каталога

t Sticky bit Позволяет пользователю удалять только файлы,

которыми он владеет или имеет права на запись.

s Set GID (SGID) Позволяет изменить правило установки владельца-группы

создаваемых файлов, аналогично реализованному в BSD

Установка Sticky bit для каталога позволяет установить дополнительную защиту файлов в каталоге. Если пользователь имеет право на запись в каталоге, то из такого каталога пользователь может удалить только те файлы, которыми он владеет или имеет право на запись в них, а не все подряд. Пример – каталог /tmp, который открыт всем на запись, но удалять можно только свои файлы. При установке SGID для каталога вновь созданные файлы будут наследовать владельца-группу по владельцу-группе каталога. Т.о. в System V можно имитировать работу BSD.