Странные временные изменения в home-folder
Недавно я узнал о странном поведении моей системы и моих atime-записей моих /home файлов.
Я попытался написать простой скрипт, чтобы проверить, не повреждены ли некоторые файлы в папке /Downloads в течение нескольких дней, и затем удалить их. Когда я пытаюсь кодировать, я узнал, что все мои файлы в моей папке /home читаются за последние два дня. Я думал, что это может иметь какое-то отношение к моему предыдущему использованию find *
в моем сценарии.
Я пытался воспроизвести это, но время не изменилось.
Когда я зашифровал свои личные данные, я подумал, что это изменение времени является результатом расшифровки при запуске системы. Я пытался воспроизвести это с выключением и загрузкой, но время не изменилось.
Теперь я попытался оставить свой компьютер в покое на один день и не продолжать кодирование, чтобы увидеть, что произойдет. Несколько минут назад я запустил свой компьютер и угадаю, что... Все atime-записи настроены на время загрузки. Они не все одинаковы, но различаются на несколько секунд.
Я пытался получить некоторую информацию с помощью lsof и "команд" gmain
а также pool
получил доступ к моей домашней папке. Я не мог понять, что делают эти две "команды".
Вы когда-нибудь видели такое странное поведение и изменения времени при запуске? Мой secound Ubuntu 16.04 pc не имел этих изменений, но личные данные в /home-folder не шифруются на этом устройстве.
Если у вас есть представление о причинах этих изменений, пожалуйста, дайте мне знать.
С наилучшими пожеланиями
Alex
Linux debby 4.4.0-47-generic #68-Ubuntu SMP Wed Oct 26 19:39:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Ubuntu 16.04.1 LTS \n \l
Обновление 1
Я попытался воспроизвести эти atime-изменения с чистой установкой Ubuntu 16.04 в virtualbox с зашифрованными домашними файлами.
Я не получаю никаких изменений времени.
Через день я понял, что некоторые файлы сразу же изменились, когда я попытался проверить время с помощью моего файлового менеджера. Но я не смог воспроизвести это с моей чистой установкой Ubuntu в virtualbox.
Есть еще идеи?
Обновление 2
ОК, я сейчас очень напуган. Я проверяю все мои /home-файлы, и все они доступны при запуске. Некоторые моменты времени меняются сразу после запуска, некоторые становятся доступными через 3 минуты, а большая часть - через 6 минут. Мой процесс загрузки XPS 13 занимает менее 1 минуты. На данный момент я понятия не имею, что происходит.
Единственные записи в системном журнале на момент получения доступа к большинству файлов:
Nov 26 16:32:50 *** gnome-session[1869]: (nm-applet:2026): GLib-CRITICAL **: g_hash_table_remove_all: assertion 'hash_table != NULL' failed
Nov 26 16:32:50 *** gnome-session[1869]: (nm-applet:2026): nm-applet-CRITICAL **: nma_icons_free: assertion 'NM_IS_APPLET (applet)' failed
Обновление 3
После прочтения системного журнала и cronjobs. Возможно, это как-то связано с google-chome в /etc/chron.daily или org.gnome.zeitgeist.Engine, который был запущен за несколько секунд до того, как некоторые файлы были изменены.
Обновление 4
Еще один день, другая информация.
Сегодня я получаю такие же изменения времени. Но изменения тезисы только появляются мин. 24 часа после последних изменений. Кроме того, изменения происходят точно после перезагрузки или если я проверяю эти изменения с ls -ltu
в терминале или в наутилусе. Это действительно странно.
Я снова проверил системный журнал: Zeitgeist-Daemon потерпел крах через несколько секунд после изменения времени:
Nov 27 16:52:45 *** org.gnome.zeitgeist.Engine[1680]: (zeitgeist-daemon:2898): GLib-GIO-WARNING **: Error releasing name org.gnome.zeitgeist.Engine: The connection is closed
Nov 27 16:52:45 *** org.gnome.zeitgeist.Engine[1680]: #033[31m[15:52:45.020982 WARNING]#033[0m zeitgeist-daemon.vala:449: The connection is closed
Nov 27 16:54:11 *** gnome-session[1895]: ** (zeitgeist-datahub:2496): WARNING **: zeitgeist-datahub.vala:229: Unable to get name "org.gnome.zeitgeist.datahub" on the bus!
Nov 27 16:54:11 *** org.gnome.zeitgeist.Engine[1748]: ** (zeitgeist-datahub:2516): WARNING **: kde-recent-document-provider.vala:174: Couldn't find actor for 'basket'.
Но я отключил Zeitgeist перед загрузкой в системных настройках. Я уже проверил активность.sqlite, и она не менялась в течение нескольких дней. Только время активности.sqlite изменяется, как и все другие файлы. Я думаю, что эти временные изменения не имели ничего общего с духом времени.
Другая возможность - это ureadahead, который был остановлен через несколько секунд после этого изменения atime:
Nov 27 16:54:28 *** systemd[1]: Starting Stop ureadahead data collection...
Nov 27 16:54:28 *** systemd[1]: Stopped Read required files in advance.
Nov 27 16:54:28 *** systemd[1]: Started Stop ureadahead data collection.
Nov 27 16:55:40 *** systemd[1]: Stopping User Manager for UID 109...
Я думаю, что за эти изменения отвечает какой-то ежедневный хулиган. Моя cron.daily-папка:
-rwxr-xr-x 1 root root 1474 Nov 26 17:42 apt-compat
-rwxr-xr-x 1 root root 3449 Nov 26 17:42 popularity-contest
-rwxr-xr-x 1 root root 2263 Nov 26 17:42 send-poke
-rwxr-xr-x 1 root root 214 Nov 26 17:42 update-notifier-common
-rwxr-xr-x 1 root root 311 Nov 26 17:42 0anacron
-rwxr-xr-x 1 root root 376 Nov 26 17:42 apport
-rwxr-xr-x 1 root root 355 Nov 26 17:42 bsdmainutils
-rwxr-xr-x 1 root root 384 Nov 26 17:42 cracklib-runtime
-rwxr-xr-x 1 root root 1597 Nov 26 17:42 dpkg
-rwxr-xr-x 1 root root 372 Nov 26 17:42 logrotate
-rwxr-xr-x 1 root root 1293 Nov 26 17:42 man-db
-rwxr-xr-x 1 root root 435 Nov 26 17:42 mlocate
-rwxr-xr-x 1 root root 249 Nov 26 16:30 passwd
-rwxr-xr-x 1 root root 1046 Nov 26 16:30 upstart
lrwxrwxrwx 1 root root 37 Nov 26 16:25 google-chrome -> /opt/google/chrome/cron/google-chrome
Теперь я сосредоточусь на Google Chrome.
Пожалуйста, дайте мне знать, если у вас есть идеи.
Обновление 5
Хорошо, я думаю, что cronjobs не проблема:
$ grep run-parts /etc/crontab
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
Они бегут в 6:25 утра, но время меняется позже.
Я сравнил cronjobs из cron.daily с теми из чистой установки Ubuntu.
Только send-poke и google-chrome отличаются. Но время, когда времена меняются, не подходит.
Я удалил send-poke, потому что из ubuntu-oem-version это какая-то информация ping к канонической.
Смотрите код здесь:
apt-get source canonical-poke
Теперь я должен сосредоточиться на времени, когда время меняется. Если изменение произойдет вчера в 16:00, я могу перезагрузить компьютер или завершить работу и загрузить свой компьютер до 16:00 сегодня, и ничего не произойдет. Если я загружаюсь после 16:00, atime меняется на время загрузки. Поэтому я думаю, что это меняет мин. через 24 часа.
Обновление 6
Хорошо, возможно я ошибаюсь с моими мыслями о 24-часовой задержке и cronjobs. cat /proc/mounts | grep "/home/"
говорит, что моя домашняя папка смонтирована с релейным временем, поэтому временные изменения сделаны мин. через 24 часа. Я думаю, что "Zeitgeist" вернулся на стол. Я понял, что Zeitgeist не установлен на моей установке vanilla-ubuntu-16.04-x64. Но на моем XPS13 он установлен (и отключен), но запускается при каждой загрузке.
1 ответ
Я предполагаю, что ваш домашний каталог зашифрован с использованием ecryptfs. Если это действительно так, то вы видите ожидаемое поведение, хотя это не очень очевидно.
Наблюдаемое поведение является результатом сочетания двух факторов:
Всякий раз, когда вы входите в систему, ecryptfs должен читать каждый зашифрованный файл, чтобы получить ключ шифрования файла, который хранится в заголовке файла. Увидеть
man 7 ecryptfs
, Это должно изменить время последнего доступа каждого файла к времени, когда вы вошли в систему, но...По умолчанию Ubuntu, как и большинство, если не все дистрибутивы Linux, монтирует файловые системы ext4 с опцией
relatime
(увидетьman 8 mount
), что означает, что время доступа к файлу обновляется не для всех обращений, а только в том случае, если оно старше времени изменения файла или прошло не менее 24 часов с момента последнего обновления. Это сделано для того, чтобы не превращать каждый файл, считанный в чтение, с последующей записью, тем самым ускоряя операции и защищая устройства хранения, например, твердотельные накопители, которые способны выполнять ограниченное количество операций записи в течение срока службы.