در لینوکس، هر فایلی دارای تعدادی برچسب زمان است که برخی از تجزیه و تحلیلهای مهم در مورد زمان اصلاح یا تغییر فایل یا ویژگی فایل را ارائه میدهد. در اینجا میخواهیم این برچسبهای زمان را با جزئیاتشان شرح دهیم.
برچسبهای زمان در لینوکس
هر فایلی در لینوکس بهطور معمول دارای این سه برچسب زمان است:
atime: زمان دسترسی
mtime: زمان اجرای اصلاحات
ctime: زمان اجرای تغییرات
برچسب زمان atime
atime، مخفف عبارت access time (زمان دسترسی) است. این برچسب زمان به شما میگوید، آخرین مرتبه دسترسی به یک فایل چه زمانی بوده است. دسترسی به یک فایل، به معنای استفاده از ابزارهای cat ،vim ،less یا دیگر ابزارها برای خواندن یا نمایش محتوای آن فایل است.
برچسب زمان mtime
mtime، مخفف عبارت modify time (زمان اجرای اصلاحات) است. این برچسب زمان به شما میگوید، آخرین مرتبه اصلاح یک فایل چه زمانی بود. اجرای اصلاحات به این معنی است که محتوای یک فایل با ویرایش فایل تغییر یابد.
برچسب زمان ctime
ctime، مخفف عبارت change time (زمان اجرای تغییرات) است. این برچسب زمان به شما میگوید، آخرین مرتبه ای که ویژگیها و metadata مربوط به یک فایل تغییر یافته، چه زمانی است. metadata شامل مجوزهای فایل، مالکیت، نام و محل فایل است.
نحوه مشاهده برچسبهای زمان یک فایل
شما میتوانید با استفاده از دستور stat، کلیه برچسبهای زمان یک فایل را مشاهده کنید. استفاده از دستور stat بسیار ساده است؛ بدین معنی که تنها باید نام فایل را به همراه دستور ارائه نمایید.
stat
خروجی به این صورت خواهد بود:
stat abhi.txt
File: abhi.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 10305h/66309d Inode: 11936465 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-08-30 12:19:54.262153704 +0530
Modify: 2018-08-30 12:19:54.262153704 +0530
Change: 2018-08-30 12:19:54.262153704 +0530
Birth: -
شما میتوانید هر سه نوع برچسب زمان (دسترسی، اصلاح و تغییر) را در خروجی فوق مشاهده کنید.
همانطور که مشاهده مینمایید، هر سه نوع برچسب زمان در اینجا یکسان هستند؛ زیرا این فایل خالی، هم اکنون با دستور touch ایجاد شده است.
اکنون بیایید این برچسبهای زمان را اصلاح کنیم.
اگر از دستور less برای خواندن فایل استفاده نماییم، تنها زمان دسترسی تغییر میکند؛ زیرا محتوای فایل همچنان بدون تغییر باقی مانده است.
$ less abhi.txt
$ stat abhi.txt
File: abhi.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 10305h/66309d Inode: 11936465 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-08-30 12:25:13.794471295 +0530
Modify: 2018-08-30 12:19:54.262153704 +0530
Change: 2018-08-30 12:19:54.262153704 +0530
Birth: -
اکنون اجازه دهید زمان اجرای اصلاحات را تغییر دهیم؛ بدین صورت که از دستور cat برای اضافه کردن متن جدید به این فایل استفاده نماییم. این کار منجر به تغییر زمان دسترسی نمیشوند.
$ cat >> abhi.txt
demo text
^C
$ stat abhi.txt
File: abhi.txt
Size: 10 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11936465 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-08-30 12:25:13.794471295 +0530
Modify: 2018-08-30 12:32:34.751320967 +0530
Change: 2018-08-30 12:32:34.751320967 +0530
Birth: -
چنانچه دقت کنید، متوجه خواهید شد که با اجرای دستور بالا اگرچه شما فایل را اصلاح کردهاید و انتظار دارید که mtime تغییر نماید، اما ctime نیز تغییر کرده است.
به یاد داشته باشید، ctime همیشه با mtime تغییر میکند؛ به این دلیل که همزمان که mtime تحت کنترل کاربر است، ctime توسط سیستم کنترل میشود. این نشان میدهد که آخرین باری که بلاک دادهها یا metadataهای یک فایل تغییر یافته، چه زمانی بوده است. در نتیجه؛ اگر فایل را تغییر دهید، بلاک دادهها تغییر کرده و بنابراین ctime تغییر میکند.
با اصلاح مجوزهای فایل با استفاده از دستورات chmod یا chgrp میتوانید، ctime را به تنهایی تغییر دهید؛ اما بدون تغییر ctime نمیتوانید mtime را تغییر دهید.
علاوهبراین، شما نمیتوانید ctime را به گذشته و به روشهای عادی تغییر دهید. این برچسب زمان، یک نوع ویژگی امنیتی است؛ زیرا آخرین زمان تغییر فایل را ارائه میدهد. حتی اگر کسی mtime را تغییر داده و برای اهداف مخرب آن را به گذشته تنظیم کند؛ بااینحال، زمانی که mtime تغییر یابد، ctime زمان واقعی را نشان میدهد.
به یاد داشته باشید: ctime همیشه با تغییر mtime اصلاح میشود.
کاربرد برچسبهای زمان در فایل
برچسب زمان در تحلیل بسیار کمک میکند. ممکن است موقعیتهایی وجود داشته باشد که شما نیاز به ارجاع به برچسبهای زمان یک فایل داشته باشید. بهعنوانمثال، در موقعیتی که فایل باید اکنون تغییر کرده باشد، میتوانید بینید که آیا آن فایل اخیراً اصلاح شده است یا نه.
بهعنوانمثالی دیگر، یکی از موارد کاربرد، یافتن فایلهای log یک برنامه با mtime است. بدین صورت که برنامه را اجرا کرده و سپس به دایرکتوری والد برنامه بروید. پس از آن، فایلهایی را که در چند دقیقه اخیر اصلاح شدهاند، جستجو نمایید.
بنابراین، برچسب زمان برای زمانی که کسی به فایلها دسترسی پیدا کرده یا آن را بصورت مخرب تغییر داده است، میتواند در تجزیه و تحلیل کمک کند.
یافتن زمان ایجاد یک فایل
آیا به آخرین خط خروجی دستور stat دقت کرده اید؟ همان بخش که عبارت ‘Birth’ وجود دارد. ممکن است حدس بزنید که این، برچسب زمان مربوط به زمانی است که فایل ایجاد شده است.
بنابراین در واقع، یک برچسب زمانی دیگری به نام create time یا cr نیز وجود دارد؛ ولیکن همه سیستم فایلها از این برچسب زمانی پشتیبانی نمیکنند. Ext4، یکی از سیستم فایلهای محبوب سیستم عامل لینوکس است که اگرچه از برچسب زمان creation (ایجاد) پشتیبانی مینماید، اما دستور stat در حال حاضر قادر به نمایش آن برچسب نیست. شاید نسخههای بعدی دستور stat، برچسب زمان ایجاد را در بخش Birth نشان دهند.
منبع:
0 دیدگاه
نوشتن دیدگاه