সেটওয়াইড বিট দিয়ে রুটের মালিকানাধীন প্রোগ্রাম


13

পিং হ'ল ব্যবহারকারী আইডি বিট সেট সহ মূল দ্বারা মালিকানাধীন একটি প্রোগ্রাম।

$ ls -l `which ping`
-rwsr-xr-x 1 root root 35752 Nov  4  2011 /bin/ping

যেমনটি আমি বুঝতে পেরেছি, যদি কোনও ব্যবহারকারী পিং প্রক্রিয়া চালায় তবে কার্যকর ব্যবহারকারীর আইডি বাস্তব ব্যবহারকারী আইডি থেকে (অর্থাৎ প্রক্রিয়াটি প্রবর্তনকারী ব্যক্তির ব্যবহারকারী আইডি) থেকে ব্যবহারকারী আইডি রুটে পরিবর্তিত হবে। যাইহোক আমি যখন এটি চেষ্টা করে দেখি এবং পিএসের আউটপুটটি দেখতে পিং প্রক্রিয়াটি রুট ব্যবহারকারী হিসাবে চলছে কিনা তা দেখতে, আমি এখনও সত্যিকারের ব্যবহারকারীর আইডি প্রদর্শিত হচ্ছে।

ps -e -o user,ruser,euser,cmd,args | grep ping
sashan   sashan   sashan   ping -i 10 -c 1000 www.goog ping -i 10 -c 1000 www.google.com

সম্পর্কিত সম্পর্কিত প্রশ্ন হ'ল unix.stackexchange.com/questions/152595
JdeBP

উত্তর:


20

pingরুট প্রয়োজন তাই এটি কাঁচা মোডে একটি সকেট খুলতে পারে। এটি শুরু হওয়ার পরে আক্ষরিক এটি প্রথম জিনিস:

icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
socket_errno = errno;

এটি কেবলমাত্র এটির মূলের প্রয়োজন, তাই অনেক প্রোগ্রামের মতো এটি তাত্ক্ষণিকভাবে তার বিশেষাধিকারের স্তরটি আপনার সাধারণ ব্যবহারকারীর অ্যাকাউন্টে ফিরিয়ে দেয়:

uid = getuid();
if (setuid(uid)) {
    perror("ping: setuid");
    exit(-1);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.