در لینوکس، هر فایلی دارای تعدادی برچسب زمان است که برخی از تجزیه و تحلیل‌های مهم در مورد زمان اصلاح یا تغییر فایل یا ویژگی فایل را ارائه می‌دهد. در اینجا می‌خواهیم این برچسب‌های زمان را با جزئیات‌شان شرح دهیم.

 

 

برچسب‌های زمان در لینوکس

هر فایلی در لینوکس به‌طور معمول دارای این سه برچسب زمان است:

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 نشان دهند.

 

 

منبع:

linuxhandbook