क्या मैं किसी विशिष्ट उपयोगकर्ता की सभी फ़ाइलों के स्वामित्व को बदल सकता हूँ?


9

क्या किसी उपयोगकर्ता के स्वामित्व वाली सभी फ़ाइलों को पुन: प्राप्त करने और उन्हें अन्य उपयोगकर्ता / समूह में बदलने का एक तरीका है Gnu / Linux?

मुझे लगता है कि वहाँ कुछ जादू एक लाइनर होना चाहिए, लेकिन मेरी कमांड लाइन विज़ार्डरी कौशल उस पर निर्भर नहीं हैं :)

धन्यवाद!

जवाबों:


14

विकल्प के findसाथ कमांड का उपयोग करें -user। कुछ इस तरह:

find / -user john

अंततः उपयोगकर्ता "जॉन" के स्वामित्व वाली सभी फाइलों को चालू कर देगा।

यदि आप अपना स्वामित्व बदलना चाहते हैं (मैं findयह सुनिश्चित करने के बिना निष्पादन को चलाऊंगा कि आपके पास वह सूची है जो आप चाहते हैं), तो कुछ इस तरह:

find / -user john -exec chown harry {} \;

करूंगा।


1
मैं आमतौर पर यूआईडी का उपयोग करता हूं और chown harry:harryअगर मुझे यह सुनिश्चित करने की आवश्यकता है कि समूह सदस्यता सही है, तो भी चलाएं । लेकिन यह यहां के आवेदन पर बहुत अधिक निर्भर करता है।
इविविट

जब तक मैं यूआईडी का उपयोग नहीं करता, यह वास्तव में मेरे लिए काम नहीं करेगा। UID को / etc / passwd में पाया जा सकता है
user222054

7

यह देर हो चुकी है, लेकिन आज मैं इस सवाल पर अड़ गया हूं क्योंकि मेरे rsyncपास --usermapविकल्प नहीं है ।

My chown(v। Chown (GNU coreutils) 8.13) एक अंतर्निहित पुनर्खरीद ( -R) और एक --fromविकल्प प्रदान करता है ताकि आपकी (और मेरी) समस्या का भी उपयोग करके हल किया जा सके।

chown -R --from=john harry /


अधिक विशेष रूप से मैं OpenSuse से डेबियन के लिए एक सर्वर माइग्रेट कर रहा हूं, और Apache2 का उपयोगकर्ता और समूह वितरण के बीच भिन्न होता है। OpenSuse में अपने उपयोगकर्ता wwwrun (id:30)और समूह www (id:8), www-data (id: 33)दोनों के लिए डेबियन में । मैं फ़ाइलों का उपयोग करने के बाद की नकल की

rsync -az /path/to/files me@debian:/path/to/

मैंनें इस्तेमाल किया

chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/

लक्ष्य (डेबियन) मशीन पर।


नोट: rsync version 3.1.0 protocol version 31उपर्युक्त उल्लेख किया गया है --usermapतो अगर मुझे लगता है कि मैं स्रोत मशीन पर एक कमांड के साथ सभी तीन चरण कर सकता था:

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/

मैं इस एक को पसंद करता हूं, खासकर समूह को बदलने के विकल्प के लिए। एक find -execमेरे लिए एक लाइनर बस मैन्युअल रूप से काम करने से पहले, एक अंतिम उपाय है। (इसके अलावा, मुझे लेखन से नफरत है {} \;, लेकिन यह व्यक्तिगत है)
टॉमाज़ गैंडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.