মৌলিক ভুল ধারণাটি পরিষ্কার করার জন্য @ gniourf_gniourf এ টুপিটির পরামর্শ ।
এই উত্তরটি বিদ্যমান উত্তরের একটি ওভারভিউ সরবরাহ করার এবং তাদের সূক্ষ্মতা এবং আপেক্ষিক গুণাবলী নিয়ে আলোচনা করার পাশাপাশি পটভূমির তথ্য সরবরাহ করার চেষ্টা করে , বিশেষত বহনযোগ্যতার ক্ষেত্রে ।
এক্সিকিউটেবল ফাইলগুলি সন্ধান করা দুটি স্বতন্ত্র ব্যবহারের ক্ষেত্রে উল্লেখ করতে পারে :
- ব্যবহারকারীকেন্দ্রিক : বর্তমান ব্যবহারকারী দ্বারা কার্যকরযোগ্য ফাইলগুলি সন্ধান করুন ।
- ফাইলকেন্দ্রিক : (এক বা একাধিক) এক্সিকিউটেবল অনুমতি বিট সেট করা ফাইলগুলি সন্ধান করুন ।
নোট করুন যে কোনও একটি দৃশ্যে এক্সিকিউটেবলের জন্য সিমলিংকগুলি সন্ধান করার জন্য কেবল এটির পরিবর্তে ব্যবহারfind -L ...
করা বুদ্ধিমান হতে পারে ।find ...
মনে রাখবেন যে সহজতম ফাইলকেন্দ্রিক কেস - সমস্ত তিনটি সুরক্ষা প্রিন্সিপাল (ব্যবহারকারী, গোষ্ঠী, অন্যান্য) এর জন্য নির্বাহযোগ্য অনুমতি বিট নির্ধারিত এক্সিকিউটেবলগুলির সন্ধান করা - সাধারণত হবে , তবে প্রয়োজনে ব্যবহারকারী-কেন্দ্রিক দৃশ্যের মতো একই ফল পাওয়া যাবে না - এবং এটি পার্থক্য বুঝতে গুরুত্বপূর্ণ।
ব্যবহারকারীকেন্দ্রিক ( -executable
)
গৃহীত উত্তর commendably বিশেষ পরামর্শ দেওয়া হচ্ছে -executable
, যদি গনুহ find
পাওয়া যায়।
- জিএনইউ
find
বেশিরভাগ লিনাক্সের ডিস্ট্রোস
নিয়ে আসে
- বিপরীতে, ম্যাকোস সহ বিএসডি-ভিত্তিক প্ল্যাটফর্মগুলি বিএসডি সন্ধানের সাথে আসে, যা কম শক্তিশালী।
- দৃশ্যের দাবি অনুসারে,
-executable
কেবলমাত্র বর্তমান ব্যবহারকারী কার্যকর করতে পারে এমন ফাইলগুলির সাথে মেলে (প্রান্তের কেসগুলি রয়েছে [[1] )।
বাসদ find
বিকল্প গৃহীত উত্তর (দ্বারা প্রদত্ত -perm +111
) একটি উত্তর বিভিন্ন , ফাইল -centric প্রশ্ন (উত্তর নিজেই হিসাবে যুক্তরাষ্ট্র)।
- শুধু ব্যবহার
-perm
উত্তর দিতে ব্যবহারকারী -centric প্রশ্ন হল অসম্ভব কারণ কি প্রয়োজন হয় করা হয়, কহা ফাইলের ব্যবহারকারী এবং গ্রুপ পরিচয় বর্তমান ব্যবহারকারীর , যেহেতু -perm
শুধুমাত্র পরীক্ষা করতে পারেন ফাইলের অনুমতি।
শুধুমাত্র পসিক্স find
বৈশিষ্ট্য ব্যবহার করে , বাইরের ইউটিলিটিগুলি জড়িত না করে প্রশ্নের উত্তর দেওয়া যাবে না।
সুতরাং, সেরা -perm
(নিজে) কি করতে পারেন একটি হল পড়তা এর -executable
। হয়তো একজন ঘনিষ্ঠ পড়তা চেয়ে -perm +111
হয়-perm -111
এই ধর্মঘট টিপিক্যাল বাস্তব জগতের দৃশ্যকল্প আমাকে - তাই হিসাবে আছে সমস্ত নিরাপত্তা প্রিন্সিপাল (ব্যবহারকারী, গ্রুপ, অন্যান্য) জন্য এক্সিকিউটেবল বিট সেট ফাইল খুঁজে বের করা। বোনাস হিসাবে, এটি পসিক্স-কমপ্লায়েন্ট হতে পারে ( find -L
সিমলিংকগুলি অন্তর্ভুক্ত করতে ব্যবহার করুন , ব্যাখ্যাটির জন্য আরও নীচে দেখুন):
find . -type f -perm -111 # or: find . -type f -perm -a=x
gniourf_gniourf এর উত্তর পারফরম্যান্স ব্যয় করে,ব্যবহার করে, এর-executable
একটি সত্য, পোর্টেবল সমতুল্য সরবরাহ করে।-exec test -x {} \;
মিশ্রন -exec test -x {} \;
সঙ্গে -perm +111
(অর্থাত, ফাইল অন্তত একটি এক্সিকিউটেবল বিট সেট) কার্য সম্পাদন করে সাহায্য করতে পারে exec
প্রয়োজন জন্য প্রার্থনা নাও করা যেতে যে ফাইল (নিম্নলিখিত বাসদ খুঁজে পেতে POSIX-অনুবর্তী সমতুল্য ব্যবহার -perm +111
/ গনুহ খুঁজে -perm /111
; ক্লিক করুন অধিকতর দেখতে একটি ব্যাখ্যা জন্য) :
find . -type f \( -perm -u=x -o -perm -g=x -o -perm -o=x \) -exec test -x {} \; -print
ফাইলকেন্দ্রিক ( -perm
)
- করতে উত্তর ফাইল -centric প্রশ্ন , এটা হয় POSIX-অনুবর্তী ব্যবহার করতে যথেষ্ট
-perm
প্রাথমিক (ক নামে পরিচিত পরীক্ষা গনুহ খোঁজ পরিভাষা)।
-perm
আপনাকে কেবল কোনও এক্সিকিউটেবিলিটি নয়, কোনও ফাইলের অনুমতি পরীক্ষা করার অনুমতি দেয় ।
- অনুমতিগুলি অষ্টাল বা প্রতীকী মোড হিসাবে নির্দিষ্ট করা হয় । অক্টাল মোডগুলি হ'ল অষ্ট সংখ্যা (যেমন,
111
), যেখানে প্রতীকী মোডগুলি স্ট্রিং (যেমন, a=x
)।
- সিম্বলিক মোডগুলি
u
(ব্যবহারকারী), g
(গোষ্ঠী) এবং o
(অন্যান্য) হিসাবে সুরক্ষা প্রিন্সিপালগুলি সনাক্ত করে বা a
তিনটিই উল্লেখ করে। অনুমতিসমূহ হিসাবে প্রকাশ করা হয় x
উদাহরণস্বরূপ, এক্সিকিউটেবল জন্য, এবং অপারেটর ব্যবহার করে প্রিন্সিপাল নির্ধারিত =
, +
এবং -
; অষ্টাল মোড সহchmod
একটি সম্পূর্ণ আলোচনার জন্য, ইউটিলিটির জন্য পসিক্স স্পেস দেখুন ।
- এর প্রসঙ্গে
find
:
-
(উদাহরণস্বরূপ -ug=x
) এর সাথে একটি মোডের উপসীকরণের অর্থ: ফাইলগুলি মেলানো যাতে সমস্ত অনুমতি নির্দিষ্ট থাকে (তবে মেলানো ফাইলগুলির অতিরিক্ত অনুমতি থাকতে পারে)।
- রয়ে কোনো উপসর্গ নেই (যেমন
755
এই আছে ম্যাচের ফাইলগুলি:) মানে পূর্ণ, সঠিক অনুমতি সেট।
- কেভিয়েট : জিএনইউ এবং বিএসডি উভয়ই সুনির্দিষ্ট-অনুমোদিত-বিট-সেট যুক্তির সাথে যুক্ত একটি অতিরিক্ত, নন - স্ট্যান্ডার্ড উপসর্গটি প্রয়োগ করে , তবে এটি বেমানান বাক্য গঠন সহ করে :
- বিএসডি সন্ধান:
+
- জিএনইউ সন্ধান করুন:
/
[২]
- সুতরাং, আপনার কোডটি অবশ্যই পোর্টেবল হতে পারে তবে এই এক্সটেনশনগুলি এড়িয়ে চলুন ।
- নীচের উদাহরণগুলি বিভিন্ন ফাইলকেন্দ্রিক প্রশ্নের বহনযোগ্য উত্তরগুলি প্রদর্শন করে।
ফাইল কেন্দ্রিক কমান্ড উদাহরণ
বিঃদ্রঃ:
- নিম্নলিখিত উদাহরণগুলি পসিএক্স-কমপ্লায়েন্ট , যার অর্থ তারা জিএনইউ অনুসন্ধান এবং বিএসডি সন্ধান সহ যে কোনও পসিক্স-সামঞ্জস্যপূর্ণ প্রয়োগে কাজ করা উচিত; বিশেষত, এর প্রয়োজন:
- নন-স্ট্যান্ডার্ড মোডের উপসর্গগুলি
+
বা ব্যবহার করা হচ্ছে না /
।
- লজিকাল-অপারেটর প্রাইমারিগুলির POSIX ফর্মগুলি ব্যবহার করে :
!
না (জিএনইউ অনুসন্ধান এবং বিএসডি অনুসন্ধানের জন্যও অনুমতি দেয়) for -not
); নোট যা শেল ইতিহাসের বিস্তৃতি থেকে \!
সুরক্ষার জন্য উদাহরণগুলিতে ব্যবহৃত হয়!
-a
এবং এর জন্য (জিএনইউ অনুসন্ধান এবং বিএসডি সন্ধানের অনুমতি দেয় -and
)
-o
OR এর জন্য (জিএনইউ অনুসন্ধান এবং বিএসডি সন্ধানের অনুমতি দেয় -or
)
- উদাহরণ ব্যবহার প্রতীকী মোড , কারণ সেগুলি পড়া এবং মনে রাখা সহজ।
- মোড উপসর্গের সাথে
-
, =
এবং +
অপারেটরগুলি আন্তঃবিন্যভাবে ব্যবহার করা যেতে পারে (উদাহরণস্বরূপ, -u=x
সমান -u+x
- আপনি যদি আবেদন না করেন)-x
পরে কোনও অর্থ নেই)।
,
আংশিক মোডে যোগ দিতে ব্যবহার করুন ; এবং যুক্তি বোঝানো হয়; যেমন, -u=x,g=x
ব্যবহারকারী এবং উভয়ই এর অর্থ গ্রুপ নির্বাহযোগ্য বিট সেট করা আবশ্যক।
- মোডগুলি না পারেন, নিজেদের "ম্যাচে এই বিট সেট করা না শুধুমাত্র যদি" অর্থে নেতিবাচক ম্যাচিং প্রকাশ;
-perm
প্রাথমিক, নয় সহ আপনার পৃথক এক্সপ্রেশন অবশ্যই ব্যবহার করা উচিত !
।
- নোট করুন যে ফাইন্ডের প্রাথমিকগুলি (যেমন
-print
, বা -perm
; এছাড়াও জিএনইউ অনুসন্ধানে ক্রিয়া এবং পরীক্ষা হিসাবে পরিচিত ) স্পষ্টভাবে-a
(লজিক্যাল এ্যান্ড) যোগ দেওয়া হয়েছে এবং -o
এবং সম্ভবত এবং প্রথম বন্ধনী (যেমন \(
এবং\)
শেল ) ও যুক্তি প্রয়োগের জন্য প্রয়োজনীয়।
find -L ...
এর পরিবর্তে সিমলিংকের সাথেfind ...
ম্যাচ করার জন্য কেবল ব্যবহার করা হয় এক্সিকিউটেবলের সাথে
-L
প্রতিলিঙ্কগুলির পরিবর্তে সিমলিংকের লক্ষ্যগুলি মূল্যায়ন করার নির্দেশ দেয়; অতএব, ছাড়া -L
, -type f
পুরোপুরি প্রতীকগুলি উপেক্ষা করবে।
# Match files that have ALL executable bits set - for ALL 3 security
# principals (u (user), g (group), o (others)) and are therefore executable
# by *anyone*.
# This is the typical case, and applies to executables in _system_ locations
# (e.g., /bin) and user-installed executables in _shared_ locations
# (e.g., /usr/local/bin), for instance.
find -L . -type f -perm -a=x # -a=x is the same as -ugo=x
# The POSIX-compliant equivalent of `-perm +111` from the accepted answer:
# Match files that have ANY executable bit set.
# Note the need to group the permission tests using parentheses.
find -L . -type f \( -perm -u=x -o -perm -g=x -o -perm -o=x \)
# A somewhat contrived example to demonstrate the use of a multi-principial
# mode (comma-separated clauses) and negation:
# Match files that have _both_ the user and group executable bit set, while
# also _not_ having the other executable bit set.
find -L . -type f -perm -u=x,g=x \! -perm -o=x
[১] জিএনইউ -executable
থেকে প্রাপ্ত man find
বিবরণে ৪.৪.২ খুঁজে পান:
এক্সিকিউটেবল এবং ডিরেক্টরি যা অনুসন্ধানযোগ্য (ফাইলের নাম রেজোলিউশন অর্থে) ফাইলগুলি মেলে। এটি অ্যাকাউন্ট অ্যাক্সেস নিয়ন্ত্রণের তালিকা এবং অন্যান্য অনুমতি প্রত্নতত্ত্বগুলিতে গ্রহণ করে যা -স্পর্ম পরীক্ষাটি উপেক্ষা করে। এই পরীক্ষাটি অ্যাক্সেস (2) সিস্টেম কল ব্যবহার করে এবং এনএফএস সার্ভারগুলি দ্বারা বোকা বানানো যেতে পারে যা ইউআইডি ম্যাপিং করে (বা রুট-স্কোয়াশিং), যেহেতু অনেকগুলি সিস্টেম ক্লায়েন্টের কার্নেলে অ্যাক্সেস (2) প্রয়োগ করে এবং তাই এটি ব্যবহার করতে পারে না সার্ভারে রাখা ইউআইডি ম্যাপিংয়ের তথ্য। যেহেতু এই পরীক্ষাটি কেবল অ্যাক্সেস (2) সিস্টেম কলের ফলাফলের উপর ভিত্তি করে তৈরি করা হয়, এমন কোনও গ্যারান্টি নেই যে যার জন্য এই পরীক্ষাটি সফল হয় সেই ফাইলটি আসলে কার্যকর করা যায়।
[২] জিএনইউ ৪.৫.১২ এর চেয়েও পুরানো সংস্করণগুলিকে উপসর্গের অনুমতি দেয় +
, তবে এটি প্রথমে হ্রাস করা হয়েছিল এবং শেষ পর্যন্ত অপসারণ করা হয়েছিল, কারণ প্রতীকী মোডের +
সাথে একত্রিত হওয়ার ফলে সম্ভবত যথাযথ অনুমতিগুলির মুখোশ হিসাবে ব্যাখ্যা করার কারণে অপ্রত্যাশিত ফলাফল পাওয়া যায় । যদি আপনি (ক) একটি সংস্করণ উপর রান সামনে 4.5.12 এবং (খ) নিজেকে সীমাবদ্ধ অকট্যাল মোড শুধুমাত্র, আপনি পারে ব্যবহার দিয়ে পার পেতে সঙ্গে উভয় গনুহ খুঁজে পেতে এবং বাসদ খুঁজে, কিন্তু এটি একটি ভাল ধারণা নয়।+