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

Тут можно читать онлайн Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Питер, год 2017. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2017
  • Город:
    СПб.
  • ISBN:
    978-5-496-03029-8
  • Рейтинг:
    5/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - читать книгу онлайн бесплатно, автор Дейв Тейлор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Результаты

В той же системе, где был получен вывод команды df, показанный выше, этот сценарий выведет строку, представленную в листинге 5.10.

Листинг 5.10.Тестирование сценария diskspace

$ diskspace

96199 MB (93.94GB) of available disk space

Усовершенствование сценария

Если в вашей системе несколько многотерабайтных дисков, вы могли научить сценарий автоматически выводить значение в терабайтах. В случае исчерпания дискового пространства будет особенно неприятно увидеть, что доступно всего 0,03 Гб — но это отличный повод запустить сценарий № 36, чтобы подтолкнуть пользователей удалить ненужные файлы, разве не так?

Обратите внимание еще на одну проблему: имеет ли смысл учитывать доступное дисковое пространство на всех устройствах, включая разделы, которые точно не будут заполняться, такие как /boot , или достаточно сообщать информацию только о пользовательских разделах? В последнем случае этот сценарий можно было бы усовершенствовать, добавив вызов grep сразу после вызова df картинка 279. Используйте grep с именами нужных устройств, чтобы включить в расчеты только определенные устройства, или grep −v с именами ненужных устройств, чтобы исключить из расчетов информацию о них.

№ 39. Реализация защищенной команды locate

Сценарий locate, представленный в сценарии № 19 (глава 2), очень полезен, но создает угрозу безопасности: если процесс сбора данных запустить с привилегиями root, он составит полный список файлов и каталогов во всей системе, независимо от их владельца, что даст возможность обычным пользователям увидеть имена файлов каталогов, к которым у них нет доступа. Процесс сбора информации можно запустить с привилегиями обобщенного пользователя (как это делается в OS X, где mklocatedb запускается с привилегиями пользователя nobody), но и это не самое правильное решение, потому что вам может понадобиться найти файл где-нибудь в дереве вашего домашнего каталога, независимо от наличия прав доступа к этим файлам и каталогам у пользователя nobody.

Одно из решений этой дилеммы состоит в том, чтобы расширить записи, хранящиеся в базе данных locate, дополнив их сведениями о владельце, группе и привилегиях доступа. Но сама база данных mklocatedb все равно останется незащищенной, если только не запускать сценарий locate с привилегией setuid или setgid, чего желательно всячески избегать в интересах безопасности всей системы.

Компромиссное решение — создавать файл .locatedb отдельно для каждого пользователя. Это не самый худший вариант, потому что личные базы данных нужны только пользователям, которые действительно пользуются командой locate. После вызова система создаст файл .locatedb в домашнем каталоге пользователя, а его своевременное обновление можно переложить на задание cron, выполняющееся по ночам. Когда пользователь запустит защищенный сценарий slocate в самый первый раз, он увидит сообщение, предупреждающее о том, что он может выполнять поиск только среди общедоступных файлов. Запустив сценарий на следующий день (в зависимости от того, на какое время запланирован запуск задания cron), пользователи будут получать свои, персонализированные результаты.

Код

Защищенная версия locate состоит из двух сценариев: конструктора базы данных mkslocatedb (представленного в листинге 5.11), и утилиты поиска slocate (представленной в листинге 5.12).

Листинг 5.11.Сценарий mkslocatedb

··#!/bin/bash

··# mkslocatedb — создает центральную базу данных общедоступных файлов,

··#·· выполняясь с привилегиями пользователя nobody, и одновременно обходит

··#·· домашние каталоги всех пользователей в поисках··файла. slocatedb.

··#·· Если файл найден, для пользователя создается дополнительная, личная

··#·· версия базы данных поиска файлов.

··locatedb="/var/locate.db"

··slocatedb=".slocatedb"

··if ["$(id −nu)"!= "root"]; then

····echo "$0: Error: You must be root to run this command." >&2

····exit 1

··fi

··if ["$(grep '^nobody:' /etc/passwd)" = ""]; then

····echo "$0: Error: you must have an account for user 'nobody'" >&2

····echo "to create the default slocate database." >&2

····exit 1

··fi

··cd /·· # Предотвратить проблемы нехватки прав доступа после команды su

··# Сначала создать или обновить общедоступную базу данных.

картинка 280··su −fm nobody −c "find / −print" > $locatedb 2>/dev/null

··echo "building default slocate database (user = nobody)"

··echo… result is $(wc −l < $locatedb) lines long.

··# Теперь обойти учетные записи пользователей и посмотреть,

··#·· у кого в домашнем каталоге имеется файл. slocatedb.

··for account in $(cut −d: −f1 /etc/passwd)

··do

····homedir="$(grep "^${account}:" /etc/passwd | cut −d: −f6)"

····if ["$homedir" = "/"]; then

······continue·· # Не создавать в корневом каталоге.

····elif [-e $homedir/$slocatedb]; then

······echo "building slocate database for user $account"

······su −m $account −c "find / −print" > $homedir/$slocatedb \

········2>/dev/null

······chmod 600 $homedir/$slocatedb

······chown $account $homedir/$slocatedb

······echo… result is $(wc −l < $homedir/$slocatedb) lines long.

····fi

··done

··exit 0

Сам сценарий slocate (в листинге 5.12) — это пользовательский интерфейс к базе данных slocate.

Листинг 5.12.Сценарий slocate, сопутствующий сценарий для mkslocatedb

#!/bin/bash

# slocate — выполняет поиск собственной, защищенной базы данных locatedb

#·· пользователя по указанному шаблону. Если база данных не найдена, это

#·· означает, что она отсутствует, тогда выводится предупреждающее сообщение

#·· и создается новая база данных. Если личная база данных. 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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Дейв Тейлор читать все книги автора по порядку

Дейв Тейлор - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание, автор: Дейв Тейлор. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x