File and Directory Permissions
जीएनयू/लिनक्स के साथ, सिस्टम की सभी फाइलें एक उपयोगकर्ता और एक समूह की होती हैं। फ़ाइल का मालिक वह उपयोगकर्ता है जिसने इसे बनाया है और इस फ़ाइल का मुख्य समूह उस उपयोगकर्ता का है जिसने इसे बनाया है। उदाहरण के लिए, अन्य अध्यायों में, हमने एक उपयोगकर्ता खाते के साथ काम किया जिसे केवल उपयोगकर्ता कहा जाता है। यदि यह उपयोगकर्ता एक फ़ाइल बनाता है, तो यह पेरोट उपयोगकर्ता और पेरोट उपयोगकर्ता के डिफ़ॉल्ट समूह से संबंधित है। इस कारण से, हम अक्सर सिस्टम की फ़ाइलों और प्रोग्रामों को पढ़ने, संशोधित करने या निष्पादित करने या संबंधित फ़ाइलों की अनुमतियों में परिवर्तन करने में सक्षम होने के लिए sudo
कमांड का उपयोग करते हैं।
आइए कमांड के आउटपुट का विश्लेषण करें ls -l
┌─[root@parrot]─[/home/parrot]
└──╼ # ls -l archive.txt
-rw-rw-r-- 1 parrot hackers 0 oct 16 12:32 archive.txt
drwxr-xr-x 3 parrot hackers 4096 oct 15 16:25 scripts
कमांड का आउटपुट ls -l
इंगित करता है कि यह एक फ़ाइल (-) या निर्देशिका (D), फ़ाइल/निर्देशिका (rw-rw-r--) की अनुमति है, निम्न फ़ील्ड (संख्या इंगित करता है फ़ाइलें/निर्देशिकाएं) उपयोगकर्ता और समूह जिससे यह संबंधित है (पेरोट हैकर्स), आकार (0), अंतिम संशोधन समय (अक्टूबर 16 12:32) और नाम (file.txt और स्क्रिप्ट)। आइए फ़ील्ड की अनुमति, उपयोगकर्ता और समूह से शुरू करें। हम पहले क्षेत्र (फ़ाइल अनुमतियों) पर ध्यान केंद्रित करेंगे। लिनक्स में, उपयोगकर्ताओं और उपयोगकर्ताओं के समूहों के पास फाइलों और फ़ोल्डरों पर अनुमति प्रबंधन तीन प्रकार की अनुमति की एक साधारण योजना का उपयोग करके किया जाता है:
Read अनुमति, "r" अक्षर द्वारा दर्शाया गया है।
Write अनुमति, "w" अक्षर द्वारा दर्शाया गया है।
Execution अनुमति, "x" अक्षर द्वारा दर्शाया गया है।
फ़ाइलों और फ़ोल्डरों के लिए अनुमतियों का अर्थ अलग है। हम इनमें से प्रत्येक की व्याख्या करेंगे।
.txt फ़ाइल के मामले में, इसकी निम्नलिखित अनुमतियाँ हैं:
Owner Group Other Users
r w - r w - r - -
इसका अर्थ है कि सभी सिस्टम उपयोगकर्ताओं के पास इस फ़ाइल को पढ़ने की अनुमति है, लेकिन केवल मालिक और मालिक समूह के सदस्य ही इस फ़ाइल में संशोधन कर सकते हैं।
मान की गणना करने के लिए, हम निम्नलिखित पत्राचार के अनुसार इसके दशमलव मानों के योग को आधार बनाएंगे:
Permission | r | w | x |
---|---|---|---|
Decimal Value | 4 | 2 | 1 |
अर्थात्, पढ़ने की अनुमति के लिए दशमलव मान 4 है, लेखन अनुमति का मान 2 है और निष्पादन अनुमति का मान 1 है। संभावित मान इस प्रकार हैं:
Permission | Value |
---|---|
rwx | 7 |
rw- | 6 |
r-x | 5 |
r-- | 4 |
-wx | 3 |
-w- | 2 |
--r | 1 |
--- | 0 |
इसलिए, हम निम्नलिखित निष्कर्ष पर आते हैं:
Permission | Value |
---|---|
rwx rwx rwx | 777 |
rwx r-x r-- | 754 |
r-x r- - ----------- | 540 |
यह स्पष्ट होने के बाद, हम "chmod" का उपयोग कर सकते हैं, जो हमें फ़ाइलों और फ़ोल्डरों की अनुमतियों को प्रबंधित करने में मदद करता है।
chmod
Basic syntax of chmod:
$ chmod [mode] [permissions] [file or directory]
नीचे दिए गए उदाहरण में, हमारे पास एक स्क्रिप्ट फ़ोल्डर है जिसमें सभी स्क्रिप्ट को निष्पादन की अनुमति नहीं है।
┌─[root@parrot]─[/home/parrot]
└──╼ #ls -l scripts/
total 16
-rw-r--r-- 1 parrot hackers 932 oct 18 01:06 ddos-detect.py
-rwxr-xr-x 1 parrot hackers 235 oct 18 01:06 ping.sh
-rwxr-xr-x 1 parrot hackers 780 oct 18 01:17 wireless-dos-ids.py
-rw-r--r-- 1 parrot hackers 1587 oct 18 01:05 wireless-dos.py
जैसा कि आप ls -l scripts/
के निष्पादन में देख सकते हैं, कुछ स्क्रिप्ट में सभी सिस्टम उपयोगकर्ताओं (जो अनुशंसित नहीं है) के लिए निष्पादन अनुमतियां हैं, जबकि अन्य के पास मालिक उपयोगकर्ता के लिए भी निष्पादन अनुमति नहीं है। इस त्रुटि को ठीक करने के लिए हम निम्नलिखित लागू करते हैं:
┌─[root@parrot]─[/home/parrot]
└──╼ #chmod -R 770 scripts/
┌─[root@parrot]─[/home/parrot]
└──╼ #ls -l scripts/
total 16
-rwxrwx--- 1 parrot hackers 932 oct 18 01:06 ddos-detect.py
-rwxrwx--- 1 parrot hackers 235 oct 18 01:06 ping.sh
-rwxrwx--- 1 parrot hackers 780 oct 18 01:17 wireless-dos-ids.py
-rwxrwx--- 1 parrot hackers 1587 oct 18 01:05 wireless-dos.py
अब मालिक उपयोगकर्ता और मालिक समूह के सदस्यों ने अनुमतियों को पढ़, लिख और निष्पादित कर दिया है, जबकि सिस्टम के अन्य उपयोगकर्ताओं के पास इस फ़ाइल तक पहुंच नहीं है।
अनुमतियों को जोड़ने या हटाने का दूसरा तरीका इन मोड का उपयोग करना है:
a
--> इंगित करता है कि यह सभी पर लागू होगा
u
--> इंगित करता है कि यह उपयोगकर्ता के लिए लागू किया जाएगा
g
--> इंगित करता है कि इसे समूह पर लागू किया जाएगा
o
--> इंगित करता है कि यह दूसरों पर लागू होगा
+
--> इंगित करता है कि अनुमति जोड़ी गई है
-
--> इंगित करता है कि अनुमति हटा दी गई है
r
--> पढ़ने की अनुमति को इंगित करता है
w
--> लिखने की अनुमति को इंगित करता है
x
--> निष्पादन अनुमति को इंगित करता है
इन मोड के साथ "chmod" का उपयोग करने के लिए मूल सिंटैक्स इस प्रकार है:
chmod [a | u | g | o] [+ | -] [r | w | x]
यह किसके लिए लागू किया जाता है, अनुमतियाँ जोड़ें या निकालें, और अनुमति का प्रकार जिसे जोड़ा या हटाया जाना है।
संभावित संयोजन:
a+r
सभी को पढ़ने की अनुमति।+r
पहले की तरह, यदि कुछ भी इंगित नहीं किया जाता है, तो 'a' मान लिया जाता है।og-x
उपयोगकर्ता को छोड़कर सभी से निष्पादन अनुमति हटा देता है।u+rwx
उपयोगकर्ता को सभी अनुमतियां देता है।o-rwx
दूसरों से अनुमतियां हटाएं।
उपयोग का उदाहरण:
┌─[root@parrot]─[/home/parrot]
└──╼ #chmod -R og-x scripts/
┌─[root@parrot]─[/home/parrot]
└──╼ #ls -l scripts/
total 16
-rwxrw---- 1 parrot hackers 932 oct 18 01:06 ddos-detect.py
-rwxrw---- 1 parrot hackers 235 oct 18 01:06 ping.sh
-rwxrw---- 1 parrot hackers 780 oct 18 01:17 wireless-dos-ids.py
-rwxrw---- 1 parrot hackers 1587 oct 18 01:05 wireless-dos.py
यदि हम पिछले परिणामों का विश्लेषण करते हैं, तो हम देखते हैं कि कैसे सभी सिस्टम उपयोगकर्ताओं के लिए निष्पादन अनुमतियां समाप्त कर दी गई हैं, मालिक उपयोगकर्ता को छोड़कर, मालिक समूह के सदस्यों सहित, जो पढ़ने, लिखने और निष्पादित अनुमतियों को संरक्षित करता है।
chown
chown (चेंज ओनर) एक अन्य सिस्टम उपयोगिता है जो हमें फाइलों के ओनरशिप में परिवर्तन करने की अनुमति देती है, यह "chmod" जैसा दिखता है, लेकिन यह जो कार्य करता है वह अलग है। जैसा कि नाम का तात्पर्य है, इसका उपयोग किसी फ़ाइल या फ़ोल्डर के मालिक को बदलने के लिए किया जाता है।
इसका मूल सिंटैक्स इस प्रकार है:
$ chown [options] [owner]: [group (optional)] [files or directories]
Chown options:
-R
--> इसकी सभी सामग्री के साथ निर्देशिकाओं के मालिक को पुनरावर्ती रूप से बदलता है।
-v or --verbose
--> अधिक वर्णनात्मक आउटपुट दिखाने के लिए उपयोग किया जाता है।
--version
--> कार्यक्रम की संस्करण संख्या देखें।
-dereference
--> गंतव्य के बजाय प्रतीकात्मक लिंक पर कार्य करता है।
-h or --no-deference
--> प्रतीकात्मक लिंक के मामले में, लिंक के बजाय गंतव्य के मालिक को बदलें।
--reference
--> किसी फ़ाइल के मालिक को संदर्भ के रूप में दूसरे के मालिक को बदलता है।
उपयोग के उदाहरण:
┌─[root@parrot]─[/home/parrot]
└──╼ #ls -l scripts/
total 16
-rwxrw---- 1 parrot parrot 932 oct 18 01:06 ddos-detect.py
-rwxrw---- 1 parrot parrot 235 oct 18 01:06 ping.sh
-rwxrw---- 1 parrot parrot 780 oct 18 01:17 wireless-dos-ids.py
-rwxrw---- 1 parrot parrot 1587 oct 18 01:05 wireless-dos.py
┌─[root@parrot]─[/home/parrot]
└──╼ #chown -R root:root scripts/
┌─[root@parrot]─[/home/parrot]
└──╼ #ls -l scripts/
total 16
-rwxrw---- 1 root root 932 oct 18 01:06 ddos-detect.py
-rwxrw---- 1 root root 235 oct 18 01:06 ping.sh
-rwxrw---- 1 root root 780 oct 18 01:17 wireless-dos-ids.py
-rwxrw---- 1 root root 1587 oct 18 01:05 wireless-dos.py
पिछले उदाहरण में, हम देख सकते हैं कि स्क्रिप्ट निर्देशिका में मौजूद सभी फ़ाइलों के उपयोगकर्ता और समूह मालिक कैसे बदल गए हैं। आइए एक उदाहरण देखें जहां हम केवल मालिक के उपयोग को बदलने जा रहे हैं।
┌─[root@parrot]─[/home/parrot]
└──╼ #ls -l scripts/
total 16
-rwxrw---- 1 root root 932 oct 18 01:06 ddos-detect.py
-rwxrw---- 1 root root 235 oct 18 01:06 ping.sh
-rwxrw---- 1 root root 780 oct 18 01:17 wireless-dos-ids.py
-rwxrw---- 1 root root 1587 oct 18 01:05 wireless-dos.py
┌─[root@parrot]─[/home/parrot]
└──╼ #chown -R parrot scripts/
┌─[root@parrot]─[/home/parrot]
└──╼ #ls -l scripts/
total 16
-rwxrw---- 1 parrot root 932 oct 18 01:06 ddos-detect.py
-rwxrw---- 1 parrot root 235 oct 18 01:06 ping.sh
-rwxrw---- 1 parrot root 780 oct 18 01:17 wireless-dos-ids.py
-rwxrw---- 1 parrot root 1587 oct 18 01:05 wireless-dos.py
आप देख सकते हैं कि कैसे स्क्रिप्ट निर्देशिका में सभी फाइलों का मालिक उपयोगकर्ता पेरोट में बदल गया।
chgrp
chgrp कमांड का उपयोग उस समूह को बदलने के लिए किया जाता है जिससे कोई फ़ाइल या निर्देशिका संबंधित है। इसका मूल सिंटैक्स निम्नलिखित है:
$ chgrp [options] [file (s)] or [directory (s)]
Options
-R
-> उस समूह को पुनरावर्ती रूप से बदलता है जिसमें निर्देशिकाएं उनकी सभी सामग्री के साथ एक साथ होती हैं।
-v (or --verbose)
-> अधिक वर्णनात्मक आउटपुट दिखाने के लिए उपयोग किया जाता है।
--version
-> कार्यक्रम की संस्करण संख्या देखें।
--dereference
-> गंतव्य के बजाय प्रतीकात्मक लिंक पर कार्य करता है।
-h (or --no-dereference)
-> प्रतीकात्मक लिंक के मामले में, लिंक के बजाय गंतव्य समूह को ही बदलें।
--reference
-> किसी फ़ाइल के समूह को संदर्भ के रूप में दूसरे के मालिक के रूप में बदलें।
वे व्यावहारिक रूप से एक ही "chown" विकल्प हैं, इस अंतर के साथ कि "chgrp" केवल उस समूह को बदलता है जो उपयोगकर्ता स्वामी को रखते हुए फ़ाइलों और / या निर्देशिकाओं का मालिक है।
chgrp के उपयोग का उदाहरण:
┌─[root@parrot]─[/home/parrot]
└──╼ #ls -l scripts/
total 16
-rwxrw---- 1 parrot parrot 932 oct 18 01:06 ddos-detect.py
-rwxrw---- 1 parrot parrot 235 oct 18 01:06 ping.sh
-rwxrw---- 1 parrot parrot 780 oct 18 01:17 wireless-dos-ids.py
-rwxrw---- 1 parrot parrot 1587 oct 18 01:05 wireless-dos.py
┌─[root@parrot]─[/home/parrot]
└──╼ #chown -R root:root scripts/
┌─[root@parrot]─[/home/parrot]
└──╼ #ls -l scripts/
total 16
-rwxrw---- 1 root root 932 oct 18 01:06 ddos-detect.py
-rwxrw---- 1 root root 235 oct 18 01:06 ping.sh
-rwxrw---- 1 root root 780 oct 18 01:17 wireless-dos-ids.py
-rwxrw---- 1 root root 1587 oct 18 01:05 wireless-dos.py
इस उदाहरण में, हम देख सकते हैं कि स्क्रिप्ट निर्देशिका में मौजूद सभी फ़ाइलों के उपयोगकर्ता और समूह का मालिक कैसे बदल गए हैं। आइए एक उदाहरण देखें जहां हम केवल मालिक उपयोगकर्ता को बदलने जा रहे हैं।
┌─[root@parrot]─[/home/parrot]
└──╼ #ls -l scripts/
total 16
-rwxrw---- 1 root root 932 oct 18 01:06 ddos-detect.py
-rwxrw---- 1 root root 235 oct 18 01:06 ping.sh
-rwxrw---- 1 root root 780 oct 18 01:17 wireless-dos-ids.py
-rwxrw---- 1 root root 1587 oct 18 01:05 wireless-dos.py
┌─[root@parrot]─[/home/parrot]
└──╼ #chown -R parrot scripts/
┌─[root@parrot]─[/home/parrot]
└──╼ #ls -l scripts/
total 16
-rwxrw---- 1 parrot root 932 oct 18 01:06 ddos-detect.py
-rwxrw---- 1 parrot root 235 oct 18 01:06 ping.sh
-rwxrw---- 1 parrot root 780 oct 18 01:17 wireless-dos-ids.py
-rwxrw---- 1 parrot root 1587 oct 18 01:05 wireless-dos.py
आप देख सकते हैं कि जिस समूह के पास Wireless-dos-ids.py और Wireless-dos.py फाइलों का मालिक है, वह रूट से तोता उपयोगकर्ता में कैसे बदल गया।