can't get setuid bit to work on Ubuntu 14.04 -
मेरे पास एक बहुत ही सरल प्रोग्राम है:
#define _GNU_SOURCE # शामिल करें & lt; unistd.h & gt ; # से & lt में शामिल हैं, stdio.h & gt; # से & lt में शामिल हैं, stdlib.h & gt; शून्य त्रुटि (चार * संदेश) {printf (msg); बाहर निकलने के (-1); } इंट मुख्य (इंट आर्जैक, चार ** argv) {uid_t ruid, euid, suid; यदि (getresuid (& amp; ruid, & amp; युनाइटेड, & amp; suid) & lt; 0) त्रुटि ("प्रक्रिया uids प्राप्त करने में त्रुटि"); printf ("% d% d% d \ n", खंड, ईयूआईडी, सूद); } इस प्रकार संकलित किया गया है:
जीसीसी-ओ प्रिंट प्रिंट सी
इसका रूट द्वारा स्वामित्व है, और सेट्यूड बिट सेट है: < / P>
-rwsrwxr-x 1 रूट रूट 8648 8 अक्टूबर 20:10 ./print *
हालांकि जब मैं इसे चलाता हूं, मुझे निम्नलिखित अनुमति मिलती है:
1000 1000 1000
इसलिए वास्तविक, प्रभावी और सहेजे गए सेट-यूआईडी अनुमतियों दोनों ही मुझे (1000) हैं और रूट नहीं हैं। क्या किसी ने इस में भाग लिया? किसी भी सलाह?
ठीक है, इसे समझ से बाहर। मुद्दा यह था कि बाइनरी एक एन्क्रिप्टेड फ़ाइल सिस्टम पर रह रहा था। (इसे / tmp में स्थानांतरित करने के लिए उदाहरण फिक्स करता है)। यह ध्यान देने योग्य है कि एन्क्रिप्टेड फ़ाइल सिस्टम को माउंट करने में nosuid नहीं दिखाया जाता है।
Comments
Post a Comment