Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

Linux पर बैश स्क्रिप्ट सुरक्षित करें: SHC के साथ संवेदनशील डेटा एन्क्रिप्ट करें

प्रश्न: मैं Linux वातावरण में अपने बैश शेल स्क्रिप्ट को कैसे एन्क्रिप्ट करूं? शेल स्क्रिप्ट में पासवर्ड है, और मैं नहीं चाहता कि जिनके पास एक्जीक्यूट एक्सेस है वे शेल स्क्रिप्ट देखें और पासवर्ड प्राप्त करें। क्या मेरे शेल स्क्रिप्ट को एन्क्रिप्ट करने का कोई तरीका है?

उत्तर: पहली बात, सर्वोत्तम अभ्यास के रूप में आपको अपने शेल स्क्रिप्ट को एन्क्रिप्ट नहीं करना चाहिए। आपको वास्तव में अपने शेल स्क्रिप्ट को ठीक से दस्तावेज करना चाहिए ताकि जो कोई भी इसे देखे वह ठीक से समझे कि यह क्या करता है। यदि इसमें पासवर्ड जैसी संवेदनशील जानकारी है, तो आपको शेल स्क्रिप्ट को एन्क्रिप्ट किए बिना लिखने का एक अलग दृष्टिकोण निकालना चाहिए।

कहा जा रहा है, यदि आप अभी भी शेल स्क्रिप्ट को एन्क्रिप्ट करने पर जोर देते हैं, तो आप नीचे बताए अनुसार SHC यूटिलिटी का उपयोग कर सकते हैं। कृपया ध्यान दें कि shc द्वारा बनाया गया एन्क्रिप्टेड शेल स्क्रिप्ट सामान्य उपयोगकर्ताओं द्वारा पठनीय नहीं है। हालांकि कोई व्यक्ति जो समझता है कि यह कैसे काम करता है, वह shc द्वारा बनाए गए एन्क्रिप्टेड बाइनरी से मूल शेल स्क्रिप्ट निकाल सकता है।

SHC का मतलब शेल स्क्रिप्ट कंपाइलर है।

1. shc डाउनलोड करें और इंस्टॉल करें

नीचे दिखाए अनुसार shc डाउनलोड करें और इंस्टॉल करें।

# wget https://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz # tar xvfz shc-3.8.7.tgz # cd shc-3.8.7 # make

सत्यापित करें कि shc ठीक से इंस्टॉल हो गया है।

$ ./shc -v shc parse(-f): No source file specified shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script

2. एक नमूना शेल स्क्रिप्ट बनाएं

एक नमूना बैश शेल स्क्रिप्ट बनाएं जिसे आप परीक्षण उद्देश्य के लिए shc का उपयोग करके एन्क्रिप्ट करना चाहते हैं।

परीक्षण उद्देश्य के लिए, आइए निम्नलिखित random.sh शेल स्क्रिप्ट बनाएं जो रैंडम नंबर उत्पन्न करती है। आपको यह निर्दिष्ट करना होगा कि आप कितने रैंडम नंबर उत्पन्न करना चाहते हैं।

$ vi random.sh #!/bin/bash echo -n "How many random numbers do you want to generate? " read max for (( start = 1; start <= $max; start++ )) do echo -e $RANDOM done $ ./random.sh How many random numbers do you want to generate? 3 24682 1678 491 

3. shc का उपयोग करके शेल स्क्रिप्ट एन्क्रिप्ट करें

नीचे दिखाए अनुसार shc का उपयोग करके random.sh शेल स्क्रिप्टिंग को एन्क्रिप्ट करें।

$ ./shc -f random.sh

यह निम्नलिखित दो फ़ाइलें बनाएगा:

$ ls -l random.sh* -rwxrw-r--. 1 ramesh ramesh 149 Mar 27 01:09 random.sh -rwx-wx--x. 1 ramesh ramesh 11752 Mar 27 01:12 random.sh.x -rw-rw-r--. 1 ramesh ramesh 10174 Mar 27 01:12 random.sh.x.c
  • random.sh मूल अनएन्क्रिप्टेड शेल स्क्रिप्ट है
  • random.sh.x बाइनरी फॉर्मेट में एन्क्रिप्टेड शेल स्क्रिप्ट है
  • random.sh.x.c random.sh फ़ाइल का C सोर्स कोड है। यह C सोर्स कोड ऊपर दिए गए एन्क्रिप्टेड random.sh.x फ़ाइल बनाने के लिए संकलित है। shc के पीछे पूरा तर्क random.sh शेल स्क्रिप्ट को random.sh.x.c C प्रोग्राम में बदलना है (और निश्चित रूप से इसे संकलित करके random.sh.x एक्जीक्यूटेबल उत्पन्न करना)
$ file random.sh random.sh: Bourne-Again shell script text executable $ file random.sh.x random.sh.x: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped $ file random.sh.x.c random.sh.x.c: ASCII C program text

4. एन्क्रिप्टेड शेल स्क्रिप्ट निष्पादित करें

अब, आइए एन्क्रिप्टेड शेल स्क्रिप्ट को निष्पादित करें ताकि यह सुनिश्चित हो सके कि यह अपेक्षा के अनुरूप काम करता है।

$ ./random.sh.x How many random numbers do you want to generate? 3 7489 10494 29627

कृपया ध्यान दें कि बाइनरी अभी भी शेल पर निर्भर है (random.sh में प्रदान की गई पहली लाइन। यानी /bin/bash) निष्पादित करने के लिए स्क्रिप्ट के लिए उपलब्ध होना चाहिए।

5. अपने शेल स्क्रिप्ट के लिए समाप्ति तिथि निर्दिष्ट करना

shc का उपयोग करके आप एक समाप्ति तिथि भी निर्दिष्ट कर सकते हैं। यानी इस समाप्ति तिथि के बाद जब कोई शेल स्क्रिप्ट को निष्पादित करने का प्रयास करता है, तो उन्हें एक त्रुटि संदेश मिलेगा।

मान लें कि आप नहीं चाहते कि कोई 31-Dec-2011 के बाद random.sh.x को निष्पादित करे (मैंने परीक्षण उद्देश्य के लिए पिछले साल की तारीख का उपयोग किया)।

"shc -e" विकल्प का उपयोग करके समाप्ति तिथि निर्दिष्ट करने के लिए एक नया एन्क्रिप्टेड शेल स्क्रिप्ट बनाएं। समाप्ति तिथि dd/mm/yyyy फॉर्मेट में निर्दिष्ट की जाती है।

$ ./shc -e 31/12/2011 -f random.sh

इस उदाहरण में, यदि कोई 31-Dec-2011 के बाद random.sh.x को निष्पादित करने का प्रयास करता है, तो उन्हें नीचे दिखाए अनुसार डिफ़ॉल्ट समाप्ति संदेश मिलेगा।

$ ./random.sh.x ./random.sh.x: has expired! Please contact your provider

यदि आप अपना स्वयं का कस्टम समाप्ति संदेश निर्दिष्ट करना चाहते हैं, तो -m विकल्प का उपयोग करें (नीचे दिखाए अनुसार -e विकल्प के साथ)।

$ ./shc -e 31/12/2011 -m "Contact admin@thegeekstuff.com for new version of this script" -f random.sh $ ./random.sh.x ./random.sh.x: has expired! Contact admin@thegeekstuff.com for new version of this script

6. पुनर्वितरण योग्य एन्क्रिप्टेड शेल स्क्रिप्ट बनाएं

-e, और -m (समाप्ति के लिए) के अलावा, आप निम्नलिखित विकल्पों का भी उपयोग कर सकते हैं:

  • -r सुरक्षा को आराम देगा ताकि एक पुनर्वितरण योग्य बाइनरी बनाया जा सके जो उसी ऑपरेटिंग सिस्टम पर चलने वाले अन्य सिस्टम पर निष्पादित हो सके जिस पर इसे संकलित किया गया था।
  • -T बनाए गए बाइनरी फ़ाइलों को strace, ltrace, आदि जैसे प्रोग्राम का उपयोग करके ट्रेस करने योग्य बनाएगा।
  • -v वर्बोज़ के लिए है

आमतौर पर आप पुनर्वितरण योग्य और ट्रेस करने योग्य शेल एन्क्रिप्टेड शेल स्क्रिप्ट बनाने के लिए -r और -T दोनों विकल्पों का उपयोग करना चाहेंगे जैसा कि नीचे दिखाया गया है।

$ ./shc -v -r -T -f random.sh shc shll=bash shc [-i]=-c shc [-x]=exec '%s' "$@" shc [-l]= shc opts= shc: cc random.sh.x.c -o random.sh.x shc: strip random.sh.x shc: chmod go-r random.sh.x $ ./random.sh.x How many random numbers do you want to generate? 3 28954 1410 15234

अंत में, यह दोहराने लायक है: आपको पहली जगह में अपने शेल स्क्रिप्ट को एन्क्रिप्ट नहीं करना चाहिए। लेकिन, यदि आपने shc का उपयोग करके अपने शेल स्क्रिप्ट को एन्क्रिप्ट करने का फैसला किया है, तो कृपया याद रखें कि एक स्मार्ट व्यक्ति अभी भी shc द्वारा बनाए गए एन्क्रिप्टेड बाइनरी से मूल शेल स्क्रिप्ट उत्पन्न कर सकता है।

  1. WSL के साथ Windows 10 पर Bash इंस्टॉल और उपयोग करें - चरण-दर-चरण ट्यूटोरियल WSL के साथ Windows 10 पर Bash इंस्टॉल और उपयोग करें - चरण-दर-चरण ट्यूटोरियल

    यहां बताया गया है कि Windows पर Linux शेल को कैसे सेट अप और उपयोग करें – Windows Subsystem for Linux (WSL) का उपयोग करके। यह ट्यूटोरियल 2020 के बाद से Windows 10 के अप-टू-डेट संस्करणों के लिए अभिप्रेत है। मैं Windows 10 के पुराने संस्करणों या Windows 8/7/XP/3.1 के लिए अन्य विधियों पर WSL का उपयोग कै

  1. Windows 10 पर Linux Bash Shell इंस्टॉल करें: पूर्ण चरण-दर-चरण गाइड Windows 10 पर Linux Bash Shell इंस्टॉल करें: पूर्ण चरण-दर-चरण गाइड

    Bash Shell एक कमांड-लाइन यूटिलिटी है जो बहुत लंबे समय से Linux का हिस्सा रही है और अब Microsoft ने इसे सीधे Windows 10 में जोड़ दिया है। यह न तो एक वर्चुअल मशीन है, न कोई कंटेनर और न ही Windows के लिए कम्पाइल किया गया कोई सॉफ्टवेयर। बल्कि यह Linux सॉफ्टवेयर चलाने के लिए एक पूर्ण Windows सबसिस्टम है,

  1. Linux Bash प्रॉम्प्ट को बेहतर बनाने के लिए 10 व्यावसायिक PS1 अनुकूलन Linux Bash प्रॉम्प्ट को बेहतर बनाने के लिए 10 व्यावसायिक PS1 अनुकूलन

    पिछले लेख में, हमने Linux पर्यावरण वेरिएबल्स PS[1-4] और PROMPT_COMMAND पर चर्चा की थी। यदि प्रभावी ढंग से उपयोग किया जाए, तो PS1 कमांड प्रॉम्प्ट पर मूल्यवान जानकारी प्रदान कर सकता है। टॉम्ब रेडर में, एंजेलिना जोली के पास रहस्य को शैली में सुलझाने के लिए उसकी उंगलियों पर सभी गैजेट्स और हथियार हैं। जब