অন্য ব্যবহারকারীদের প্রক্রিয়াগুলি পরিচালনা করার অনুমতি প্রদান করুন


7

আমার ইউজারএ এবং ইউজারবি রয়েছে যারা প্রক্রিয়াগুলি শুরু করে:

userA@server:~$ ./some_command.sh &
[1] 30889

তারপরে আমি চাই ইউজারসি সেই প্রক্রিয়াগুলি পরিচালনা করতে সক্ষম হবে (স্থগিত, পুনরায় শুরু, সমাপ্তি এবং হত্যা):

userC@server:~$ kill 30889
bash: kill: (30889) - Operation not permitted
userC@server:~$ sudo kill 30889
userC@server:~$ 

সুডো অ্যাক্সেসের উপর নির্ভর না করে আমি কীভাবে ইউজারসিসকে এটি করার অনুমতি দেব? একটি সর্বশেষ অবলম্বন হিসাবে আমি ব্যবহারকারী সিটকে এটি করার জন্য বিশেষ সুযোগ দেব।

ইউজারসির উপর আমার সম্পূর্ণ নিয়ন্ত্রণ রয়েছে। একটি সম্ভাবনা ইউজার আই হিসাবে ইউজার আই হিসাবে একই আইডি পরিবর্তন করা হয়, কিন্তু তারপরে ইউজারবি কী হবে?

হালনাগাদ:

প্রসঙ্গটি একটি বিদ্যমান ওয়েব অ্যাপ্লিকেশনের জন্য।

উত্তর:


1

আপনি ব্যবহারকারীকে এবং ব্যবহারকারীর অ্যাকাউন্টগুলিতে ব্যবহারকারীকে অ্যাক্সেস না দিলে সুডোর মতো কিছু ব্যবহার না করে এটি করার কোনও উপায় নেই যা বিশেষ অনুমতি দেয়। গ্রুপগুলি বা অ্যাক্সেস নিয়ন্ত্রণ তালিকার উপর ভিত্তি করে প্রক্রিয়াগুলিতে অ্যাক্সেস দেওয়ার জন্য লিনাক্স কার্নেলে কোনও সুবিধা নেই।

তবে আপনার সুডো ব্যবহার করে ভয় পাওয়া উচিত নয়। আপনি কেবল নির্দিষ্ট সুনির্দিষ্ট আদেশগুলি মঞ্জুর করার জন্য এটি কনফিগার করতে পারেন এবং নির্দিষ্ট ব্যবহারকারীরূপে আদেশগুলি চালানোর অনুমতি দিতে পারেন। অর্থাৎ আপনি কেবল ব্যবহারকারীআর এবং ব্যবহারকারীর প্রক্রিয়াটিকে ইউজার সি দ্বারা হত্যা করার অনুমতি দিতে পারেন, তবে ব্যবহারকারীকে অন্য প্রক্রিয়াগুলিকে হত্যা করার অনুমতি দিচ্ছেন না।


এই ব্যবহারের ক্ষেত্রে sudo ব্যবহার করতে পারবেন না। সবচেয়ে খারাপ বিষয়টি হ'ল আমি এটি রুট ব্যবহারকারী হিসাবে চালাব, তবে এটি এড়াতে পছন্দ করব।
হুজু

1

আপনি একটি দ্বিতীয় অ্যাপ্লিকেশন তৈরি করতে পারেন যা প্রক্রিয়াগুলিকে হত্যা করতে পারে process-proxy, উদাহরণস্বরূপ , আপনি এটি একবারে রুট হিসাবে চালাতে পারেন (সম্ভবত এটি বুট করার সময় স্বয়ংক্রিয়ভাবে শুরু করুন) এবং এটি ডিবিএস বার্তা, বা যোগাযোগের কোনও অন্য উপায়ের জন্য শোনা ছেড়ে দিন। পরিশেষে একটি ক্লায়েন্ট অ্যাপ্লিকেশন, উদাহরণস্বরূপ send-messageবার্তাগুলি প্রেরণ করা এবং ব্যবহারকারীক দ্বারা ইচ্ছায় চালানো যেতে পারে।

userC@server $ ./send-message -kill -pid 30889
userC@server $ ./send-message -nice 2 -pid 30889

অন্য কথায় একটি প্রক্সি অ্যাপ্লিকেশন তৈরি করুন। আপনার কেবল এটি নিশ্চিত করা দরকার যে এটি কেবল ব্যবহারকারীসি-এর বার্তাগুলির জন্যই শুনেছে, এবং এটি নির্দিষ্ট ব্যবহারকারীর জন্য নির্দিষ্ট প্রক্রিয়াগুলি কেবল মেরে ফেলার জন্য একটি ভাল ধারণাও হতে পারে।

পিডি ডিবাস সেরা আইডিয়া নাও হতে পারে (আমি এর সাথে পুরোপুরি পরিচিত নই) তবে process-proxyএকটি বার্তা সম্পর্কে সচেতন করার প্রচুর উপায় রয়েছে । উদাহরণস্বরূপ, নির্দিষ্ট ফোল্ডারে থাকা কোনও ফাইলের জন্য নিরীক্ষণ করুন (যার জন্য কেবল ব্যবহারকারীসি এবং রুট সুরক্ষার জন্য অ্যাক্সেস রাখতে পারে) যাতে আমাদের যে pidপ্রক্রিয়াটি হত্যা করতে হবে এটি ধারণ করতে পারে ।


তারপরে আবারও, আপনি ব্যবহার না করা পছন্দ করেন এই বিষয়টি প্রদত্ত, এটি sudoখুব চটকদার হতে পারে।
মার্টন ক্যানভাল

শুধু হত্যা নয় - সমস্ত ধরণের সংকেত। আশা করছিলাম ফাইল অনুমতি সহ এ জাতীয় কাজ করার প্রত্যক্ষ উপায় ছিল।
হুজু

একই ধারণা (এবং ত্রুটিগুলি) এখনও প্রয়োগ হয়। এটি যদি সহায়তা করে তবে আমি কিছু নাম পরিবর্তন করব যাতে এটি আরও জেনারিক দেখায়।
মার্টন ক্যানভাল

খুব জটিল মনে হচ্ছে। অতিরিক্তভাবে ওয়েব অ্যাপ্লিকেশন সরাসরি কিল / ইত্যাদি কল করে না। প্রক্রিয়া পরিচালনার জন্য একটি তৃতীয় পক্ষের গ্রন্থাগার ব্যবহার করে।
হোজু

1

এটি মার্টিনের উত্তরের মতো, তবে (তর্কযোগ্যভাবে) কিছুটা সহজ। killকমান্ডটির একটি নতুন সংস্করণ লিখুন যা দেখতে এরকম কিছু দেখাচ্ছে:

যদি (বর্তমান ইউআইডি (যেমন, চালকের ইউআইডি) ! = ব্যবহারকারীর)
        প্রস্থান (উপযুক্ত ত্রুটির বার্তা সহ)
পার্স আর্গস
কল kill()সিস্টেম ফাংশন

আপনি যদি killকমান্ডটি পুনরায় লিখতে চান না , আপনার প্রোগ্রামটি /bin/killযা যুক্তি দিয়েছিল তা দিয়ে তা সম্পাদন করতে লিখুন । সংকলন, পরীক্ষা করুন, এবং তারপরে দুটি অনুলিপি করুন: একটি যা ব্যবহারকারীএর জন্য সেটইউড এবং একটি যা ইউজারবিতে সেটইউইড থাকে। অতিরিক্ত সুরক্ষার জন্য, এগুলিকে এমন একটি ডিরেক্টরিতে রেখে দিন যা কেবলমাত্র ব্যবহারকারী ব্যবহারকারীদের অ্যাক্সেস করে।

যদি ইউজারসির পক্ষে জীবনকে সহজ করে তোলা একেবারেই উদ্বেগের বিষয় হয় তবে একটি ফ্রন্ট-এন্ড প্রোগ্রাম লিখুন যা নির্ধারণ করে যে প্রক্রিয়াটি (এস) ব্যবহারকারী 'হত্যার' চেষ্টা করছে এবং প্রথম প্রোগ্রামটির উপযুক্ত অনুলিপিকে অনুরোধ করে। অথবা এটি উভয় অনুলিপি চালাতে পারে।


এটি মূলত আপনার নিজস্ব স্ট্রিপড ডাউন সংস্করণটি লিখছে sudo, সুতরাং এটি আপনার কাছে গ্রহণযোগ্য হবে কিনা তা আমি জানি না। আপনি বলেছিলেন যে আপনি "সুডো অ্যাক্সেসের উপর নির্ভর না করে এটি করতে" চান এবং এই উত্তরটির সাথে কঠোরভাবে বলতে গেলে আপনি কোনও কিছুর উপর নির্ভর করবেন না - সমাধানটির কনফিগারেশনের উপর আপনার সম্পূর্ণ নিয়ন্ত্রণ থাকবে।


বিষয়টি হ'ল ওয়েব অ্যাপ্লিকেশন সরাসরি কিল বা অনুরূপ আদেশগুলি কল করে না। প্রক্রিয়াগুলি একটি তৃতীয় পক্ষের লাইব্রেরি দ্বারা পরিচালিত হয়। সুতরাং আমি যদি সম্ভব হয় তবে একটি অনুমতি পদ্ধতির পরে ছিলাম।
হোজু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.