मुझे पता है कि स्क्रिप्ट पर सेतु को सक्षम करने में सुरक्षा समस्याएं हैं और इसलिए डिफ़ॉल्ट रूप से निष्क्रिय है, लेकिन उम्मीद है कि यह निष्पादन योग्य के लिए काम करता है। मैंने बनाया और निष्पादन योग्य है जो इस पोस्ट में वर्णित निर्देशों के बाद एक आउटपुट के रूप में यूआईडी दिखाता है: शेल स्क्रिप्ट पर सेट्यूड की अनुमति दें
लेकिन यह चलने से पहले और बाद में एक ही यूआईडी (1000) देता है sudo chmod +s ./setuid-test
। मुझे लगता है कि इसका मतलब यह है कि सेतुबंध का मेरे निष्पादन पर कोई प्रभाव नहीं पड़ता है, क्यों और कैसे हल करना है?
स्रोत कोड:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
printf("%d", geteuid());
return 0;
}
साथ बनाया और चलाया
$ gcc -o setuid-test setuid-test.c
$ ./setuid-test
1000
$ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
$ ./setuid-test
1000
दौड़ते समय ls -la
, मुझे यही मिलता है:
me@me:~$ ls -la setuid-test
-rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
me@me:~$ ls -la setuid-test
---- रिटर्न -----rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
df .
माउंट बिंदु को खोजने के लिए निर्देशिका में टाइप करें , फिर mount | grep nameofmountpoint
। क्या वहाँ कोई nosuid
ध्वज सूचीबद्ध है?