উত্তর:
তাহলে প্রক্রিয়া রুট-অধিকারসহ চলমান , আপনি যে প্রক্রিয়া মধ্যে থেকে প্রক্রিয়া এবং কল 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
যদি আপনি কোনও প্রক্রিয়াটির নিজস্ব ইডিইউড পরিবর্তন করার কথা বলছেন তবে তা করার অনেকগুলি উপায় রয়েছে।
প্রোগ্রামটির কার্যকর ইউআইডি উপর নির্ভর করে এবং সেখানে কোনও সংরক্ষিত ইউআইডি রয়েছে কিনা তা আপনি নন-রুট প্রোগ্রামে দুটি ইডিইউ মানের মধ্যে স্যুইচ করতে সক্ষম হতে পারেন। মূল সুবিধাপ্রাপ্ত প্রোগ্রামের সাথে আপনাকে সতর্ক হতে হবে - পরিবর্তনটি অপরিবর্তনীয় হওয়া উচিত কিনা তা আপনাকে সিদ্ধান্ত নিতে হবে এবং কাজের জন্য সঠিক ফাংশনটি ব্যবহার করতে হবে। (সেটুইড () রুট হিসাবে ব্যবহার করা অপরিবর্তনীয়))
যদি আপনি এমন একটি প্রক্রিয়া পরিবর্তনের চেষ্টা করছেন যা ইতিমধ্যে একটি পৃথক প্রক্রিয়া থেকে চলছে, তবে এটি করার কোনও মানক উপায় নেই - এবং আমি নিশ্চিত নই যে অনেকগুলি অ-মানক উপায় আছে, তবে। আপনি / ডেভ / কেএমএমে কিছু তথ্য সঞ্চার করতে সক্ষম হতে পারেন, তবে 'পাতলা বরফ' ভাবটি মনে পড়ে।
"কমান্ডলাইন থেকে" কেবল কোনও চলমান প্রক্রিয়াতে এটি করার কোনও উপায় নেই।
আমি কিছুটা নিশ্চিত করে বলতে পারি; কেবলমাত্র "সম্ভবত" ছিল / প্রকোপ এবং আমি সেখানে প্রায় আটকিয়েছিলাম (আক্ষরিক এবং গুগলের মাধ্যমে) এবং ইইউইডি পরিবর্তনের জন্য অনুমতিপ্রাপ্ত / প্রোচারের যে কোনও বিষয়ে মৃতপ্রান্তে পৌঁছেছি। ইউআইডি এবং জিআইডি সেটিংস / প্রোড / id পিড} / স্থিতিতে কী রয়েছে তা আপনি জানতে পারবেন - তবে আপনি কমপক্ষে যতদূর বলতে পারি / প্রোকের কিছু ব্যবহার করে এগুলি পরিবর্তন করতে পারবেন না।
কমান্ডলাইন থেকে - কোনও প্রক্রিয়াটির ইডিইউ পরিবর্তন করার একটি উপায় - কমান্ডলাইন থেকে এই কাজের মতো কিছু তৈরি করা যথেষ্ট সহজ - যদি আপনি যে প্রক্রিয়াটি পরিবর্তন করতে চান সেই উত্সের কোডটি নিয়ন্ত্রণ করেন। আপনি SIGUSR1 বলার জন্য একটি সিগন্যাল হ্যান্ডলার বাস্তবায়ন করতে পারেন এবং প্রক্রিয়াটির নিজস্ব ইডিইউড পরিবর্তন করতে পারে তবে এটি যখন সিগন্যালটি পায় তখন আপনার প্রয়োজন হয়। তারপরে আপনি কমান্ডলাইন থেকে, "কিল" ... এর মাধ্যমে সিগুসআর 1 সিগন্যালটি প্রক্রিয়াটি প্রেরণ করবেন, যেমনটি আপনি জিজ্ঞাসা করেছিলেন ... এবং এটি আপনার জন্য এটির ইডিইউ পরিবর্তন করে দেবে।
এটি আপনি যা ভাবছিলেন তা নাও হতে পারে, তবে ... এটি কীভাবে করবেন সে সম্পর্কে আপনার প্রশ্নের একটি উত্তর ... এবং এটিই আমি ভাবতে পারি answer