जवाबों:
आपको मैन्युअल रूप से फ़ाइलों को ढूंढना होगा, जो कि संभवतया deluser
ऐसा होगा।
कृपया ध्यान दें --remove-all-files
कि ऐसा नहीं है rm -r /home/user
। उत्तरार्द्ध केवल होमेडिर को हटा देता है (जिसमें उस उपयोगकर्ता के स्वामित्व वाली फाइलें शामिल नहीं हो सकती हैं, हालांकि सामान्य नहीं हैं), पूर्व सिस्टम से उस उपयोगकर्ता के स्वामित्व वाली सभी फ़ाइलों को हटा देता है। कम से कम अगर मैनपेज पर भरोसा किया जाए ।
जीएनयू find
का एक -user
परीक्षण है, इसलिए आप find / -user xxx
उपयोगकर्ता के स्वामित्व वाली सभी फ़ाइलों को खोजने के लिए कर सकते हैं xxx
। xxx
उपयोगकर्ता नाम होगा, और (और इस मामले में कर सकते हैं करेंगे उपयोगकर्ता के रूप में अब मौजूद नहीं है, के लिए है) होना उपयोगकर्ता की अंकीय आईडी। find
एक -delete
विकल्प भी है , इसलिए
find / -user xxx -delete
यह करना चाहिए, हालांकि मैंने एक ही समय में सभी विकल्पों के साथ कमांड का परीक्षण नहीं किया है।
EDIT: न्यूमेरिक आईडी: इस कारण से मैंने आपको एक संख्यात्मक आईडी का उपयोग करने के लिए कहा है, क्योंकि जैसा कि आपने पहले ही उपयोगकर्ता /etc/passwd
को हटा दिया था , उसका प्रवेश हटा दिया गया था (यह अन्य सामान के साथ, उपयोगकर्ता आईडी, उसके उपयोगकर्ता नाम के साथ) ।
इसलिए, यदि आपने उसका होमडायर नहीं निकाला है, तो सबसे आसान तरीकों में से एक उस होमडायर के मालिक की आईडी के लिए क्वेरी करना है:
stat -c %u /home/user/
( stat
फाइलसिस्टम डेटा पढ़ने के लिए एक उपकरण है। यह -c %u
बताता है stat
कि इसका आउटपुट कैसे लिखना है, यहाँ मैं इसे यूजर आईडी बनाने के लिए कह रहा हूँ)
यदि आप एक-लाइनर पसंद करते हैं, तो आप दोनों कमांड को भी चेन कर सकते हैं:
find / -user $(stat -c %u /home/user/) -delete
(निश्चित रूप से आप इसे पहले से ही चलाना पसंद कर सकते हैं, यह -delete
सुनिश्चित करने के लिए कि आप कुछ भी नहीं रखना चाहते हैं, और किसी भी गलती को पकड़ने के लिए जो आपने बाकी कमांड को लिख कर दिया है। गलतियों को हटाते समय पुनरावर्ती ऑपरेशन करना गलत /
नहीं है। दिल का।)
rm
उपयोग करने के लिए xargs
(लेकिन यह संभवतः तर्क सीमा को मार देगा यदि बहुत अधिक परिणाम हैं), लेकिन -depth
जानकारी मैनुअल को उद्धृत करते हुए देखें: "यदि आपका` कमांड 'निर्देशिकाओं को हटाता है, तो आप पा सकते हैं कि जब आपको 'खोज' एक निर्देशिका में पुन: प्राप्त करने का प्रयास करता है, तो आपको एक त्रुटि संदेश मिलता है, जो `-डेप 'विकल्प का उपयोग करके सामान्य रूप से इस समस्या को हल करेगा।" (और बाद में एक ही खंड पर, "(` -delete 'का अर्थ है
find: 'user' is not the name of a known use
/etc/passwd
उपयोगकर्ता और उसकी आईडी को सूचीबद्ध करने में कोई मैपिंग नहीं है । आपको संख्यात्मक आईडी ढूंढनी होगी। क्या stat -c %u /home/user/
, यह आपको संख्यात्मक उपयोगकर्ता आईडी दे सकता है, जैसा कि xxx
ऊपर बताया गया है।
एक अन्य विकल्प यह होगा adduser
कि पुराने UID को निर्दिष्ट करते हुए, फिर deluser
से, इस बार --remove-all-files
ध्वज के साथ , उपयोगकर्ता को पुनः जोड़ें ।
उदाहरण के लिए, मान लीजिए कि उपयोगकर्ता के पास उपयोगकर्ता नाम alice
और UID था 1001
:
sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
gnu find के पास विकल्प -nouser और -nogroup हैं, इसे ऊपर देखें man find
। इन विकल्पों के साथ आप अपने फाइलसिस्टम (ओं) में सभी फाइलें पा सकते हैं जिनके पास / etc / passwd में कोई संगत उपयोगकर्ता नहीं है। यदि आपने अपने हटाए गए उपयोगकर्ताओं के पुराने uids के साथ एक नया उपयोगकर्ता नहीं बनाया है, तो इन अनाथ फ़ाइलों को खोजने की संभावना है।
हालाँकि, आपको अधिक फ़ाइलें मिल सकती हैं - न केवल वे जो आपके डिलीट किए गए हैं।
-exec
यदि आप अपने विलोपनों पर थोड़ा अधिक नियंत्रण चाहते हैं, तो आप कस्टम rm कमांड चलाने के लिए खोज के विकल्प का भी उपयोग कर सकते हैं , लेकिन मैंने कभी भी ऐसा प्रयास नहीं किया है ताकि YMMV हो।