Стандарт UNIX предоставляет пример кода для этого использования locale
утилита:
if printf "%s\n" "$response" | grep -Eq "$(locale yesexpr)"
then
affirmative processing goes here
else
non-affirmative processing goes here
fi
Значение для 'yesexpr' в POSIX
локаль (и на английских локалях в реальных системах) "^[yY]"
. Это должно быть интерпретировано как расширенное регулярное выражение. См. также noexpr.
logrotate
была хорошая идея.
Как любой регулярный файл, wtmp, возможно, был "редок" (cf. lseek (2) "дыры" и ls -s
) который может показать экстремальный размер файла, который на самом деле занимает мало диска. Как дыра добиралась там, если это была дыра? getty(8)
и у друзей, возможно, была ошибка. Или системный катастрофический отказ и восстановление fsck, возможно, вызвали его.
Если Вы надеетесь видеть необработанное содержание wtmp, od
или hd
хороши для заглядывания на двоичные файлы и имеют счастливый побочный эффект показа длительных периодов пустых, как таковых.
Если это не повторяется, я не уделил бы ему намного более внимание. Незначительно компетентный злоумышленник сделал бы лучшее задание, чем это, содержание не все, что интересный, и мало зависит от них.
Просто чтобы помочь другим, которые могут найти это полезным....
Есть ли другая программа кроме
последней
для проверки этих файлов?
Да, попробуйте utmpdump
.
$ utmpdump /var/log/wtmp
Если вы сомневаетесь, что в wtmp могут быть дыры, вы можете избавиться от них с помощью cp --sparse
, если у вас достаточно новых coreutils, или с помощью fallocate --dig-hole
, если вы используете еще не выпущенную версию util-linux 2.25. Возможно, более практичный подход - перепаковать wtmp.
utmpdump /var/log/wtmp | utmpdump -r > /tmp/newtmp
ls -l /var/log/wtmp /tmp/newtmp # if significantly smaller
chown root:root /tmp/newtmp
chmod 0554 /tmp/newtmp
mv /tmp/newtmp /var/log/wtmp
И даже если файл достаточно большой, просто поверните и сожмите.
mv /var/log/wtmp{,.1}
gzip -9 /var/log/wtmp.1
hd
более нечетные взгляды: pastebin.com/1UtxYudE – blueyed 22.09.2010, 14:21