চলমান প্রক্রিয়াটির ইডিউ পরিবর্তন করুন


12

লিনাক্সে, আমি কীভাবে কমান্ড লাইন থেকে চলমান প্রক্রিয়াটির EID পরিবর্তন করতে পারি (প্রদত্ত যে আমি রুট অ্যাক্সেস পেয়েছি)?

উত্তর:


17

তাহলে প্রক্রিয়া রুট-অধিকারসহ চলমান , আপনি যে প্রক্রিয়া মধ্যে থেকে প্রক্রিয়া এবং কল seteuid করার GDB সংযুক্ত পারে।

উদাহরণ:

[root@user-desktop ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=user_u:system_r:unconfined_t

[root@user-desktop ~]# gdb /bin/bash $$
GNU gdb Fedora (6.8-27.el5)
# cut copyright & license statements
This GDB was configured as "x86_64-redhat-linux-gnu"...
# cut some initialization output    
0x00000036b0a99335 in waitpid () from /lib64/libc.so.6
(gdb) call seteuid(500)
$1 = 0 
(gdb) quit
The program is running.  Quit anyway (and detach it)? (y or n) y
Detaching from program: /bin/bash, process 29017

[root@user-desktop ~]# id
uid=0(root) gid=0(root) euid=500(user) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=user_u:system_r:unconfined_t

3
টাস্কটি সম্পাদন করার জন্য সৃজনশীল পদ্ধতির জন্য +1 ...
কোয়াকোট কোয়েক্সট

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

2

যদি আপনি কোনও প্রক্রিয়াটির নিজস্ব ইডিইউড পরিবর্তন করার কথা বলছেন তবে তা করার অনেকগুলি উপায় রয়েছে।

  • সেটুইড () - পার্শ্ব-প্রতিক্রিয়া হিসাবে EID সেট করে যখন 0 এর EUID সহ কোনও প্রক্রিয়া ব্যবহার করে
  • seteuid ()
  • setreuid ()

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

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


2

"কমান্ডলাইন থেকে" কেবল কোনও চলমান প্রক্রিয়াতে এটি করার কোনও উপায় নেই।

আমি কিছুটা নিশ্চিত করে বলতে পারি; কেবলমাত্র "সম্ভবত" ছিল / প্রকোপ এবং আমি সেখানে প্রায় আটকিয়েছিলাম (আক্ষরিক এবং গুগলের মাধ্যমে) এবং ইইউইডি পরিবর্তনের জন্য অনুমতিপ্রাপ্ত / প্রোচারের যে কোনও বিষয়ে মৃতপ্রান্তে পৌঁছেছি। ইউআইডি এবং জিআইডি সেটিংস / প্রোড / id পিড} / স্থিতিতে কী রয়েছে তা আপনি জানতে পারবেন - তবে আপনি কমপক্ষে যতদূর বলতে পারি / প্রোকের কিছু ব্যবহার করে এগুলি পরিবর্তন করতে পারবেন না।

কমান্ডলাইন থেকে - কোনও প্রক্রিয়াটির ইডিইউ পরিবর্তন করার একটি উপায় - কমান্ডলাইন থেকে এই কাজের মতো কিছু তৈরি করা যথেষ্ট সহজ - যদি আপনি যে প্রক্রিয়াটি পরিবর্তন করতে চান সেই উত্সের কোডটি নিয়ন্ত্রণ করেন। আপনি SIGUSR1 বলার জন্য একটি সিগন্যাল হ্যান্ডলার বাস্তবায়ন করতে পারেন এবং প্রক্রিয়াটির নিজস্ব ইডিইউড পরিবর্তন করতে পারে তবে এটি যখন সিগন্যালটি পায় তখন আপনার প্রয়োজন হয়। তারপরে আপনি কমান্ডলাইন থেকে, "কিল" ... এর মাধ্যমে সিগুসআর 1 সিগন্যালটি প্রক্রিয়াটি প্রেরণ করবেন, যেমনটি আপনি জিজ্ঞাসা করেছিলেন ... এবং এটি আপনার জন্য এটির ইডিইউ পরিবর্তন করে দেবে।

এটি আপনি যা ভাবছিলেন তা নাও হতে পারে, তবে ... এটি কীভাবে করবেন সে সম্পর্কে আপনার প্রশ্নের একটি উত্তর ... এবং এটিই আমি ভাবতে পারি answer

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.