প্রশ্ন :আমি কিভাবে লিনাক্স পরিবেশে আমার ব্যাশ শেল স্ক্রিপ্ট এনক্রিপ্ট করব? শেল স্ক্রিপ্টে পাসওয়ার্ড রয়েছে এবং আমি চাই না যে অন্যদের এক্সিকিউট এক্সেস আছে তারা শেল স্ক্রিপ্ট দেখতে এবং পাসওয়ার্ড পেতে। আমার শেল স্ক্রিপ্ট এনক্রিপ্ট করার একটি উপায় আছে?
A: প্রথমত, একটি সেরা অনুশীলন হিসাবে আপনার শেল স্ক্রিপ্ট এনক্রিপ্ট করা উচিত নয়। আপনার শেল স্ক্রিপ্টটি সঠিকভাবে নথিভুক্ত করা উচিত যাতে যে কেউ এটি দেখেন তারা বুঝতে পারে এটি ঠিক কী করে। যদি এতে পাসওয়ার্ডের মতো সংবেদনশীল তথ্য থাকে, তাহলে শেল স্ক্রিপ্টটি এনক্রিপ্ট না করেই লেখার জন্য আপনার একটি ভিন্ন পদ্ধতি বের করা উচিত।
এটি বলা হচ্ছে, আপনি যদি এখনও একটি শেল স্ক্রিপ্ট এনক্রিপ্ট করার জন্য জোর দেন তবে আপনি নীচের ব্যাখ্যা অনুসারে 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 সোর্স কোড। এই সি সোর্স কোডটি উপরের এনক্রিপ্ট করা 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-ডিসেম্বর-2011-এর পরে কেউ random.sh.x কার্যকর করুক (আমি পরীক্ষার উদ্দেশ্যে গত বছরের তারিখ ব্যবহার করেছি)।
মেয়াদ শেষ হওয়ার তারিখ নির্দিষ্ট করতে "shc -e" বিকল্প ব্যবহার করে একটি নতুন এনক্রিপ্ট করা শেল স্ক্রিপ্ট তৈরি করুন। মেয়াদ শেষ হওয়ার তারিখটি dd/mm/yyyy বিন্যাসে উল্লেখ করা হয়েছে।
$ ./shc -e 31/12/2011 -f random.sh
এই উদাহরণে, 31-ডিসেম্বর-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 [email protected] for new version of this script" -f random.sh $ ./random.sh.x ./random.sh.x: has expired! Contact [email protected] for new version of this script
6. পুনরায় বিতরণযোগ্য এনক্রিপ্টেড শেল স্ক্রিপ্ট তৈরি করুন
-e, এবং -m (মেয়াদ শেষ হওয়ার জন্য), আপনি নিম্নলিখিত বিকল্পগুলিও ব্যবহার করতে পারেন:
- -r একটি পুনঃবন্টনযোগ্য বাইনারি তৈরি করতে নিরাপত্তা শিথিল করবে যা অন্য সিস্টেমে কার্যকর করে যা একই অপারেটিং সিস্টেম চালায় যেটি এটি কম্পাইল করা হয়েছিল।
- -T স্ট্রেস, ltrace ইত্যাদি প্রোগ্রাম ব্যবহার করে তৈরি করা বাইনারি ফাইলগুলিকে ট্রেসযোগ্য করার অনুমতি দেবে।
- -v verbose-এর জন্য
সাধারণত আপনি নীচে দেখানো হিসাবে একটি পুনরায় বিতরণযোগ্য এবং ট্র্যাকেবল শেল এনক্রিপ্ট করা শেল স্ক্রিপ্ট তৈরি করতে -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 দ্বারা তৈরি করা হয়েছিল৷