Выбрать главу

Например:

quotacheck –u /mnt/ext2 quotaon –u /mnt/ext2

Данные команды необходимы для создания файлов quota.user и quota.group. В противном случае при редактировании ограничений пользователей (групп) вы получите сообщение о том, что данные файлы не существуют. Для каждой файловой системы, на которую наложены квоты, вы увидите две строки. Слово soft означает, что на данную файловую систему наложено «мягкое» ограничение, а слово hard — «жесткое». При этом пользователь имеет некоторый интервал времени, по истечении которого «мягкое» ограничение перейдет в «жесткое». Данный интервал можно изменить с помощью команды edquota –t:

#edquota –t

Time units may be: days, hours, minutes, or seconds

Grace period before enforcing soft limits for users:

/dev/hda4: block grace period: 50 minutes, file grace period: 50 minutes

«Жесткое» ограничение является максимальным значением, которое может иметь пользователь или группа на данной файловой системе.

Строка /dev/hda4: blocks in use: 1024, limits (soft = 1, hard = 0) определяет количество блоков, которое может быть выделено для пользователей или группы. Напомню, что обычно размер блока в Linux составляет 1024 байт. В данном случае ограничение равно 1 Мб.

Строка inodes in use: 94, limits (soft = 0, hard = 0) сообщает какое число inode (файлов, устройств, поименованных каналов (pipes)) может быть выделено для данного пользователя или группы.

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

# edquota –u <пользователь/группа_который(ая)_станет_прототипом>

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

# edqouta –p <прототип> пользователь

создать квоты для всех оставшихся пользователей, применив к ним ограничения прототипа. При этом вам не нужно редактировать ограничения отдельно для каждого пользователя/группы. Например, вам нужно добавить пользователя user, который будет использовать такие же ограничения, что и пользователь den. Делается это следующим образом:

# edquota –p den user

Команда quota используется для проверки ограничений дискового пространства пользователей и групп и применяется со следующими параметрами:

quota [-guqv]

quota [-qv] –u <имя_пользователя>

quota [-qv] –g <имя_группы>

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

Параметр –q используется для получения сведений о файловых системах, на которых превышено значение «мягкого» ограничения.

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

Параметр –u предоставляет информацию об ограничениях, наложенных на указанного пользователя. Этот параметр используется по умолчанию и аналогичен запуску программы quota без параметров.

Например, просмотр ограничения для пользователя user выглядит следующим образом:

Disk quotas for user user (uid 1002) :

Filesystem blocks quota limit grace files quota limit grace

/dev/hdb3  1024*  1     0     none  94    0     0

Пользователь user, ограничен так же, как и его прототип — пользователь den.

Если ограничения для данного пользователя не заданы, вы увидите примерно такое сообщение: Disk quotas for user root (uid 0) : none

Только суперпользователь может просматривать квоты других пользователей. Обычный пользователь может просматривать только свои квоты и квоты группы, к которой он принадлежит.

3.6.2. Запрет квоты для пользователя или группы

Иногда не нужно ограничивать какого-то отдельного пользователя — и в самом деле, не будете же вы ограничивать самого себя? Тогда для этого вам нужно использовать программу edquota и установить значения soft и hard равными 0. После этого данный пользователь или группа сможет использовать дисковое пространство без ограничений.

3.6.3. Использование программы linuxconf для определения квот

Очень удобно редактировать ограничения с помощью linuxconf. Для этого запустите linuxconf и выберите в меню Filesystems→Set quotas default (см. рис. 3.8).

Рис. З.8. Редактирование квот программой linuxconf

Здесь можно указать ограничения, которые будут использованы по умолчанию для пользователей или групп. При этом можно также указать интервал времени (grace period), по истечении которого «мягкое» ограничение перейдет в «жесткое». Ограничения можно задать отдельно и для конкретного пользователя. Для этого выберите в меню программы User accounts→User accountsи укажите пользователя, для которого вы хотите задать ограничения (см. рис. 3.9).

Рис. 3.9. Определение квот для пользователя

По умолчанию используется значение Default, то есть для этого пользователя будут использованы такие же ограничения, как и для всех остальных. Значение No limit — без ограничения. Ограничения можно задавать отдельно и для разных файловых систем.

Для квотирования сетевой файловой системы (NFS) нужно установить quota на сервере, а на клиенте она не нужна. Клиент получит сведения об ограничениях с помощью rquotad, который должен быть установлен и запущен на сервере. Вам не нужно устанавливать флаги usrquota или grpquota для монтирования NFS-дисков. Вместо этого установите quota на своем файловом сервере и запустите на нем из rc-файла сервер rpc.rquotad.

3.7. Сценарий создания пользователей

В качестве завершения этой главы приведу обещанный мною сценарий добавления новых пользователей (см. листинг 3.2). Данный сценарий нужно поместить в каталог /sbin и сделать этот файл исполнимым:

chmod 711 /sbin/nu

Листинг 3.2. Сценарий nu

# !/bin/bash

# nu (New User) — Сценарий добавления пользователей.

# Группа по умолчанию

GROUP=100

# Оболочка по умолчанию

SHELL=/bin/bash

# Префикс для домашнего каталога

HOME=/home

# Время окончания действия пароля (дни)

EXPIRE=30

# Минимальное количество дней до смены пароля

DAYS=0

# За 5 дней предупреждаем пользователя

WARN=5

WHOAMI=`/usr/bin/whoami`

if [ $WHOAMI!="root" ]; then

 echo "Access violation."

 exit 1

fi

echo –n "Enter new name: "

read USERNAME

echo –n "Enter full name: "

read FULLNAME

adduser –c "$FULLNAME" –d $HOME/$USERNAME –e $EXPIRE \

 –g $GROUP –S $SHELL $USERNAME

passwd –n $DAYS –w $WARN $USERNAME

passwd $USERNAME

4

Файловая система Linux

4.1. Файлы и каталоги. Дерево каталогов

В свое время, при использовании DOS вводилось определение файла как поименованной области данных на диске — на то DOS и дисковая операционная система. В Linux понятие файла значительно расширено. Практически все, с чем вы имеете дело в Linux, является файлом. Команды, которые вы вводите с клавиатуры, — это файлы, которые содержат программы. Устройства вашего компьютера – это тоже файлы. Грубо говоря, файл — это последовательность битов, а жесткий диск — просто смесь нулей и единиц. Linux представляет биты так, как вам понятно, и в этом заключается одна из ее основных функций — управление файловой системой. Файловая система — способ организации и представления битов на жестком диске.