Реферат Курсовая Конспект
Режим файла - раздел Программирование, Программирование для операционной системы Linux Под Режимом Файла (File Mode) Понимается Связанный Непосредственно С Индексны...
|
Под режимом файла (file mode) понимается связанный непосредственно с индексным дескриптором (а не со ссылкой) 16-битный набор, регламентирующий порядок доступа и работы с файлом. Иногда режим файла путают с правами доступа, однако это не совсем верно.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Биты режима файла можно разделить на 3 группы:
биты 0-8: основные права доступа;
биты 9-11: дополнительные права доступа;
биты 12-15: тип файла.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Основные права доступа определяют возможность чтения, записи и исполнения для владельца, группы и остальных пользователей. Здесь лишь следует отметить, что бит исполнения для каталога означает возможность "заходить" в него, то есть делать каталог текущим. Право на чтение для каталога означает возможность получения его содержимого, а право на запись позволяет создавать, удалять или переименовывать файлы внутри каталога.
В Unix-системах основные права доступа чаще всего представляются в двух форматах: символический (rwx-формат) и восьмеричный. При вызове ls с опцией -l, права доступа выводятся в символическом формате (например, rw-r--r--). Если же каждый из символов цепочки rwxrwxrwx представить в виде девяти битов, где значение каждого бита определяет наличие (1) или отсутствие (0) соответствующих прав доступа, а затем представить эту цепочку восьмеричным числом, то получим цифровой восьмеричный формат прав доступа.
Если, к примеру, некоторый файл обладает правами на чтение и запись для владельца, только чтения для группы и отсутствием каких-либо прав для остальных пользователей, то в символическом виде это будет представлено цепочкой rw-r-----. В двоичном виде эта цепочка будет представлена последовательностью 110100000, а в восьмеричном виде - 640.
Для перевода двоичного числа в восьмеричное используют следующий простой алгоритм.
Двоичное число при необходимости спереди дополняют нулями так, чтобы количество цифр без остатка делилось на три. Например, двоичное число 1010 превращают в 001010.
Полученную цепочку разбивают на триады. Таким образом, число 001010 разбивают на триады 001 и 010.
Каждую триаду переводят в восьмеричную цифру следующим образом:
000 - 0
001 - 1
010 - 2
011 - 3
100 - 4
101 - 5
110 - 6
111 - 7
Полученные цифры будут образовывать искомое восьмеричное число. Таким образом, двоичному числу 1010 соответствует восьмеричное 12.
Иногда перед восьмеричным числом (например, в языке программирования C) ставят ноль. Это, кроме прочего, позволяет не спутать число с десятеричным.
В случае с правами доступа всё еще проще, поскольку 9 битов уже образуют три триады, и никакого добавления ведущих нулей не требуется. Немного попрактиковавшись, вы поймете, что перевод прав доступа из одного представления в другое - это очень простая задача, которая обычно решается в уме за считанные секунды. Для самопроверки можете использовать утилиту stat следующим образом.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
$ touch file1
$ ls -l file1
-rw-r--r-- 1 df00 df00 0 2010-02-09 23:05 file1
$ stat -c %a file1
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Дополнительные права доступа представлены тремя битам - SUID, SGIDиsticky-бит. Последний также известен под названием "липкий бит". Бит SUID позволяет запускать исполняемый файл не от имени текущего пользователя, а от имени владельца этого файла. Бит SGID даёт возможность запускать исполняемый файл с правами группы-владельца файла.
Липкий бит в ранних Unix-системах использовался для исполняемых файлов, чтобы заставить ядро не выгружать из памяти код программы после её завершения. Тогда он назывался битом SVTX (SaVe TeXt). В современных системах sticky-бит устанавливается для каталогов. Если каталог имеет право на запись для всех, то каждый может создавать, удалять и переименовывать там файлы. Если же для каталога установлен sticky-бит, то любой пользователь также может удалять и переименовывать файлы, но только свои, а не чужие. Практически в любой Linux-системе для каталога /tmp установлен липкий бит, позволяющий разным пользователям мирно уживаться в едином пространстве для временных файлов.
Возможно, вы слышали что-нибудь про маску прав доступа (umask). Это 9 битов, которые вычитаются из битов основных прав доступа при создании файла. Естественно, речь идет о побитовом вычитании.
Если вы используете оболочку bash, то значение umask можно посмотреть, набрав одноимённую команду.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
$ umask
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
umask - это не отдельная утилита, а встроенная команда оболочки. Обратите внимание, что umask выводит восьмеричную маску именно с ведущим нулём. Значение 022 показывает, что при создании файла биты записи для группы и остальных пользователей будут сбрасываться.
Значение umask, подобно окружению, привязывается к процессу и передаётся по наследству его потомкам. Для переустановки маски создания файлов в оболочке bash используется опция -S команды umask.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
$ umask -S 0026
u=rwx,g=rx,o=x
$ umask
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Полученное значение umask будет распространяться только на текущий процесс оболочки, а также на все процессы, порожденные этой оболочкой.
Программа ls, вызванная с опцией -l, умещает в десяти полях все 16 бит режима файла.
Первое поле показывает тип файла символами из набора -dscbpl.
Второе поле символами из набора -r показывает наличие или отсутствие бита чтения для владельца.
Третье поле символами -w показывает наличие или отсутствие бита записи для владельца.
Четвертое поле может содержать один из четырех символов набора -xsS. Символ - (минус) означает отсутствие бита выполнения для владельца, x - его наличие. Символ s показывает, что бит выполнения для владельца отсутствует, но стоит бит SUID. И, наконец, символ S означает одновременное наличие бита выполнения и бита SUID.
Пятое поле содержит один из символов набора -r, показывающий наличие или отсутствие прав на чтение для группы.
В шестом поле используются символы из набора -w, означающие отсутствие или наличие прав на запись для группы.
Седьмое поле может быть заполнено одним из символов из набора -xsS. Символ - (минус) говорит об отсутствии прав на выполнение для группы, x - об их наличии. Символ s показывает наличие бита SGID при отсутствии прав на выполнение. Если в седьмом поле стоит S, то это означает одновременное наличие бита SGID и бита прав на выполнение для группы.
Восьмое поле означает наличие или отсутствие прав на чтение для остальных пользователей. Здесь используются символы из набора -r.
В девятом поле используются символы из набора -w, обозначающие отсутствие (-) или наличие (w) прав на запись для остальных.
И в десятом поле могут быть символы из набора -xtT. Символ - (минус) означает отсутствие прав на выполнение остальными, а x - наличие таковых.
Символ t говорит о наличие sticky-бита при отсутствии прав на выполнение для остальных. Если в десятом поле стоит символ T, то этим сообщается об одновременном наличии липкого бита и бита выполнения для остальных.
– Конец работы –
Эта тема принадлежит разделу:
Министерство образования и науки РФ... Федеральное агентство по образованию... Государственное образовательное учреждение высшего профессионального образования...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Режим файла
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов