منبع اصلی نوشتار زیر در این لینک قرار دارد

یافتن تمامی فایل ها در مالکیت یک کاربر ویژه (دستور find – بخش دوم)

در بخش اول دستور find با چگونگی ساختار دستور آشنا شدید. در این مطلب چگونگی یافتن فایل های مرتبط به یک کاربر یا گروه خاص نشان داده می شود. در لینوکس هر فایل دارای مجوز های write,read و execute برای مالک (owner) و گروه اصلی که کاربر عضو آن است و دیگر افراد است. اگر می خواهید فایل هایی را که متعلق به یک گروه است را پیدا کنید از دستور find و به فرمت زیر استفاده کنید.

{find directory-location -group {group-name} -name {file-name

directory-location : دایرکتوری که درون آن جستجو می شود.

group- : نام گروه را تعیین می کند.

file-name : نام فایل را تعیین می کند.

بطور مثال برای تعیین تمامی فایل های متعلق به کاربران گروه shell از دستور زیر استفاده کنید.

find /home -group shell | less

یا برای یافتن تمامی فایل هایی که با sh. خاتمه می یابند.

find /home -group shell -name “*.sh” | less

همچنین برای یافتن فایل های متعلق به یک کاربر خاص از دستور زیر استفاده کنید

{find directory-location -user {user-name} -name {file-name

بطور مثال برای یافتن تمامی فایل های متعلق به کاربر a.nami که با sh. خاتمه می یابند.

find /home -user a.nami -name “*.sh” | less

اما مشکل خطوط بالا در این است که چون ما می خواهیم برای کاربر a.nami در زیر دایرکتوری home/ بگردیم، پس قطعن ممکن است دیگر کاربران در دایرکتوری خانگیشان فایل هایی داشته باشند که a.nami روی آنها مجوزی ندارد و خروجی مانند زیر نشان می دهد.

\"\"

ساده ترین کار این است که بجای جستجو در دایرکتوری کلی ترِ home/ با دستور cd به دایرکتوری خود برویم و آنجا دستور را اجرا کنیم. اما شاید مجبور باشیم که در کل یک دایرکتوری جستجو کنیم پس بهتر است با مفاهیم redirection خطا ها را نشان ندهیم. از دستور های زیر برای نمایش ندادن خطای Permission Denied استفاده کنید.

find /home -user a.nami -name “*.sh” 2> /dev/null | less

یا می توانید به صورت زیر عمل کنید که اگر فایل متعلق به شما بود در فایل access_list (قسمت سبز شده) و اگر فایل متعلق به شما نبود در فایل denied_list ذخیره شوند.

find /home -user a.nami -name “*.sh” > ~/access_list 2> ~/denied_list

حالا با دستور cat فایل ها را بخوانید. اما اگر بخواهید بدانید چند فایل را دسترسی دارید و چند تا را دسترسی ندارید :

  • با هر کدام از دستور های زیر می توانید بدانید به چند فایل دسترسی دارید.

find /home/ -user a.nami -name “*.sh” 2> /dev/null | wc -l

OR

cat ~/access_list | wc -l

  • با هر کدام از دستور های زیر می توانید بدانید به چند فایل دسترسی ندارید.

cat ~/denied_list | wc -l



برچسب ها : , , , , , , , ,