हटाए गए उपयोगकर्ता से फ़ाइलों को विरासत में नया उपयोगकर्ता क्यों मिला?


24

इसलिए मुझे होमवर्क के रूप में एक पुस्तक में एक अभ्यास करना था। पहले आपको एक उपयोगकर्ता बनाना था:

useradd -c "Steven Baxter" -s "/bin/sh" sbaxter

फिर आपको /home/sbaxterडायरेक्टरी में कुछ फाइलें जोड़ना थीं :

touch /home/sbaxter/ some.txt new.txt files.txt

फिर आपको sbaxterउपयोगकर्ता को निकालना था और नाम का एक नया उपयोगकर्ता बनाना था mjane। मेरे दौड़ने के समय find /home/ -user mjane, जब मैं भागता था , तब नए उपयोगकर्ता mjaneके पास सबबैक्टर की पुरानी फाइलों का स्वामित्व होता था, क्या हुआ था?

जवाबों:


41

शैतान विवरण में है, useraddमैन पेज में (आप इसे जारी करके देख सकते हैं man 8 useradd):

   -u, --uid UID
       The numerical value of the user's ID. This value must be unique,
       unless the -o option is used. The value must be non-negative. The
       default is to use the smallest ID value greater than or equal to
       UID_MIN and greater than every other user.

तो यह अप्रयुक्त सबसे छोटे यूआईडी का उपयोग करने के लिए डिफ़ॉल्ट होगा, जो पासवर्ड फ़ाइल में अन्य उपयोगकर्ताओं की तुलना में बड़ा है। Sbaxter को हटाने के रूप में देखकर उसे पासवार्ड फ़ाइल से हटा दिया गया, उसका uid "नि: शुल्क" है और उसे mjane को सौंपा गया है (जैसा कि useraddउस समय useraddकमांड का उपयोग किया गया था , दोनों यूजर्स के लिए uid पिक समान है)।

डिस्क पर फाइलें केवल यूआईडी स्टोर करती हैं, और उपयोगकर्ता नाम अनुवाद नहीं (जैसा कि यह अनुवाद पासवर्ड फ़ाइल में परिभाषित किया गया है)। आप इस बात की पुष्टि कर सकते हैं कि ls -lnयूआईडी के स्वामित्व की फाइलों को जारी करने से।

मैं वास्तव में आपको खातों को हटाने के बजाय अक्षम करने की सलाह दूंगा। अधिकांश लिनक्स वितरणों पर लॉकिंग खातों के साथ प्राप्त किया जा सकता है usermod -L -e today <username>, जो पासवर्ड को लॉक करता है और खाता आज समाप्त होने के लिए सेट करता है (आप किसी खाते की समाप्ति तिथि देख सकते हैं chage -l)।


2
... यह एक भयानक सुरक्षा दोष की तरह लगता है। क्या इसके आसपास काम करने का कोई तरीका है?
ब्लूराजा - डैनी पफ्लुगुएफ्ट

6
@ BlueRaja-DannyPflughoeft यह सुरक्षा दोष नहीं है: उपयोगकर्ताओं को उनके उपयोगकर्ता नाम से पहचाना जाता है, उनके उपयोगकर्ता नाम से नहीं। जब आप किसी खाते को हटाते हैं, तो आपको उसकी सभी फाइलें (यानी इस उपयोगकर्ता आईडी के स्वामित्व वाली सभी फाइलें, न कि केवल उपयोगकर्ता की होम डायरेक्टरी) को हटाना होगा। यह खाता हटाने की सामान्य प्रक्रिया का हिस्सा है।
गिलेस एसओ- बुराई को रोकना '

2
@OlivierDulac कि एक बैकअप कहा जाता है। वैकल्पिक रूप से, लॉक करें लेकिन जब तक आपको उसका डेटा रखने की आवश्यकता न हो, तब तक खाते को न हटाएं। आखिरकार, यदि आपको डेटा रखने की आवश्यकता है, तो खाता अभी भी आवश्यक है।
गिलेस एसओ- बुराई को रोकना '

1
अधिकांश लिनक्स वितरणों पर लॉकिंग खातों के साथ प्राप्त किया जा सकता है usermod -L -e today <username>, जो पासवर्ड को लॉक करता है और खाता आज समाप्त होने के लिए सेट करता है (आप किसी खाते की समाप्ति तिथि देख सकते हैं chage -l)।
Drav Sloan

5
यह आज के मानकों के अनुसार एक सुरक्षा दोष है। जैसा कि उदाहरण से पता चलता है, इसका मतलब है कि आप इंसानों को फाइलों से नहीं जोड़ सकते। निश्चित रूप से, मानव दृढ़ता से खातों से जुड़ा हो सकता है, लेकिन यूआईडी रीसाइक्लिंग के कारण एसोसिएशन मानव <-> खाता <-> फ़ाइल टूट जाती है। फिर, यूनिक्स के पास इस संबंध में कभी भी बड़ी सुरक्षा नहीं थी ( rootलगभग कुछ भी नकली हो सकता है)। इसके लिए आपको ऑडिट ट्रेल्स की जरूरत है।
मसलक

13

हटाए गए उपयोगकर्ता का यूआईडी नए उपयोगकर्ता द्वारा पुन: उपयोग किया गया था, और फाइलसिस्टम स्वामित्व के लिए एक यूआईडी का उपयोग करते हैं, उपयोगकर्ता नाम का नहीं।

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