क्या रूट / सुपरयुसर मेरी रीड-प्रोटेक्टेड फाइल्स पढ़ सकता है?


35

साझा यूनिक्स होस्टिंग पर, अगर मेरे पास एक संवेदनशील फ़ाइल है।

chmod 600 sensitive-data.txt

क्या रूट उपयोगकर्ता अभी भी मेरी फ़ाइल पढ़ सकता है? विशेष रूप से मैं सोच रहा था कि क्या यह मेरे पासवर्ड को भाड़े के hgrc फ़ाइल में संग्रहीत करना सुरक्षित है।

अद्यतन करें

यह आसान करने के लिए सेटअप के रूप में मैकेरल कीरिंग एक्सटेंशन का उपयोग करने का निर्णय लिया गया:

pip install mercurial_keyring

और फिर hgrc में जोड़ें:

[extensions]
mercurial_keyring =

हालाँकि मुझे अभी भी इस सवाल के जवाब में दिलचस्पी है।

जवाबों:


62

हाँ, रूट कर सकते हैं:

$ echo Hello you\! > file
$ chmod 600 file
$ ls -l file
-rw------- 1 terdon terdon 11 Feb 27 02:14 file
$ sudo -i
# cat file
Hello you!

किसी भी स्थिति में, भले ही रूट आपकी फ़ाइलों को रूट के रूप में नहीं पढ़ सके, वे हमेशा पासवर्ड के बिना आपके रूप में लॉग इन कर सकते हैं:

$ whoami
terdon
$ sudo -i
[sudo] password for terdon: 
# whoami 
root
# su - terdon
$ whoami
terdon

तो, (या ) rootका उपयोग करके किसी भी अन्य उपयोगकर्ता नाम में परिवर्तन कर सकते हैं और तब वे कुछ भी करने में सक्षम होंगे जैसे कि वे आप थे।susudo -iu username


23

हमेशा यह मानें कि root(और किसी भी अन्य उपयोगकर्ता / प्रक्रिया के साथ ) CAP_DAC_OVERRIDEऔर सब कुछ तब तक CAP_DAC_READ_SEARCHकर सकता है जब तक कि एलएसएम (SELinux, AppArmor या समान) उसे ऐसा करने से रोकता है।

इसका मतलब यह भी है कि आपको यह मान लेना चाहिए कि आपके सभी कीस्ट्रोक्स पढ़े जा सकते हैं। पासवर्ड वास्तव में सुरक्षित नहीं हैं। यदि आप एक गंभीर स्तर की सुरक्षा चाहते हैं तो आपको एक ऐसी प्रणाली का उपयोग करना चाहिए जो पूरी तरह से आपके द्वारा नियंत्रित हो (और किसी और के द्वारा भी उपयोग नहीं की गई हो)।


यह वास्तव में क्षमताओं के साथ मेरी समस्या है क्योंकि वे वर्तमान में लागू हैं। चूंकि वे लक्ष्य निर्दिष्ट नहीं करते हैं, इसलिए आपको ऐसा प्रवर्तन करने की आवश्यकता होती है जो क्षमताओं (जैसे SELinux) को ऐसा करने से बचाए। एक उपयोगकर्ता देते हुए CAP_DAC_OVERRIDEउन्हें एक बेईमानी से देता है सभी विशेषाधिकार जो उन्हें सिस्टम पर किसी अन्य सुरक्षा तंत्र को ओवरराइड करने की आवश्यकता होती है। CAP_DAC_OVERRIDEमूल रूप से है CAP_DO_WHATEVER_YOU_WANT
ब्राचली

10

हाँ जड़ में कुछ भी करने के लिए सभी विशेषाधिकार हैं

यहाँ आप देख सकते हैं कि मैंने एक निर्देशिका नाम परीक्षण बनाया है और एक फ़ाइल lonston.txt को छुआ है और फ़ाइलों को सूचीबद्ध किया है

root@system99:/tmp# mkdir test && touch lonston.txt && ls -l
total 4
-rw-r--r-- 1 root root    0 Feb 27 16:35 lonston.txt
drwxr-xr-x 2 root root 4096 Feb 27 16:35 test

तब मैंने फ़ाइल और निर्देशिका की अनुमति को 000 का उपयोग करके अनुमति देने के लिए बदल दिया है और अनुमति को देखने के लिए सूचीबद्ध किया है

root@system99:/tmp# chmod 000 lonston.txt && chmod 000 test && ls -l
total 4
---------- 1 root root    0 Feb 27 16:35 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

फिर भी मैं फ़ाइल को लिख सकता हूं और बिल्ली का उपयोग करके फ़ाइल को पढ़ सकता हूं

root@system99:/tmp# echo "Yes root have all Privileges than other user's, let we see the permission of user's too" > lonston.txt 

root@system99:/tmp# cat lonston.txt 
Yes root have all Privilages than other user's, let we see the permission of user's too

यहां तक ​​कि मैं उस निर्देशिका में जा सकता हूं जिसके पास d --------- (null) 000 अनुमति है, यहां तक ​​कि रूट की कोई रीड या राइट परमिशन नहीं है।

root@system99:/tmp# cd test/
root@system99:/tmp/test# pwd
/tmp/test

यहां तक ​​कि मैं किसी से भी अनुमति के परिवर्तन के बाद फाइलें और फ़ोल्डर बना सकते हैं

root@system99:/tmp/test# touch /tmp/test/lonston/testdir/babin.txt

root@system99:/tmp/test# ls -l /tmp/test/lonston/testdir/
total 0
-rw-r--r-- 1 root root 0 Feb 27 16:39 babin.txt

अब यहाँ हम 400 के साथ Permission देख सकते हैं

root@system99:/tmp/test# chmod 400 babin.txt

फ़ाइल की अनुमति देखने के लिए सूची

root@system99:/tmp/test# ls -l
total 8
-r-------- 1 root root   34 Feb 27 16:42 babin.txt
drwxr-xr-x 3 root root 4096 Feb 27 16:38 lonston

Vim im का उपयोग करके मैंने फ़ाइल babin.txt में 1 पंक्ति जोड़ी है

root@system99:/tmp/test# vim babin.txt

लेकिन vim मोड में रहते हुए यह हमें W10: चेतावनी: एक रीडायनली फ़ाइल को बदलने पर ध्यान देगा लेकिन यह अभी भी राइट करने योग्य है

अब हम आउटपुट के लिए फाइल को कैट कर सकते हैं

root@system99:/tmp/test# cat babin.txt 
hi this is the write persmission 
this is added while the file have 400 permission

तब मैं रूट यूजर से सामान्य उपयोगकर्ता के लिए लॉगआउट कर चुका हूं और रूट में क्या है, इसकी अनुमति देता है

root@system99:/tmp# exit
exit

/ Tmp निर्देशिका पर नेविगेट करें

sysadmin@system99:~$ cd /tmp/
sysadmin@system99:/tmp$ ls -l
total 8
---------- 1 root root   88 Feb 27 16:36 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

लेकिन सामान्य उपयोगकर्ता से फ़ाइल पढ़ते समय हम नहीं कर सकते

sysadmin@system99:/tmp$ cat lonston.txt 
cat: lonston.txt: Permission denied

sysadmin@system99:/tmp$ cd test/
cat: test/: Permission denied

यही है, आशा है कि आपको रूट उपयोगकर्ता की शक्ति मिल गई है

यदि आप सामान्य उपयोगकर्ता में हैं, तो यदि आपको विशेषाधिकार प्राप्त करने की आवश्यकता है तो हमें sudo का उपयोग करने की आवश्यकता है, यह sudo पासवर्ड पूछेगा

उदाहरण :

sysadmin@system99:/tmp$ sudo cat lonston.txt 
[sudo] password for sysadmin: 
Yes root have all Privilages than other user's, let we see the permission of user's too

सूडो उपयोगकर्ता का रूट उपयोगकर्ता के समूह के साथ कोलाबेशन होता है, इसलिए सूडो का मूल विशेषाधिकार क्या है।

सूडो के बारे में अधिक जानने के लिए

# man sudoers

यहां हम देख सकते हैं कि उन्होंने परिभाषित किया है कि सामान्य उपयोगकर्ता के पास सूडो अधिकार हो सकते हैं केवल कुछ ही लाइनें जो मैंने यहां बताई हैं।

sysadmin@system99:/tmp$ sudo cat /etc/sudoers

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

पूरी तरह से हम फ़ाइलों को पढ़ सकते हैं या संपादित कर सकते हैं या रूट को भी हटा सकते हैं, पढ़ने की अनुमति नहीं है।


2
इस उत्तर के पास इतने कम उत्थान क्यों हैं? यह लगभग सभी मामलों को शामिल करता है जो उदाहरणों के साथ हो सकते हैं।
फू बार

8

पारंपरिक यूनिक्स में, जड़ सर्व-शक्तिशाली है। विशेष रूप से, रूट किसी भी फ़ाइल को पढ़ सकता है, और यहां तक ​​कि आपके प्रोग्राम जो आंतरिक रूप से कर रहे हैं, उस पर भी थपकी दे सकते हैं। यदि डेटा वास्तव में संवेदनशील है, तो इसके चारों ओर केवल एन्क्रिप्टेड प्रतियां रखें (इसके लिए उदाहरण के लिए जीएनयू गोपनीयता गार्ड पर विचार करें, लेकिन इसके दस्तावेज को पहले ध्यान से पढ़ें), और इसे कभी भी मशीन पर डिक्रिप्ट नहीं करना चाहिए।

(व्यामोह अद्भुत है, वहाँ कभी भी पर्याप्त नहीं है ;-)

गंभीरता से, डेटा के रिसाव के कारण होने वाली लागतों के बारे में सावधानी से सोचें, और इस तरह आप सुरक्षा के लिए भुगतान करने के लिए कितने तैयार होंगे। सही सुरक्षा असंभव है, थोड़ी अधिक सुरक्षा प्राप्त करने के लिए लागत तेजी से बढ़ने लगती है। लेकिन ध्यान रखें कि एक महंगे उपाय के जाल में न पड़ें जो वास्तव में सुरक्षा को बढ़ाता नहीं है ...


3

यह भी माना जाना चाहिए कि जिस किसी को भी उसी कमरे में रहने का अवसर मिल सकता है क्योंकि हार्डवेयर कुछ भी पढ़ या लिख ​​सकता है। यदि वे बहुत रोगी हैं, तो वे अंततः एन्क्रिप्टेड डेटा को समझ सकते हैं। अगर उन्हें एन्क्रिप्शन सॉफ्टवेयर की जगह ले सकते हैं तो उन्हें साइड-चैनल विधियों की आवश्यकता नहीं है।


2

हां, रूट संरक्षित फ़ाइल को तब भी पढ़ सकता है, जब मालिक नहीं कर सकता (जबकि मालिक स्पष्ट रूप से सुरक्षा हटा सकता है और फिर सामग्री पढ़ सकता है):

echo "123" > abc.txt
chmod 000 abc.txt
cat abc.txt

बिल्ली: abc.txt: अनुमति से इनकार किया

su
cat abc.txt

123

हालाँकि, सामान्य सेटअप के तहत, रूट NFS ("रूट स्क्वैश") जैसे दूरस्थ फाइल सिस्टम पर संरक्षित फ़ाइलों तक नहीं पहुंच सकता है।


एनएफएस रूट स्क्वैश का उल्लेख करने के लिए +1। हालांकि, जब तक रूट एनएफएस-माउंटेड डायरेक्टरी के मालिक के रूप में उपयोगकर्ता के लिए मुकदमा कर सकता है, रूट स्क्वैश अभी भी सुरक्षा नहीं करता है।
जेनी डी

2

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

एन्क्रिप्शन विकल्प:

  1. साधारण फ़ाइलों को एन्क्रिप्ट करें और सभी को रोकें लेकिन अपने आप को उन्हें देखने में सक्षम होने से रोकें
  2. शेल लिपियों को एन्क्रिप्ट करें और एन्क्रिप्ट किए गए संस्करणों को निष्पादन योग्य बनाएं, लेकिन सभी को संशोधित करने या उन्हें देखने में सक्षम होने से भी रोकते हैं

यदि विकल्प 1 चुनते हैं, तो यहां आपके लिए अपनी फ़ाइलों को एन्क्रिप्ट करने का एक तरीका है:

cat (your-file) | openssl aes-128-cbc -a -salt -k "(specify-a-password)" > (your-file).enc

उपरोक्त फ़ाइल को डिक्रिप्ट करने के लिए, आप इस तरह से एक कमांड चलाते हैं:

cat (your-file).enc | openssl aes-128-cbc -a -d -salt -k "(specify-the-password)" > (your-file).dec

- आप उपरोक्त को एक स्क्रिप्ट में रखना चाह सकते हैं ताकि यह आपके इतिहास में दिखाई न दे। या, आप बस " -के " पैरामीटर को हटा सकते हैं , जो पासवर्ड पूछने के लिए ओपनसेल को संकेत देगा।

यदि विकल्प 2 चुनते हैं, तो अपनी स्क्रिप्ट को निम्न साइट पर कॉपी और पेस्ट करें:

http://www.kinglazy.com/shell-script-encryption-kinglazy-shieldx.htm

अपनी स्क्रिप्ट को उस साइट पर सबमिट करने पर, एक ज़िप फ़ाइल आपके लिए तुरंत बनाई जाएगी। लिंक को ज़िप फ़ाइल में कॉपी करें, फिर अपने UNIX बॉक्स पर जाएं और इन चरणों को करें:

  1. wip लिंक-टू-द-ज़िप फ़ाइल
  2. अनज़िप-नव-डाउनलोड-ज़िप-फ़ाइल
  3. सीडी / tmp / KingLazySHIELD

एक बार जब आप पूर्ववर्ती चरणों को पूरा कर लेते हैं, तो आप अपनी एन्क्रिप्टेड स्क्रिप्ट को उसी जगह से चला सकते हैं, जहाँ से आपने इसे चरण 4 में स्थापित करने के लिए निर्दिष्ट किया है। श

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.