ভাগ করা লাইব্রেরিগুলি কার্যকর করা যায় কেন?


59

কেন প্রায় সব ভাগ লাইব্রেরিগুলিতে /usr/lib/এক্সিকিউটেবল অনুমতি বিট সেট করা আছে? তাদের কার্যকর করার জন্য আমি কোনও ব্যবহারের মামলা দেখতে পাচ্ছি না। কিছু mainসংক্ষিপ্ত কপিরাইট এবং সংস্করণ নোট মুদ্রণ করতে কিছু ফাংশনের ফর্ম হুক আপ পরিচালনা করে , তবে অনেকে তা করে না এবং মৃত্যুদন্ড কার্যকর করার পরে সেগফল্টও করে না।

সুতরাং, এটি সেট করার বিন্দু কি x? সমস্ত গ্রন্থাগার প্যাকেজকারীদের কি তা করতে হবে? আমার যদি dlopen()ভাগ করা লাইব্রেরির 0644অনুমতি রয়েছে তবে কী হবে ?


3
কোন ওএসে (যদি লিনাক্স, কোন বিতরণ)? ডেবিয়ান স্কিজে, কেবলমাত্র এক্সিকিউটেবল ভাগ করা লাইব্রেরিগুলিতে /libএবং /usr/liblibc এবং libpthread হয় এবং কার্যকর করা হলে উভয়ই কপিরাইট নোটিশ মুদ্রণ করে।
গিলস

যদি সেগফল্ট হয় তবে তারা সম্ভবত ছোটখাটো বাগ are আপনি যদি তাদের কাছে উপস্থিত হন তবে আমি তাদের প্রতিবেদন করব। বিতরণ কি?
ফাহিম মিঠা

@ ফাহিম: main()এন্ট্রি পয়েন্ট হিসাবে প্রতীক না থাকা কোনও গৌণ বাগ নয়, তবে একটি মৌলিক নকশা পছন্দ। আপনি আমার বক্তব্য মিস করেছেন।
টাদিউস এ। কাদুউবস্কি

2
@ গিলস: আমি রেডহ্যাট-ফ্যামিলি লিনাক্স সিস্টেমগুলিতে (ফেডোরা এবং সেন্টোস) এবং সোলারিসে ডিফল্ট অনুমতি পছন্দ হিসাবে 755 টি দেখেছি।
টাদিউস এ। কাদুউবস্কি

এই প্রশ্নের ভিত্তি সর্বজনীন সত্য নয়। আসলে এটি মিথ্যা, উপরে উল্লিখিত হিসাবে, দেবিয়ান লিনাক্সের জন্য; এবং ফ্রিবিএসডি এবং ওপেনবিএসডি-র পক্ষেও মিথ্যা।
JdeBP

উত্তর:


32

এইচপি-ইউএক্সের অধীনে ভাগ করা লাইব্রেরিগুলি এমএমএপি () ব্যবহার করে মেমরিতে ম্যাপ করা হয় এবং সিস্টেমের সমস্ত মেমরি পৃষ্ঠাগুলিতে সুরক্ষা বিট থাকে যা কার্নেল এবং প্রসেসরের হার্ডওয়্যার মেমরি পৃষ্ঠা সুরক্ষা ব্যবস্থার সাথে মিলিত হয়। সিস্টেমে মেমরির যে কোনও পৃষ্ঠার বিষয়বস্তু সম্পাদন করতে, সেই পৃষ্ঠায় অবশ্যই PROT_EXEC সেট থাকা আবশ্যক - ডেটা এক্সিকিউশন শোষণ রোধ করার জন্য একটি দরকারী বৈশিষ্ট্য।

এমএমএপ () কলটি ম্যাপ করা মেমরির পৃষ্ঠাগুলির সুরক্ষা বিটগুলিতে এটি ধারণ করতে পারে সেই ফাইলটিতে অনুমতি বিটগুলি ব্যবহার করে: rwx -> PROT_READ | PROT_WRITE | PROT_EXEC (sys / mman.h থেকে)। সুতরাং কোনও ভাগ করা লাইব্রেরি এইচপি-ইউএক্সে ব্যবহারযোগ্য হওয়ার জন্য, ভাগ করা লাইব্রেরিযুক্ত ফাইলটিতে ম্যাপ করা লাইব্রেরিতেও অনুমতি কার্যকর করার বিষয়টি নিশ্চিত করার জন্য অবশ্যই অনুমতিগুলি প্রয়োগ করতে হবে।

এইচপি-ইউএক্স সিস্টেমে 644 মোডের সাথে একটি ভাগ করা লাইব্রেরি কোর ডাম্পগুলির কারণ হবে।


সম্ভবত অন্যান্য ইউনিক্স বাস্তবায়নও এই বৈশিষ্ট্যটি ব্যবহার করে।
টাদিউস এ। কাদুউবস্কি

> এইচপি-ইউএক্স ("হিউলেট প্যাকার্ড ইউনিক্স" থেকে) হুইলেট প্যাকার্ড এন্টারপ্রাইজের ইউনিক্স অপারেটিং সিস্টেমের মালিকানা বাস্তবায়ন, ইউনিক্স সিস্টেম ভি এর উপর ভিত্তি করে
ডেভিড 天宇 ওয়াং

অন্য একটি উদাহরণ হ'ল পৃথক ডিবাগিনফো প্যাকেজগুলির সাথে আরপিএম প্যাকেজ তৈরি করতে ভাগ করা লাইব্রেরিগুলিতে অনুমতি সম্পাদনের প্রয়োজন হয় অন্যথায় সন্ধান করুন-debuginfo.sh এগুলি প্রক্রিয়াজাতকরণ এড়িয়ে যায়।
ডোমেন বৃঙ্কার

20

অ এক্সিকিউটেবল ভাগ বস্তু জরিমানা কাজ করে, কিন্তু লাইব্রেরি হিসাবে চিহ্নিত এক্সিকিউটেবল পারে এছাড়াও স্বতন্ত্র প্রোগ্রাম হিসাবে runnable হও।

সুতরাং, এই এক্স সেট করার বিন্দুটি কী?

কিছুই না, আপনি না চান যদি না তারা সংস্করণ বা অন্যান্য তথ্য নির্গত করতে পারে

সমস্ত গ্রন্থাগার প্যাকেজকারীদের কি তা করতে হবে?

না

যদি আমি একটি ভাগ করা লাইব্রেরিতে 0644 এর অনুমতি নিয়ে dlopen () করি তবে কী হবে?

আপনি একটি নতুন ভাগ করা অবজেক্ট হ্যান্ডেল পাবেন (এতক্ষণ ফাইলটি পঠনযোগ্য ইত্যাদি) ... এক্সিকিউট বিট এটি প্রভাবিত করে না


যে সকল লাইব্রেরিগুলি স্বতন্ত্র এক্সিকিউটেবল হিসাবে ব্যবহারযোগ্য হয় না তার জন্য এখনও এক্সিকিউট বিট সেট রয়েছে: এটি সম্ভবত বিল্ড সিস্টেম বা লিঙ্ক স্ক্রিপ্ট ব্যবহৃত কেবলমাত্র একটি প্রত্নতত্ত্ব।


উদাহরণস্বরূপ আউটপুট, কেবল রেফারেন্সের জন্য:

$ /lib/i386-linux-gnu/libc.so.6
GNU C Library (Ubuntu EGLIBC 2.15-0ubuntu10) stable release version 2.15, by Roland McGrath et al.
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.6.3.
Compiled on a Linux 3.2.14 system on 2012-04-19.
Available extensions:
    crypt add-on version 2.1 by Michael Glad and others
    GNU Libidn by Simon Josefsson
    Native POSIX Threads Library by Ulrich Drepper et al
    BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<http://www.debian.org/Bugs/>.

11
বেশিরভাগ .so লাইব্রেরিগুলি কেবল সেগফোল্ট থাকে কারণ তাদের main()এন্ট্রি পয়েন্টের অনুরূপ কিছু নেই । Libc একটি আউটলেটর। এর বিকাশকারীরা একটি অতিরিক্ত কার্যকারিতা হিসাবে এই নোটটি করেছিলেন। chmod a+xঅন্য কোনও লাইব্রেরির সাধারণ আপনাকে এই কার্যকারিতাটি দেবে না `আমি এখনও +xসমস্ত লাইব্রেরির জন্য বিন্যাসের বিন্দুটি দেখতে পাই না ।
টাদিউস এ। কাদুউবস্কি

সম্মত, এবং সম্ভবত কেবলমাত্র .soযা কার্যকর করা যেতে পারে সেগুলি চিহ্নিত করা উচিত। আমি আমার উত্তরটি সংশোধন করব যাতে বোঝানো যায় না যে এক্সিকিউট বিট সেট সহ সমস্ত কিছু সত্যই একক বাস্তবায়নযোগ্য।
অকেজো

5
"Ldd" কমান্ডটি সাধারণত একটি শ স্ক্রিপ্ট যা ডায়নামিক লিঙ্কার, ld-linux-x86-64.so.2, অথবা /lib/ld-linux.so.2 বা এরকম কিছু অনুরোধ করে। ডায়নামিক লিঙ্কার সর্বদা একটি ভাগ করা অবজেক্ট।
ব্রুস এডিগার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.