Читаем Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание полностью

#·· и создается новая база данных. Если личная база данных. slocatedbis пустая,

#·· вместо нее используется системная.

locatedb="/var/locate.db"

slocatedb="$HOME/.slocatedb"

if [! -e $slocatedb −o "$1" = "-explain"]; then

··cat << "EOF" >&2

Warning: Secure locate keeps a private database for each user, and your

database hasn't yet been created. Until it is (probably late tonight),

I'll just use the public locate database, which will show you all

publicly accessible matches rather than those explicitly available to

account ${USER:-$LOGNAME}.

EOF

··if ["$1" = "-explain"]; then

····exit 0

··fi

··# Перед продолжением создать файл. slocatedb, чтобы задание cron заполнило

··#·· его, когда в следующий раз сценарий mkslocatedb будет запущен.

··touch $slocatedb···· # mkslocatedb заполнит этот файл при следующем запуске

··chmod 600 $slocatedb # Установить безопасные привилегии

elif [-s $slocatedb]; then

··locatedb=$slocatedb

else

··echo "Warning: using public database. Use \"$0 −explain\" for details." >&2

fi

if [-z "$1"]; then

··echo "Usage: $0 pattern" >&2

··exit 1

fi

exec grep −i "$1" $locatedb

<p>Как это работает</p>

Сценарий mkslocatedb основан на идее, что процесс, запущенный с привилегиями root, может временно приобретать привилегии разных пользователей, используя команду su −fm user . После этого он может выполнить команду find с привилегиями каждого пользователя для создания персонализированных баз данных с именами файлов. Однако, работая с командой su внутри сценария, необходимо соблюдать некоторые меры предосторожности, потому что по умолчанию su не только изменяет действующий идентификатор пользователя, но также импортирует окружение для выбранной учетной записи. Это может приводить к странным и запутывающим сообщениям об ошибках, если только не использовать в команде ф −m— m, запрещающий импорт пользовательского окружения. Флаг −f — это дополнительная мера предосторожности, помогающая предотвратить загрузку файла .cshrc для учетных записей, использующих командную оболочку csh или tcsh.

Еще одна необычная конструкция в строке , 2>/dev/null, которая отправляет все сообщения об ошибках в пресловутый битоприемник: все, что посылается в /dev/null, исчезает без следа. Это самый простой способ избавиться от неизбежных сообщений о недостаточности привилегий, которые выводит команда find в каждом вызове.

<p>Запуск сценария</p>

mkslocatedb — сценарий, необычный не только тем, что должен запускаться с привилегиями root, но и тем, что использования команды sudo для его запуска будет недостаточно. Вы должны войти в систему как пользователь root или использовать более мощную команду su, чтобы приобрести привилегии root перед запуском сценария. Это объясняется тем, что su фактически превращает вас в суперпользователя root, тогда как sudo просто дает текущему пользователю привилегии root на время. Команда sudo устанавливает другие права доступа к файлам, чем команда su. Сценарий slocate, конечно, не предъявляет таких требований.

<p>Результаты</p>

В результате попытки создать базы данных для пользователей nobody (общедоступная база данных) и taylor в системе Linux на экран будут выведены строки, как показано в листинге 5.13.

Листинг 5.13. Запуск сценария mkslocatedb с привилегиями root

# mkslocatedb

building default slocate database (user = nobody)

… result is 99809 lines long.

building slocate database for user taylor

… result is 99808 lines long.

Теперь давайте сначала попробуем найти конкретный файл или группу файлов, соответствующих заданному шаблону, зарегистрировавшись в системе как пользователь tintin (в домашнем каталоге которого нет файла .slocatedb):

tintin $ slocate Taylor-Self-Assess.doc

Перейти на страницу:

Все книги серии Для профессионалов

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание
Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание

Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ. А решения даются так, что их легко можно взять за основу и экстраполировать на другие схожие задачи.Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.

Брендон Перри , Дейв Тейлор

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных