لطفا وارد شوید یا ثبت‌نام کنید تا به انجمن‌ها دسترسی کامل داشته باشید.



 
امتياز موضوع :
  • 0 رأي - معدل امتيازات : 0
  • 1
  • 2
  • 3
  • 4
  • 5
جستجو و حذف همزمان یک فایل با پسوند مشخص
2010-12-01, 12:39 PM,
ارسال : #1
جستجو و حذف همزمان یک فایل با پسوند مشخص
سلام
چطور میشه یک فایل با پسوند مشخص از یک پوشه به همراه تمام زیر پوشه های آن جستجو و همزمان حذف کرد. می‌خوام این کار رو از طریق ترمینال انجام بدم.
ممنون میشم راهنمایی کنید
نقل قول این ارسال در یک پاسخ
2010-12-01, 01:06 PM,
ارسال : #2
پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
کد :
find . -type f -name "FILE-TO-FIND" -exec rm -f {} \;
نقل قول این ارسال در یک پاسخ
2011-01-09, 07:06 PM,
ارسال : #3
Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
Anonymous نویسنده :
کد :
find . -type f -name "FILE-TO-FIND" -exec rm -f {} \;

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

همیشه پیشگام ... همیشه بهترین ... همیشه فدورا
http://persian-foss-legal.blogspot.com
http://www.tesla-sanat.com
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-01-09, 07:12 PM,
ارسال : #4
پاسخ: Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
نقل قول :به هیچ وجه از این روش استفاده نکنید. اشکال امنیتی بزرگی در این روش هست.
مثلا چه مشکلی توشه !

Debian GNU/Linux System Administrator
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-01-09, 07:32 PM,
ارسال : #5
پاسخ: Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
فرض کنید شما میخواهید تمام فایل های دارای پسوند html رو از
کد :
~/mycache
پاک کنید ولی بقیه فایل ها مثلا css ها باقی بمونند. ممکنه شما اینکار رو بکنید:

کد :
cd ~/mycache
find . -type f -name "*.html" -exec rm -f {} \;

خیلی ایراد های امنیتی مختلفی در این دستور وجود داره. مثلا اگر شما به سایتی سر زده باشی که فایل index.html اون دارای یک فریم باشه که عملا سایت اصلی رو از فایل
کد :
-r ~; echo .html
نشون میده اون موقع بدون اینکه شما بفهمی و بالای مرورگر وبت چیزی دیده باشی فایلی به اسم
کد :
-r ~; echo .html
در cache شما وجود خواهد داشت که با اجرای دستور فوق عملا اتفاقی که میفته اینه که دستور find فایل بالا رو پیدا میکنه و با جایگزین کردن {} با اسم فایل دستور زیر روی کامپیوتر شما اجرا میشه:

کد :
rm -f -r ~; echo .html;

یعنی:

کد :
rm -rf ~
echo .html

حمله privellige elevation...

همیشه پیشگام ... همیشه بهترین ... همیشه فدورا
http://persian-foss-legal.blogspot.com
http://www.tesla-sanat.com
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-01-09, 08:25 PM,
ارسال : #6
پاسخ: Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
ببخشید من متوجه نشدم ... !

Debian GNU/Linux System Administrator
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-01-09, 10:01 PM,
ارسال : #7
Re: پاسخ: Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
mah454 نویسنده :ببخشید من متوجه نشدم ... !

<!-- m --><a class="postlink" href="http://www.gnu.org/software/findutils/manual/html_node/find_html/Problems-with-_002dexec-and-filenames.html#Problems-with-_002dexec-and-filenames">http://www.gnu.org/software/findutils/m ... -filenames</a><!-- m -->

همیشه پیشگام ... همیشه بهترین ... همیشه فدورا
http://persian-foss-legal.blogspot.com
http://www.tesla-sanat.com
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-01-09, 10:03 PM,
ارسال : #8
پاسخ: Re: پاسخ: Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
نقل قول :The reason for this is that the ‘{}’ is expanded to a filename which might contain a semicolon or other characters special to the shell.

همیشه پیشگام ... همیشه بهترین ... همیشه فدورا
http://persian-foss-legal.blogspot.com
http://www.tesla-sanat.com
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-01-10, 08:01 AM,
ارسال : #9
پاسخ: Re: پاسخ: Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
کد :
rm -vf `find . -iname "*.html"`

Registered Linux User #443548
<!-- m --><a class="postlink" href="http://lxsamee.com/">http://lxsamee.com/</a><!-- m -->
Follow me in Ohloh
http://www.karajlug.org
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-01-10, 11:52 AM,
ارسال : #10
Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
دوست عزیز بجای استفاده از گزینه -exec میتوانید خروجی دستور خود را به دستور xargs ارجاع داده و فایلها را پاک نمایید
کد :
cd ~/mycache
find . -iname "filename" |xargs rm
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-01-10, 04:28 PM,
ارسال : #11
Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
farhamxp نویسنده :دوست عزیز بجای استفاده از گزینه -exec میتوانید خروجی دستور خود را به دستور xargs ارجاع داده و فایلها را پاک نمایید
کد :
cd ~/mycache
find . -iname "filename" |xargs rm

آقا همون اشکال امنیتی در راه حل شما نیز وجود داره. دقت کنید به: <!-- m --><a class="postlink" href="http://www.gnu.org/software/findutils/manual/html_mono/find.html#Security-Considerations-for-xargs">http://www.gnu.org/software/findutils/m ... -for-xargs</a><!-- m -->

کد :
Firstly, if it is possible for an attacker to create files with names of their choice on the filesystem, then xargs is insecure unless the ‘-0’ option is used. If a file with the name /home/someuser/foo/bar\n/etc/passwd exists (assume that ‘\n’ stands for a newline character), then find ... -print can be persuaded to print three separate lines:

     /home/someuser/foo/bar
    
     /etc/passwd

If it finds a blank line in the input, xargs will ignore it. Therefore, if some action is to be taken on the basis of this list of files, the /etc/passwd file would be included even if this was not the intent of the person running find. There are circumstances in which an attacker can use this to their advantage. The same consideration applies to file names containing ordinary spaces rather than newlines, except that of course the list of file names will no longer contain an “extra” newline.

This problem is an unavoidable consequence of the default behaviour of the xargs command, which is specified by the POSIX standard. The only ways to avoid this problem are either to avoid all use of xargs in favour for example of ‘find -exec’ or (where available) ‘find -execdir’, or to use the ‘-0’ option, which ensures that xargs considers file names to be separated by ASCII NUL characters rather than whitespace. However, useful as this option is, the POSIX standard does not make it mandatory.

راه حل درست و امن سوالی که مطرح شده بود این دستور است:
کد :
find -name '*.html' -execdir sh -c 'rm -f "$@"' {}\;

همیشه پیشگام ... همیشه بهترین ... همیشه فدورا
http://persian-foss-legal.blogspot.com
http://www.tesla-sanat.com
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-01-10, 04:31 PM,
ارسال : #12
پاسخ: Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
اگر میخواهید از xargs استفاده کنید روش بالا درست نیست و اشکال امنیتی دارد. باید از این روش استفاده کنید:

کد :
xargs --null --arg-file=<(find . -name '*.html' -print0) rm -f

همیشه پیشگام ... همیشه بهترین ... همیشه فدورا
http://persian-foss-legal.blogspot.com
http://www.tesla-sanat.com
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-01-10, 04:40 PM,
ارسال : #13
Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
Anonymous نویسنده :
کد :
find . -type f -name "FILE-TO-FIND" -exec rm -f {} \;

خب تو این یه مورد خاص میشه این کارو کرد که ایراد امنیتی دوستان هم رفع بشه:
کد :
find . -type f -name "FILE_NAME_PATTERN" -delete
البته همچنان برای کارهای دیگه از همون exec میشه استفاده کرد. و توی خیلی از موارد اجرای این دستور جایی نیست که نگرانی امنیتی ایجاد کنه.

http://hedayatvk.blogspot.com
http://hedayatvk.wordpress.com
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-01-10, 04:48 PM,
ارسال : #14
پاسخ: Re: پاسخ: جستجو و حذف همزمان یک فایل با پسوند مشخص
البته به نظر میرسه یه مقداری در مورد خطر امنیتی اون دستور هم اغراق شده (هر چند کلا نمیشه خطرات امنیتی محتمل رو رد کرد) و به اون راحتی هم نیست. مثلا کافیه شما یه ; توی اسم یه فایل بگذارین و خودتون تست کنید ببینین چی میشه.

کد :
[hedayat@localhost ~]% mkdir t
[hedayat@localhost ~]% cd t
[hedayat@localhost ~/t]% touch "echo hi1; echo hi2"
[hedayat@localhost ~/t]% find -exec echo {} \;
.
./echo hi1; echo hi2
[hedayat@localhost ~/t]%

http://hedayatvk.blogspot.com
http://hedayatvk.wordpress.com
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ


رفتن به انجمن :


کاربران در حال مشاهده موضوع : 1 مهمان