मैं एक उपयोगकर्ता से संबंधित सभी फ़ाइलों को दूसरे उपयोगकर्ता में कैसे बदल सकता हूं?


34

मैं एक ऐसे लिनक्स कमांड की तलाश में हूं जो किसी दिए गए उपयोगकर्ता से संबंधित सभी फाइलों के स्वामित्व को बदल सकता है, अधिमानतः किसी लक्षित उपयोगकर्ता को, किसी अन्य निर्दिष्ट उपयोगकर्ता को।

मेरा ड्रीम कमांड कुछ इस तरह दिखेगा ...

chuser -R --olduser tom --newuser jerry

या

chuser -R --olduser 1066 --newuser 1492

यह मेरा परिदृश्य है ... मेरे पास उपयोगकर्ता और समूह में संरक्षित जानकारी के साथ एक बैकअप फ़ाइल (.tgz) है। यह Apache और MySQL चलाने वाले एक वेब सर्वर से लिया गया था। बैकअप में फ़ाइलें सिस्टम से होती हैं और कई अलग-अलग उपयोगकर्ताओं और कई सिस्टम प्रकार के खातों से फाइलें होती हैं और यह महत्वपूर्ण है कि जब नए सर्वर पर पुनर्स्थापित किया जाता है तो सेटिंग्स खो नहीं जाती हैं। समस्या यह है कि मशीन पर उपयोगकर्ताओं को बैकअप फ़ाइल में मेल नहीं खाने के लिए फ़ाइलों को पुनर्स्थापित किया जा रहा है। उदाहरण के लिए दोनों मशीनों में एक MySQL उपयोगकर्ता था, लेकिन उनके पास अलग-अलग उपयोगकर्ता आईडी हैं और कई उपयोगकर्ता आईडी हैं जो दोनों मशीनों पर मौजूद हैं जो विभिन्न उपयोगकर्ताओं से संबंधित हैं। इसका मतलब यह है कि नई मशीन पर पुरानी मशीन पर उपयोगकर्ताओं को सिंक करने का कोई तरीका नहीं है।

मैं सभी उपयोगकर्ता फ़ाइलों को इस तरह की खोज के साथ पा सकता हूं ...

find /decompressed-backup-dir -uid 1050

या

find /decompressed-backup-dir -user tom

यदि, जैसा कि मुझे संदेह है, एक एकल कमांड के साथ जो मैं चाहता हूं, वह करने का कोई तरीका नहीं है, तो शायद स्वामित्व परिवर्तन को संभालने के लिए किसी अन्य कमांड के लिए खोज कमांड के परिणामों को पाइप करने का एक तरीका है?

मैं एक PHP स्क्रिप्ट के साथ ऐसा कर सकता था, लेकिन बैकअप में 4GB और हजारों फाइलें हैं, इसलिए मैं PHP या पर्ल का उपयोग नहीं करना चाहता हूं, लेकिन मैं एक शेल स्क्रिप्ट के साथ खुश रहूंगा जो इसे संभाल सकती है।

जवाबों:


25

कुछ इस तरह

find /decompressed-backup-dir -uid 1050 -exec chown newuser:newgroup {} +

के बजाय -uid मैंनें इस्तेमाल किया -user
alexandre1985

55

मुझे लगता है कि चॉन्ड कमांड पर --फ्रेम झंडा शायद सबसे आसान तरीका है।

chown --from=oldguy newguy * -R

3
सबसे अच्छा समाधान, इसे प्यार खोजने की कोई आवश्यकता नहीं है
Tobias Hagenbeek

2
सर्वोतम उपाय
Karl Forner

1
OS X पर आप इसके साथ कर सकते हैं brew install coreutils तथा gchown
jomo

यह सही और सबसे अच्छा जवाब है।
George M

मैं पुष्टि करता हूं, इसे सर्वश्रेष्ठ उत्तर के रूप में चिह्नित किया जाना चाहिए।
Soullivaneuh

6

आप उपयोग कर सकते हैं find, के रूप में कुछ और पोस्ट, करने के लिए chown

हालाँकि, आपको ऐसा नहीं करना पड़ेगा tar आपके लिए चीजों का ध्यान रखेगा।

उदाहरण के लिए, यदि आप ए tar पर machine A जहां उपयोगकर्ता tom है uid 500 और फिर untar पर फ़ाइल machine B जहां उपयोगकर्ता tom है uid 505, tar सही काम करेगा और फाइलों को स्वामित्व में रखेगा uid 505


दिलचस्प tidbit, मैं इस बारे में पता नहीं था। तो टार न केवल यूआईडी स्टोर करता है, बल्कि यूआईडी से जुड़ा नाम भी है।
Nicholi

3
मूल टार प्रारूप केवल सांख्यिक जानकारी संग्रहीत करता है। 80 के दशक के उत्तरार्ध में POSIX द्वारा शुरू किया गया UStar प्रारूप, नाम जोड़ता है। इन दिनों आपका सामना किसी भी टार को करना सही है।
Ciclamino

5

से जोड़ना SiteKickr द्वारा उत्तर , chgrp नहीं है --from तर्क, लेकिन आप उसी के साथ हासिल कर सकते हैं chown उपयोगकर्ता को छोड़ कर।

उदाहरण:

chown -R --from=:currentgroup :newgroup /some/directory

1

उत्तर उपयोगकर्ता और समूह दोनों सेट करता है:

find /decompressed-backup-dir -uid 1050 -exec chown newuser:newgroup {} +

लेकिन अगर आप केवल उन फ़ाइलों के समूह को बदलना चाहते हैं जो कुछ उपयोगकर्ता के हैं जो आप उपयोग नहीं कर सकते हैं chown (जहाँ तक मुझे पता है), लेकिन इसके बजाय उपयोग करें chgrp:

find /decompressed-backup-dir -uid 1050 -exec chgrp newgroup {} +

और फ़ाइलों के केवल समूह को बदलने के लिए जो आपके द्वारा उपयोग किए जाने वाले कुछ समूह से संबंधित है।

find /decompressed-backup-dir -gid 400 -exec chgrp newgroup {} +

सिर्फ ज्ञान जोड़ने के लिए।


1
असल में, आप सिर्फ बाहर छोड़ सकते हैं newuser अंश। मैन पेज कहता है: "यदि बृहदान्त्र और समूह दिए गए हैं, लेकिन मालिक को छोड़ दिया गया है, केवल फ़ाइलों का समूह बदल गया है; इस मामले में, chown के रूप में एक ही कार्य करता है chgrp। "
Ben Voigt

-2

आप उपयोग कर सकते हैं chown - R /directory/file

यह आदेश निर्देशिका के सभी उदाहरणों के लिए अनुमति बदल देगा chown - R /directory

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