चूंकि उत्तर समझना मुश्किल है (खुद के लिए) और इसे समझने के लिए कुछ सोच लिया ( इस टिप्पणी ने मुझे इसे समझा), मैं एक उम्मीद के साथ बेहतर स्पष्टीकरण देने जा रहा हूं।
1. फ़ेकरूट में क्या होता है
अपने स्वयं के उपयोगकर्ता के साथ क्या होता है, इससे अधिक कुछ नहीं। बिल्कुल और कुछ नहीं। यदि आप fakeroot
(जिसे बुलाया जाता है, आपको एक नया शेल देता है, जैसे sudo
), उस सामान को करने का दिखावा करें जिसके लिए आपको अनुमति की आवश्यकता थी, और बाहर निकलने के लिए, बिल्कुल कुछ भी नहीं होगा।
यदि आप इसके बारे में सोचते हैं, तो यह समय की कुल बर्बादी है। आप ऐसा सामान क्यों करेंगे जो वास्तव में नहीं होगा? यह पागल है। आप बस किसी भी तरह से नहीं कर सकते थे और इसमें कोई अंतर नहीं था, क्योंकि इसका कोई निशान नहीं है।
एक मिनट रुकिए...
2. फ़ेकरूट का निशान
वहाँ एक निशान छोड़ दिया जा सकता है fakeroot
। चलो मोर्टेनसेल के उत्तर में आदेशों को देखते हैं जो बहुत अच्छा है और एक उत्थान के हकदार हैं:
$ fakeroot
# echo "Wow I have root access" > root.tst
# ls -l root.tst
-rw-rw-r-- 1 root root 23 Oct 25 12:13 root.tst
# ls -l /root
ls: cannot open directory /root: Permission denied
# exit
$ ls -l root.tst
-rw-rw-r-- 1 ubuntu ubuntu 23 Oct 25 12:13 root.tst
पहली नज़र में, ऐसा लगता है कि इस्तेमाल किया fakeroot
गया समय की कुल बर्बादी थी। अंत में, यदि आपने उपयोग नहीं किया होता fakeroot
, तो आपको एक ही चीज़ मिलती।
यहाँ सूक्ष्म बात यह है:
$ cat root.tst
Wow I have root access
जिसका अर्थ है कि फ़ाइल की सामग्री अभी भी एक रूट होने के रूप में याद है। आप कह सकते हैं कि उपयोग न करने fakeroot
से समान परिणाम उत्पन्न होंगे। आप सही हैं, यह उदाहरण बहुत सरल है।
आइए एक और उदाहरण लेते हैं:
$ fakeroot
# touch x
# touch y
# chown myuser:myuser x
# ls -l > listing
# exit
$ ls -l
total 4
-rw-rw-r-- 1 myuser myuser 152 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 y
$ cat listing
total 0
-rw-rw-r-- 1 root root 0 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 root root 0 Jan 7 21:39 y
देखते है क्या हुआ। मैंने होने का नाटक किया root
, जो पूरी तरह से अप्रभावी है, और बनाया x
और y
। मैं x
करने के लिए myuser
और y
से संबंधित होने का नाटक किया root
। वे वास्तव में दोनों के हैं myuser
(जैसा कि हम अंत में देख सकते हैं), लेकिन मैंने इसे ऐसा होने का नाटक किया।
फिर मैंने एक सूची बनाई और अपनी कल्पना को एक फ़ाइल में सहेजा। बाद में जब मैं फ़ाइल को देखता हूं, तो मैं देख सकता हूं कि मैंने कल्पना की थी कि फाइलों का स्वामित्व किसके पास होना चाहिए। फिर, वे वास्तव में उन लोगों के स्वामित्व में नहीं होते हैं जिनकी मैंने कल्पना की थी, मैंने बस कल्पना की थी।
3. तो: आप फिर से ऐसा क्यों चाहते हैं?
आप कह सकते हैं कि मुझे उस सूची को बनाने के लिए वास्तव में नकली होने की आवश्यकता नहीं थी। मैं बस लिस्टिंग बना सकता था, फिर अपनी कल्पना को प्रतिबिंबित करने के लिए इसे संपादित किया। आप सही हैं, आपको इसके fakeroot
लिए जरूरत नहीं थी । वास्तव में, यह जानते हुए कि fakeroot
वास्तव में कुछ भी नहीं होता है, आप संभवतः किसी भी क्षमता को प्राप्त नहीं कर सकते हैं जो आपके पास पहले नहीं थी।
लेकिन , और यह वही है जो fakeroot
सभी के बारे में है, लिस्टिंग का संपादन nontrivial हो सकता है। जैसा कि यह एक पैकेज के साथ है जो आपके सिस्टम पर स्थापित किया जा सकता है, आपके पास एक tar
एड, gzip
एड, xz
एड, bzip2
एड या कोई अन्य प्रारूप है जो आपकी फ़ाइलों को एक साथ रख रहा है और उनकी अनुमतियों और मालिकों को याद कर रहा है। क्या आप आसानी से संपीड़ित फ़ाइल को संशोधित कर सकते हैं और फ़ाइल के स्वामित्व को संपादित कर सकते हैं? मैं तुम्हारे बारे में नहीं जानता, लेकिन मैं एक तरह से सोच भी नहीं सकता।
क्या कोई ऐसा उपकरण बनाया जा सकता है, जो एक बार सब कुछ संकुचित हो जाए, यह संपीड़ित फ़ाइल को संशोधित करता है और प्रोग्रामेटिक रूप से मालिकों और अनुमतियों को संपादित करता है? हाँ वहाँ हो सकता है। तो या तो आप संपीड़ित करने से पहले मालिकों को नकली बना सकते हैं, या उन्हें बाद में बदल सकते हैं। डेबियन लोगों ने फैसला किया कि पूर्व आसान है।
4. सिर्फ उपयोग क्यों नहीं sudo
?
सबसे पहले, आपको सॉफ्टवेयर बनाने के लिए रूट विशेषाधिकारों की आवश्यकता नहीं है और आपको उन्हें संपीड़ित करने के लिए रूट विशेषाधिकारों की आवश्यकता नहीं है। इसलिए यदि आपको इसकी आवश्यकता नहीं है, तो आपको उस अनुमति को प्राप्त करने के बारे में सोचने के लिए वास्तव में एक विंडोज उपयोगकर्ता होना चाहिए। लेकिन एक तरफ कटाक्ष, आपके पास रूट पासवर्ड भी नहीं हो सकता है।
इसके अलावा, मान लें कि आपके पास रूट अनुमतियां हैं। और मान लें कि आप यह दिखावा करना चाहते हैं कि एक फ़ाइल को केवल रूट तक पढ़ना चाहिए। इसलिए sudo
, आप वास्तव में फ़ाइल स्वामी और अनुमतियों को बदलते हैं root
, आप रूट शेल से बाहर निकलते हैं और सब कुछ पैकेज करने का प्रयास करते हैं। आप विफल हो जाते हैं क्योंकि अब आपके पास रूट एक्सेस नहीं होने के कारण अब आप फ़ाइल को नहीं पढ़ सकते हैं। तो आपको sudo
पैकेज को रूट के रूप में कंप्रेस और बनाना होगा। प्रभावी रूप से, आपको सब कुछ जड़ के रूप में करना होगा।
यह बैड टीएम है ।
एक पैकेट के रूप में, आपको रूट अनुमतियों की आवश्यकता नहीं है और आपको इसे प्राप्त नहीं करना चाहिए। जब आप एक पैकेज स्थापित करते हैं, तो आपको A
रूट के रूप में कुछ फ़ाइल ( ) स्थापित करने की आवश्यकता हो सकती है और यहीं आपको रूट अनुमतियों की आवश्यकता होती है। सभी fakeroot
को यह संभव करना है। यह A
अभिलेखागार के लिए मूल के रूप में पैकर सूची की अनुमति देता है , ताकि जब पैकेज उपयोगकर्ता द्वारा विघटित हो जाए, तो संग्रहकर्ता रूट अनुमति की मांग करता है और A
रूट के स्वामित्व के अनुसार बनाता है ।
sudo
याsu
क्योंकि यह आपकी मशीन है।fakeroot
इसके दो उपयोग हैं 1) यह विश्वास करने में कार्यक्रमों को बेवकूफ बनाता है कि आप वास्तव में रूट उपयोगकर्ता हैं, जिन्हें कुछ बुरी तरह से लिखे गए मालिकाना सॉफ़्टवेयर की आवश्यकता हो सकती है, भले ही ज़रूरत न हो (आमतौर पर विंडोज डेवलपर लिनक्स गया) और 2) यह फ़ाइल मोड और स्वामित्व परिवर्तनों का अनुकरण करने की अनुमति देता है जिसे आप ' टी अन्यथा करने में सक्षम हो, मुख्य रूप सेtar
सही अनुमति और स्वामित्व के साथ एक फ़ाइल बनाने के लिए, उदाहरण के लिए उपयोगी जब पैकेजिंग सॉफ्टवेयर।