Назад | Перейти на главную страницу

Каков наиболее эффективный способ обработки / tmp и дисковых квот в Linux

Я использую VPS с веб-сервером (Apache + PHP), базой данных (MySQL) и сервером smtp (Exim). ОС: Debian Lenny. Оперативная память: 512 МБ. Использование (квота) (http://packages.debian.org/lenny/quota).

На данный момент у меня /tmp установлен как tmpfs. Это не идеально, так как у меня всего 512 МБ ОЗУ, и поэтому /tmp всего 256 МБ. Я решил создать файл раздела ext3 размером 1 ГБ (или как там он называется) на /var/tmpdisk. (решение об использовании ext3 было принято после прочтения Askubuntu.com: хорошая файловая система для / tmp?)

Чтобы сохранить / tmp в чистоте во время работы, я нашел tmpreaper: serverfault.com: Очистка / tmp

Что бы порекомендовали для быстрого протирания /var/tmpdisk, при сохранении настроек квоты?

В настоящее время я подумываю сделать следующее при запуске (/etc/rc.local?):

  1. Проверить наличие /var/tmpdisk. если его нет, запустите dd if=/dev/zero of=/var/tmpdisk bs=1K count=1000000
  2. Создайте файловую систему ext3 в /var/tmpdisk. Для меня это был самый быстрый способ очистить "диск". Команда: mkfs.ext3 -F /var/tmpdisk
  3. Установить на /tmp: mount -t ext3 -o loop,rw,nodev,noexec,nosuid,quota /var/tmpdisk /tmp

В этом черновике я не добавил способ сохранения настроек квоты. Любые идеи?

Большинство моих требований уже доступны в Debian.

По умолчанию, /etc/default/rcS устанавливает переменную среды TMPTIME=0.

$ man rcS:

ВРЕМЯ

При загрузке файлы в / tmp будут удалены, если время их изменения превышает TMPTIME дней назад. Значение 0 означает, что файлы удаляются независимо от возраста.. Если вы не хотите, чтобы система очищала / tmp, установите TMPTIME на отрицательное значение (например, -1) или на слово бесконечное.

Ищу в /lib/init/bootclean.sh, Я обнаружил, что файл квоты './aquota.user(owned by root) is excluded from removing. Conclusion: quota settings will persist during reboots andTMPTIME = 0can safely be set in/ и т.д. / по умолчанию / rcS`.

Хранить /tmp чист во время работы, я установил tmpreaper. Чтобы активировать его, SHOWWARNING=true следует прокомментировать. Более того, TMPREAPER_TIME=7d следует раскомментировать, чтобы очистить файлы старше 7 дней.

Был создан временный диск емкостью 1 ГБ, отформатированный в ext3 с помощью:

# dd if=/dev/zero of=/var/tmpdisk bs=1K count=1000000
# mkfs.ext3 -F /var/tmpdisk

Для его установки во время загрузки потребовалось изменение /etc/fstab:

# /var/tmpdisk /tmp ext3 loop,rw,nosuid,noexec,nodev,quota 0 0

поскольку /var/tmpdisk не является настоящим устройством, его следует устанавливать как петлевое устройство, поэтому loop. nosuid,noexec,nodev были добавлены в качестве уровня безопасности, чтобы предотвратить злоупотребление распространенными наборами эксплойтов /tmp. В заключение, quota включает квоту для диска.

После изменения /etc/fstab, Я побежал mount -a смонтировать новый /tmp диск. поскольку /tmp должны быть доступны для записи всем, и пользователи не должны иметь возможность удалять файлы, которые им не принадлежат, разрешения для каталога также должны быть изменены:

# chmod 1777 /tmp

Активировать квоты:

# quotacheck /tmp
# quotaon /tmp

Сейчас /tmp полностью соответствует моим потребностям с активированными квотами и автоматической очисткой ненужных файлов. Единственное, что мне нужно сделать, это добавить квоты для каждого пользователя, запустив edquota username.