Права доступа к файлам и каталогам — КиберПедия 

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

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

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

2017-10-16 251
Права доступа к файлам и каталогам 0.00 из 5.00 0 оценок
Заказать работу

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

В основе механизмов разграничения доступа лежат имена пользователей и имена групп пользователей. В Linux каждый пользователь имеет уникальное имя, под которым он входит в систему. Кроме того, в системе создается некоторое число групп пользователей, причем каждый пользователь может быть включен в одну или несколько групп. Создает и удаляет группы суперпользователь, он же может изменять состав участников той или иной группы. Члены разных групп могут иметь разные права по доступу к файлам.

В индексном дескрипторе каждого файла записаны имя так называемого владельца файла и группы, которая имеет права на этот файл.

Выполним команду ls -l, но зададим ей в качестве дополнительного параметра имя конкретного файла:

 

user@localhost:~$ ls -l file

-rwxr-xr-x 1 user user 6 2009-09-17 13:49 file

 

Вы видите, что в данном случае владельцем файла является пользователь user и группа user. Но нас сейчас в выводе этой команды больше интересует первое поле, определяющее тип файла и права доступа к файлу. Это поле в приведенном примере представлено цепочкой символов -rwxr-xr-x. Эти символы можно условно разделить на 4 группы.

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

- — обычный файл;

d — каталог;

b — файл блочного устройства;

c — файл символьного устройства;

s — доменное гнездо (socket);

p — именованный канал (pipe);

l — символическая ссылка (link).

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

Вообще говоря, права доступа и информация о типе файла в UNIX-системах хранятся в индексных дескрипторах в отдельной структуре, состоящей из двух байтов, т. е. из 16 бит (это естественно, ведь компьютер оперирует битами, а не символами r, w, x). Четыре бита из этих 16-ти отведены для кодированной записи о типе файла. Следующие три бита задают особые свойства исполняемых файлов, о которых мы скажем чуть позже. И, наконец, оставшиеся 9 бит определяют права доступа к файлу. Эти 9 бит разделяются на 3 группы по три бита. Первые три бита задают права пользователя, следующие три бита — права группы, последние 3 бита определяют права всех остальных пользователей (т. е. всех пользователей, за исключением владельца файла и группы файла).

При этом, если соответствующий бит имеет значение 1, то право предоставляется, а если он равен 0, то право не предоставляется. В символьной форме записи прав единица заменяется соответствующим символом (r, w или x), а 0 представляется прочерком.

Право на чтение (r) файла означает, что пользователь может просматривать содержимое файла с помощью различных команд просмотра, например, командой more или с помощью любого текстового редактора. Но, подредактировав содержимое файла в текстовом редакторе, вы не сможете сохранить изменения в файле на диске, если не имеете права на запись (w) в этот файл. Право на выполнение (x) означает, что вы можете загрузить файл в память и попытаться запустить его на выполнение как исполняемую программу. Конечно, если в действительности файл не является программой (или скриптом shell), то запустить этот файл на выполнение не удастся, но, с другой стороны, даже если файл действительно является программой, но право на выполнение для него не установлено, то он тоже не запустится.

Естественно, что по отношению к каталогам трактовка понятий "право на чтение", "право на запись" и "право на выполнение" несколько изменяется. Право на чтение по отношению к каталогам легко понять, если вспомнить, что каталог — это просто файл, содержащий список файлов в данном каталоге. Следовательно, если вы имеете право на чтение каталога, то вы можете просматривать его содержимое (этот самый список файлов в каталоге). Право на запись тоже понятно — имея такое право, вы сможете создавать и удалять файлы в этом каталоге, т. е. просто добавлять в каталог или удалять из него запись, содержащую имя какого-то файла и соответствующие ссылки. Право на выполнение интуитивно менее понятно. Оно в данном случае означает право переходить в этот каталог.

Для изменения прав доступа к файлу используется команда chmod. Один из вариантов задания команды chmod (он используется чаще) основан на цифровом представлении прав. Для этого мы кодируем символ r цифрой 4, символ w — цифрой 2, а символ x — цифрой 1. Для того, чтобы предоставить пользователям какой-то набор прав, надо сложить соответствующие цифры. Например, если надо дать все права владельцу (4+2+1=7), право на чтение и запись — группе (4+2=6), и не давать никаких прав остальным, то следует дать такую команду:

 

user@localhost:~$ chmod 760 file.txt

 

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

 

Команда find

Часто используемой командой для работы с файлами в Linux является команда поиска нужного файла find. Команда может искать файлы по имени, размеру, дате создания или модификации и некоторым другим критериям.

Общий синтаксис команды find имеет следующий вид:

 

 

find [список_каталогов] критерий_поиска

 

Параметр "список_каталогов" определяет, где искать нужный файл. "Критерий_поиска" определяет, что именно должна искать программа find. После критерия поиска в этой команде можно сразу же задать операцию, которая будет применяться ко всем файлам, найденным по указанному критерию. Простейшим примером использования такой возможности является указание команды –print.

 

user@localhost:~$ find *.tmp -print

 

по которой выдается на экран список имен всех найденных файлов.

Другим примером операции, применяемой ко всем найденным файлам, может служить операция -exec cmd {} \;, где cmd — произвольная команда оболочки shell. То есть в этом случае ко всем найденным файлам (их именами заменяются поочередно фигурные скобки {}) применяется команда cmd. За cmd {} в этом случае должна следовать точка с запятой, экранированная обратной косой чертой \;.

Пример:

 

user@localhost:~$ find *.txt -exec cat {‘’} \;

 

Эта команда выводит содержимое всех файлов, соответствующих шаблону *.txt.

 

 

Задание на лабораторную работу № 1

1. Установить ОС Linux на виртуальную машину VMWare. Читать инструкцию по установке – файл (Установка Linux.doc).

2. Ознакомится с основными командами оболочки (shell). Для этого требуется вызвать root terminal. Изучите работу команд (ls, rm, su, mkdir, cd, egrep, cmp, tail, cat, wc, cp, mv, sort). Изучите перенаправление ввода/вывода (“<”,”>”) применительно к командам. Документация по командам изучите с помощью команды man или для получения описания команды запустите команду с ключом --help. Знание работы этих команд понадобится в следующей лабораторной работе.

3. Создайте текстовый файл 1.txt. Создайте символическую ссылку (ss.txt) и жесткую ссылку (zhs.txt) на этот файл с помощью команды ln. Читайте документацию по этой команде: man ln. Для создания символической ссылки используйте ключ –s. Проверьте, имеют ли два файла 1.txt и zhs.txt жесткую связь с помощью команды ls – i. Проверьте, сколько имеет имен файл 1.txt с помошью команды ls –l.

4. Запустите на первом терминале программу mc. Предположим, что программа mc зависла, какие действия необходимо выполнить, чтобы завершить зависшее приложение? Выполните эти действия. Если нет mc, то можно использовать любое другое приложение, например dc.

5. Изучить структуру и основные каталоги ОС Linux, ознакомится с основными файлами конфигурации /etc. Изучить файлы и каталоги, расположенные в каталогах bin, root, boot, mnt, dev, sbin, home. Провести операции монтирования и размонтирования файловой системы. Для этого создайте папку в каталоге /mnt и смонтируйте в нее корневую файловую систему ”/”. После чего размонтируйте. Для того чтобы определить файл устройства для корневой файловой системы воспользуйтесь содержимым файла /etc/fstab.

6. По аналогии с представленной выше программой delete.c, напишите программу del.с, представляющую собой упрощенный аналог программы rm на языке С. Программа del.c должна удалять файл. Имя удаляемого файла должно задаваться как параметр. В отличии от программы delete.c Ваша программа должна работать как с ключом –i, так и без ключей.

Откомпилируйте программу с помощью компилятора gcc: #gcc del.c

После успешной компиляции Вы получите файл a.out. Создайте файл del.txt и запустите программу #./a.out –i del.txt для удаления файла del.txt с подтверждением и #./a.out del.txt для удаления файла del.txt без подтверждения. После проверки правильности работы программы переименуйте программу a.out в файл del и разместите ее так, чтобы ею можно было пользоваться из командной строки, находясь в любом каталоге.

7. Создать папку. Используя оператор "|", команды ls, tee (подробнее о команде в ‘man tee’), создать в папке пять файлов f1.txt... f5.txt. Каждый файл должен содержать вывод команды "ls /etc". Используя команды find и chmod, выставить созданным файлам права доступа: владелец — полный доступ (rwx), все остальные — нет доступа (---).

 

Отчет по лабораторной работы должен содержать цель, задание и результаты выполнения заданий 2-4, 6-7.

 

 


Поделиться с друзьями:

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.007 с.