Категории
Самые читаемые
PochitayKnigi » Компьютеры и Интернет » Интернет » Linux программирование в примерах - Роббинс Арнольд

Linux программирование в примерах - Роббинс Арнольд

Читать онлайн Linux программирование в примерах - Роббинс Арнольд

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 89 90 91 92 93 94 95 96 97 ... 253
Перейти на страницу:

8.2.1. Использование опций монтирования

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

ro

Монтирует файловую систему только для чтения. Это необходимо для устройств только для чтения, таких, как CD-ROM и DVD.

loop

Использует кольцевое устройство для интерпретации обычного файла в качестве файловой системы. Пример этого мы показали ранее (см. раздел 8.1.3 «Монтирование файловых систем: mount»).

Опции передаются с опцией командной строки -о и могут группироваться, отделяясь запятыми. Например, вот использованная ранее командная строка:

mount -t iso9660 -о ro,loop shrike-i386-discl.iso /mnt/cdrom

Оставшиеся опции предназначены для использования в /etc/fstab (хотя они могут использоваться также и в командной строке). Следующий список представляет те опции, которые, как мы полагаем, наиболее важны в повседневном использовании.

auto, noauto

Файловые системы, помеченные auto, должны монтироваться при загрузке системы через 'mount -а' (монтировать все файловые системы). Файловые системы noauto должны монтироваться вручную. Они по-прежнему находятся в /etc/fstab вместе с другими файловыми системами. (См., например, элемент /win для показанного ранее файла /etc/fstab).

defaults

Использует по умолчанию опции rw, suid, dev, exec, auto, nouser и async. (async является продвинутой опцией, повышающей производительность ввода/вывода).

dev, nodev

Позволяет (не позволяет) использовать в файловой системе файлы символьных или блочных устройств.

exec, noexec

Позволяет (не позволяет) запускать в файловой системе двоичные исполняемые файлы.

user, nouser

Позволяет (не позволяет) монтировать данную файловую систему любому пользователю. Это полезно для CD-ROM; даже если вы находитесь на рабочей станции с одним пользователем, удобно не переключаться на root просто для монтирования CD. Демонтировать файловую систему может лишь пользователь, который смонтировал ее. user предполагает наличие опций noexec, nosuid и nodev.

suid, nosuid

Поддерживает (не поддерживает) биты setuid и setgid исполняемых файлов в файловой системе.

rw

Монтирует файловую систему в режиме для чтения/записи.

Опции nodev, noexec и nosuid особенно ценны для безопасности на файловых системах гибких дисков и CD-ROM. Рассмотрите студенческую среду, в которой студентам разрешено монтировать собственные гибкие диски или CD. Тривиально смастерить для жесткого диска файловую систему с оболочкой setuid-root или с файлом устройства с разрешением записи для всех, которая позволила бы предприимчивому пользователю изменить права доступа к системным файлам.

У каждой файловой системы есть специфичные для нее опции. Важной опцией для ext2 и ext3 является grpid. Мы отложим обсуждение этой опции до раздела 11.5.1 «Группа по умолчанию для новых файлов и каталогов». Подробности для всех поддерживаемых файловых систем можно найти в справочной странице mount(8).

В качестве конкретного примера вернемся к строчке для раздела Windows в нашей системе:

# device mount-point type options freq passno

/dev/hda1 /win vfat noauto,defaults,user,uid=2076,gid=10 0 0

Опция noauto предотвращает монтирование раздела Windows при загрузке. Опция defaults та же самая, что rw, suid, dev, exec, async. Опция user позволяет нам монтировать файловую систему, не будучи root. Опции uid= и gid= делает файлы в /win принадлежащими нам, так что нам не нужно иметь права root при работе с этим разделом.

8.2.2. Работа со смонтированными файловыми системами: getmntent()

Любой из файлов /etc/fstab, /etc/mtab и /proc/mounts может быть прочитан программное использованием набора процедур getmntent():

#include <stdio.h> /* GLIBC */

#include <mntent.h>

FILE *setmntent(const char *filename, const char *type);

struct mntent *getmntent(FILE *filep);

int addmntent(FILE *filep, const struct mntent *mnt);

int endmntent(FILE *filep);

char *hasmntopt(const struct mntent *mnt, const char *opt);

setmntent() открывает файл, содержащий элементы точек монтирования. Аргумент filename является файлом, который должен быть открыт. Аргумент type похож на второй аргумент fopen(), указывая доступ для чтения, записи или чтения/записи. (Рассмотрите команду mount, которой приходится добавлять элемент к /etc/mtab для каждой файловой системы, которую она монтирует, и umount, которая должна удалять этот элемент.) Затем возвращаемое значение типа FILE* используется с оставшимися процедурами.

1 ... 89 90 91 92 93 94 95 96 97 ... 253
Перейти на страницу:
Тут вы можете бесплатно читать книгу Linux программирование в примерах - Роббинс Арнольд.
Комментарии