chown हटाता है setuid बिट: बग या सुविधा?


14

प्रजनन करने कि प्रक्रिया:

germar@host:~$ cd /tmp/
germar@host:/tmp$ touch test && chmod u+s test && ls -la test
-rwSr--r-- 1 germar germar 0 Nov  2 20:11 test
germar@host:/tmp$ chown germar:germar test && ls -la test
-rw-r--r-- 1 germar germar 0 Nov  2 20:11 test

डेबियन निचोड़ और उबंटू 12.04 के साथ परीक्षण किया गया


फेडोरा 17 पर भी ऐसा करता है।
बेन्जीवेबे

जवाबों:


17

चाउड डॉक्यूमेंटेशन के अनुसार बग नहीं:

$ info coreutils 'chown invocation'

   The `chown' command sometimes clears the set-user-ID or set-group-ID
permission bits.  This behavior depends on the policy and functionality
of the underlying `chown' system call, which may make system-dependent
file mode modifications outside the control of the `chown' command.
For example, the `chown' command might not affect those bits when
invoked by a user with appropriate privileges, or when the bits signify
some function other than executable permission (e.g., mandatory
locking).  When in doubt, check the underlying system behavior.

धन्यवाद jlliagre मैं info coreutilsपहले नहीं जानता था। मैंने केवल मैन-पेज पढ़ा और वेब पर खोजा।
जर्मर

12

यह डिजाइन द्वारा है, और यह मानक व्यवहार है। POSIX मानक का हवाला देते हुए :

जब तक चॉइस को उचित विशेषाधिकारों के साथ एक प्रक्रिया द्वारा लागू नहीं किया जाता है, तब तक एक नियमित फाइल के सेट-यूजर-आईडी और सेट-ग्रुप-आईडी बिट्स सफल समापन पर साफ हो जाएंगे; अन्य फ़ाइल प्रकारों के सेट-यूज़र-आईडी और सेट-ग्रुप-आईडी बिट्स को साफ़ किया जा सकता है।

( sसेतु है (या समूह स्तंभ में सेटगिड), वैसे चिपचिपा नहीं है।)

यह व्यवहार अंतर्निहित सिस्टम कॉल का अनुसरण करता है (सिवाय इसके कि कुछ सिस्टम पर, सेटिस्किड बिट केवल निष्पादन योग्य फ़ाइलों के लिए साफ़ किए जाते हैं)।

सेट्यूड बिट को हटाने का कारण यह है कि मालिक को बदलने से यह भी बदल जाता है कि उपयोगकर्ता किस प्रक्रिया का प्रभावी उपयोगकर्ता आईडी होगा। विशेष रूप से, उन प्रणालियों पर जहां एक उपयोगकर्ता एक फ़ाइल को दे सकता है, cp /bin/sh foo; chmod u+s foo; chown joe fooजो एक विशाल सुरक्षा छेद, जो से संबंधित एक निष्पादनीय निष्पादन पैदा करेगा।


नाइटपिक के लिए अपवोटिंग! SUID / SGID "चिपचिपा" नहीं है!
जिम डेनिस

SUID / SGID को संरक्षित करने के सुरक्षा निहितार्थ के बारे में महान बिंदु। मैं उस वाक्य को पढ़ने तक व्यवहार से परेशान था। मैं जोड़ूंगा, हालांकि, मैंने कभी नहीं देखा है कि बिट्स स्पष्ट नहीं हैं , यहां तक ​​कि रूट के रूप में भी। मैं उत्सुक हूं कि "उपयुक्त विशेषाधिकार" क्या होगा।
विटिलिस्सुप्रोइरमैन

1
@vastlysuperiorman एक शास्त्रीय यूनिक्स मंच पर, "उपयुक्त विशेषाधिकार" का अर्थ उपयोगकर्ता आईडी 0. है। लेकिन पोसिक्स सिस्टम को अपनी सुरक्षा नीतियों को परिभाषित करने की अनुमति देता है। उदाहरण के लिए, लिनक्स पर कई परिचालनों के लिए, "उपयुक्त विशेषाधिकार" को एक क्षमता के रूप में लागू किया जाता है (जो केवल डिफ़ॉल्ट रूप से प्राप्त होता है)। इस विशेष मामले में, विशेषाधिकारों की परवाह किए बिना, चॉक्स बिट्स को दबाए रखें, जैसे कि सभी यूनिक्स संस्करण नहीं। लेकिन विंडोज पर एक POSIX लेयर अलग तरीके से काम कर सकती है।
गिल्स एसओ- बुराई को रोकें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.