Сценарий в листинге 5.23 решает эту проблему, очищая окружение после выхода пользователя из гостевой учетной записи. Он удаляет все новые файлы и подкаталоги, имена которых начинаются с точки и восстанавливает официальные файлы учетной записи, копируя их из архива, доступного только для чтения и спрятанного в каталоге
Код
Листинг 5.23. Сценарий fixguest
#!/bin/bash
# fixguest — очищает гостевую учетную запись в процессе выхода.
# Не доверяйте переменным окружения: ссылайтесь на источники,
#·· доступные только для чтения.
iam=$(id −un)
myhome="$(grep "^${iam}:" /etc/passwd | cut −d: −f6)"
# *** НЕ запускайте этот сценарий в обычной учетной записи!
if ["$iam"!= "guest"]; then
··echo "Error: you really don't want to run fixguest on this account." >&2
··exit 1
fi
if [! -d $myhome/..template]; then
··echo "$0: no template directory found for rebuilding." >&2
··exit 1
fi
# Удалить все файлы и каталоги в домашнем каталоге учетной записи.
cd $myhome
rm −rf * $(find. -name".[a-zA-Z0-9]*" −print)
# Теперь должен остаться только каталог. template.
cp −Rp..template/*.
exit 0
Как это работает
Чтобы сценарий работал правильно, создайте комплект шаблонных файлов и каталогов и поместите их в подкаталог
Запуск сценария
Самый подходящий момент для запуска сценария fixguest — выход пользователя из системы. Для этого можно вставить запуск в файл
Внимание: Все файлы будут автоматически удалены из домашнего каталога
гостевой учетной записи сразу после выхода, поэтому, пожалуйста,
не сохраняйте здесь ничего важного. Если вам потребуется что-то сохранить,
отправьте это по электронной почте на свой почтовый ящик.
Вы предупреждены!
Однако отдельные знающие пользователи могут скорректировать содержимое файла
Результаты
Сценарий ничего не выводит во время работы, он только восстанавливает состояние домашнего каталога в соответствии с содержимым каталога
Глава 6. Системное администрирование: обслуживание системы
Наиболее типичная область применения сценариев командной оболочки — помощь в администрировании системы Unix или Linux. Причины очевидны: администраторы часто самые компетентные пользователи системы, и они также отвечают за ее бесперебойную работу. Но существует еще одна причина. Догадываетесь? Системные администраторы и опытные пользователи почти наверняка получают удовольствие, занимаясь своей системой, а разработка сценариев в окружении Unix — это настоящее удовольствие!
И на этой ноте продолжим исследовать тему применения сценариев командной оболочки в решении задач системного администрирования.
№ 45. Слежение за программами с атрибутом setuid