फ़ाइल की स्वामी अनुमतियों को समूह की अनुमतियों की प्रतिलिपि बनाएँ


25

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

उदाहरण के लिए यदि अनुमतियां 755 हैं तो मैं चाहता हूं कि वे 775 हो जाएं।

स्पष्टीकरण: 755 -> 775 123 -> 113 एबीसी -> एएसी

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

(अर्थात, प्रत्येक फ़ाइल के लिए उल्लू की अनुमतियाँ समूह की अनुमतियों में कॉपी की जाती हैं। प्रत्येक फ़ाइल की अलग-अलग अनुमतियां हो सकती हैं।)


मुझे समझ में नहीं आ रहा है। आप मालिक की तरह समूह की अनुमति के लिए निर्देशिका / फ़ाइलों पर अनुमति बदलना चाहते हैं? यदि ऐसा है, तो बस chmod के साथ चारों ओर खेलते हैं। यदि आप चाहें तो मैं आपको अपने उत्तर में अधिक स्पष्ट छूट दिखा सकता हूं।
अनरको_इज़ाउन्ट्स

आपके जवाब में यह 775 होने के लिए सभी फाइलों को बदल देता है। क्या होगा यदि मूल रूप से फाइल में से एक की अनुमति 123 है? फिर इसे 113 में बदल दिया जाना चाहिए न कि 775 पर। प्रश्न (755) में मैंने जो अनुमति दी है वह केवल एक उदाहरण है, वास्तविक अनुमति कुछ भी हो सकती है। मैं इसे प्रोग्रामिक रूप से करना चाहता हूं।
अन्नान

चामोद के बाद की संख्या केवल संख्यात्मक अनुमति है। यदि आप एक ls -l करते हैं और आपको अनुमति के रूप में 452 मिलते हैं, तो बस 442 / you_directory / chmod करने के लिए। मेरे उत्तर से जुड़े विकिपीडिया पृष्ठ में सब कुछ (बहुत अच्छी तरह से) समझाया गया है।
अनार्को_निजॉर्स

इस सवाल का डुप्लिकेट हो गया लगता है serverfault.com/questions/241082/...
जूते का फीता

जवाबों:


54

आप g=uउपयोगकर्ता की अनुमति के अनुसार समूह के परमिट बनाने के लिए उपयोग कर सकते हैं

ls -l file
-rw------- 1 user users 0 Jun 27 13:47 file

chmod g=u file

ls -l file
-rw-rw---- 1 user users 0 Jun 27 13:47 file

और फिर से

chmod -R g=u *

या कुछ फिल्स्पेक के लिए

find /patch/to/change/perms -name '*.txt' -exec chmod g=u {} +

chmod मैनपेज अपने दोस्त है।


यह करने के लिए अच्छा तरीका है! मैं हर बार xD
Anarko_Bizounours

इस ट्रिक के बारे में कभी नहीं सुना! उपयोगी एक।
स्किनप जू

उस g=uचाल ने मुझे केवल थकाऊ प्रबंधन के घंटे बचाए। वहाँ एक ;-)
एडर्न पास्कल

मेरे पास मेरे उपयोगकर्ता द्वारा स्वामित्व वाली फ़ाइलों का एक गुच्छा था जिसे मैं सभी उपयोगकर्ताओं के साथ साझा करना चाहता था। इसलिए मैंने कियाchmod -R ag=u ${path_to_directory}
ट्रेवर बॉयड स्मिथ

2

जैसा कि लोगों ने कहा है, फ़ाइल अनुमतियां बदलना खतरनाक हो सकता है। बड़ी ताकत के साथ बड़ी जिम्मेदारी आती है, और वह सब कुछ। यह मेरा जवाब है:

फ़ाइल / usr / बिन / ओटोग:

#!/bin/sh

f=$1
p=`stat -c "%a" $f`
chmod ${p:0:1}${p:0:1}${p:2:1} $f

उदाहरण का उपयोग:

find . -exec otog {} \;

संख्यात्मक अनुमतियाँ प्राप्त करने के लिए स्टेट का उपयोग करता है , अनुमतियों को बदलने के लिए chmod का उपयोग करता है ।

पुनश्च: कृपया इसे करने के बेहतर तरीके के लिए इयान का जवाब देखें!


1
क्या यह $ {p: 0: 1} $ {p: 0: 1} $ {p: 2: 1} नहीं होना चाहिए?
मनिएव

हाँ, आपका अधिकार। इसने अजीब तरह से मेरे काम किया।
अन्नान २

कोई कृपया नीचे की व्याख्या करें?
अन्नान

मुझे नहीं, लेकिन मैं क्षतिपूर्ति करना चाहूंगा। यह एक अच्छा उपाय है जो काम करता है।
मिनाएव

1
मैं कहता हूं कि स्क्रिप्ट्स में खतरनाक कमांड्स को मैन्युअल रूप से इस्तेमाल करना ज्यादा सुरक्षित है। अच्छी तरह से परीक्षण की गई स्क्रिप्ट में, वह है :)। दूसरी ओर, chmodवास्तव में, वास्तव में खतरनाक कमांड होने से बहुत दूर है। की तुलना में rm, मेरा मतलब है, rsync --deleteया कुछ अन्य।
मिनाएव

1

सबसे पहले, आपको अपना अधिकार सूचीबद्ध करने की आवश्यकता है।

ls -l /your_directory/
-rwxr-xr-x  1   57 Jul  3 10:13  file1
-rwxr-xr-x  1   57 Jul  3 10:13  file2

परिणाम को संख्यात्मक अनुमति में अनुवाद करने के लिए इसका उपयोग करें: R = 4, W = 2, X = 1।

तो इस 2 फाइल पर अनुमति 755 है।

अपना अधिकार प्राप्त करने के बाद, आपको अपने इच्छित तरीके को बदलने के लिए chmod कमांड का उपयोग करना चाहिए:

chmod 775 /your_directory/

यह कमांड केवल डायरेक्ट्री पर राइट बदलेगी, लेकिन अंदर फाइल पर नहीं।

अगर आप अपने अंदर के अधिकार को बदलना चाहते हैं, तो इस कमांड को करें:

chmod 775 /your_directory/ -fR

-FR पुनरावृत्ति के लिए मजबूर करेगा। (इसका उपयोग केवल तभी करें जब आप उस अधिकार के बारे में सुनिश्चित हों जिसे आप लागू करना चाहते हैं, और निर्देशिका के अंदर फ़ाइल।)

यदि आप केवल फ़ाइल 1 पर अधिकार बदलना चाहते हैं तो:

chmod 775 /your_directory/file1

और जिस तरह से कुकीज़ उखड़ जाती हैं!

/! \ Carefull रहें, इस आदेश का दुरुपयोग आपके सभी OS अनुमतियों को नष्ट कर सकता है और इसकी खराबी को जन्म दे सकता है। /! \

ps: चामोद के बारे में अधिक जानकारी प्राप्त करने के लिए वहाँ देखें।

आशा है कि यह आपकी मदद करेगा।


मैंने प्रश्न में कुछ स्पष्टीकरण जोड़ा है। फ़ाइलों में समान स्वामी अनुमतियाँ नहीं हो सकती हैं, इसलिए यदि chmod का उपयोग किया जाना है तो chmod पर जाने से पहले स्वामी की अनुमतियाँ निकालने का एक तरीका होना चाहिए?
अन्नान

यह मुश्किल है, लेकिन ls -l कमांड को आपको अनुमति देनी चाहिए, लेकिन यह इस फॉर्म में होगा -rw-rw-r--। समस्या यह है कि आप एक स्क्रिप्ट का उपयोग नहीं करने के लिए काम करना चाहिए! आपको पहले फ़ाइल से सभी अनुमति लेनी होगी। फिर समूह के लिए अच्छा अधिकार रखने के लिए चामोद। मैं अपना उत्तर एक उदाहरण दिखाने के लिए संपादित करूँगा।
अनारकली_निजॉर्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.